Skip to content

Commit 9e5e39a

Browse files
macfarlaclaude
andauthored
Log block number/hash on receipts root mismatch for debugging (#10071)
When GetSyncReceiptsFromPeerTask returns RESULTS_DO_NOT_MATCH_QUERY, log the block number, hash, expected receiptsRoot, and calculated receiptsRoot at DEBUG level so the failing blocks can be identified without enabling TRACE logging. Signed-off-by: Sally MacFarlane <macfarla.github@gmail.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 09dcb17 commit 9e5e39a

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/peertask/task/GetSyncReceiptsFromPeerTask.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,11 @@
4848
import com.google.common.annotations.VisibleForTesting;
4949
import org.apache.tuweni.bytes.Bytes;
5050
import org.jspecify.annotations.Nullable;
51+
import org.slf4j.Logger;
52+
import org.slf4j.LoggerFactory;
5153

5254
public class GetSyncReceiptsFromPeerTask implements PeerTask<GetSyncReceiptsFromPeerTask.Response> {
55+
private static final Logger LOG = LoggerFactory.getLogger(GetSyncReceiptsFromPeerTask.class);
5356
private final Request request;
5457
protected final ProtocolSchedule protocolSchedule;
5558
private final List<BlockHeader> requestedHeaders;
@@ -276,7 +279,16 @@ private boolean receiptsRootMatches(
276279
})
277280
.toList());
278281

279-
return calculatedReceiptsRoot.equals(blockHeader.getReceiptsRoot());
282+
final boolean matches = calculatedReceiptsRoot.equals(blockHeader.getReceiptsRoot());
283+
if (!matches) {
284+
LOG.debug(
285+
"Receipts root mismatch for block {} ({}): expected={} calculated={}",
286+
blockHeader.getNumber(),
287+
blockHeader.getHash(),
288+
blockHeader.getReceiptsRoot(),
289+
calculatedReceiptsRoot);
290+
}
291+
return matches;
280292
}
281293

282294
@VisibleForTesting

0 commit comments

Comments
 (0)