mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-04-01 15:45:55 +00:00
This PR changes the blsync checkpoint init logic so that even if the initialization fails with a certain server and an error log message is printed, the server goes back to its initial state and is allowed to retry initialization after the failure delay period. The previous logic had an `ssDone` server state that did put the server in a permanently unusable state once the checkpoint init failed for an apparently permanent reason. This was not the correct behavior because different servers behave differently in case of overload and sometimes the response to a permanently missing item is not clearly distinguishable from an overload response. A safer logic is to never assume anything to be permanent and always give a chance to retry. The failure delay formula is also fixed; now it is properly capped at `maxFailureDelay`. The previous formula did allow the delay to grow unlimited if a retry was attempted immediately after each delay period. |
||
|---|---|---|
| .. | ||
| head_sync.go | ||
| head_sync_test.go | ||
| test_helpers.go | ||
| types.go | ||
| update_sync.go | ||
| update_sync_test.go | ||