diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index d56f28a1f..1d92f2df0 100644 --- a/CHANGELOG_PENDING.md +++ b/CHANGELOG_PENDING.md @@ -40,4 +40,6 @@ Friendly reminder, we have a [bug bounty program](https://hackerone.com/tendermi - [statesync] \#5311 Fix validator set off-by-one causing consensus failures (@erikgrinaker) +- [statesync] \#5320 Broadcast snapshot request to all pre-connected peers on start (@erikgrinaker) + - [light] [\#5307](https://github.com/tendermint/tendermint/pull/5307) Persist correct proposer priority in light client validator sets (@cmwaters) diff --git a/statesync/reactor.go b/statesync/reactor.go index dec60c2c9..8536583ab 100644 --- a/statesync/reactor.go +++ b/statesync/reactor.go @@ -254,6 +254,10 @@ func (r *Reactor) Sync(stateProvider StateProvider) (sm.State, *types.Commit, er r.syncer = newSyncer(r.Logger, r.conn, r.connQuery, stateProvider, r.tempDir) r.mtx.Unlock() + // Request snapshots from all currently connected peers + r.Logger.Debug("Requesting snapshots from known peers") + r.Switch.Broadcast(SnapshotChannel, mustEncodeMsg(&ssproto.SnapshotsRequest{})) + state, commit, err := r.syncer.SyncAny(defaultDiscoveryTime) r.mtx.Lock() r.syncer = nil