diff --git a/.changeset/stop_relaying_sidechain_headers_after_sync.md b/.changeset/stop_relaying_sidechain_headers_after_sync.md new file mode 100644 index 0000000..a470ac1 --- /dev/null +++ b/.changeset/stop_relaying_sidechain_headers_after_sync.md @@ -0,0 +1,5 @@ +--- +default: patch +--- + +# Fixed excessive "peer relayed a v2 header with unknown parent" log spam by only relaying headers after sync when the synced blocks became the new tip. diff --git a/syncer/syncer.go b/syncer/syncer.go index 132f1dc..6b9c8d3 100644 --- a/syncer/syncer.go +++ b/syncer/syncer.go @@ -717,11 +717,11 @@ func (s *Syncer) syncLoop(ctx context.Context) error { if err := s.parallelSync(ctx, r.cs, r.headers); err != nil { s.log.Debug("sync failed", zap.Stringer("peer", r.peer), zap.Error(err)) } else if r.remaining == 0 { - // peer sent all their headers; mark as synced to avoid - // re-downloading the same blocks over and over again + // peer sent all their headers; mark them as synced and + // relay their tip r.peer.setSynced(true) + go s.relayV2Header(r.headers[len(r.headers)-1], r.peer) } - go s.relayV2Header(r.headers[len(r.headers)-1], r.peer) } } }