Loading…
Loading…
Postmortems / PM-2026-10-10-06
linea_getBlockTracesCountersV2 returns INTERNAL_ERROR on the public RPCrpc-server-errors budgetBlameless postmortem (interim: cause not found). Incident record: incident-log.md INC-2026-10-10-06. Times UTC.
Since the T1 drill restarted the public RPC node (l2-node-besu), some calls to linea_getBlockTracesCountersV2 fail with INTERNAL_ERROR. The coordinator uses this call to count trace lines per block when it cuts batches; it retries the block after 1 s and gets an answer, so no batch has been lost. The stack trace points into the line counter's fork lookup (Fork.getForkFromBesuBlockchainService in LineCounterGenerator.createLineCountingTracer). The error survived the 10-12 chain reset, so it is not tied to old chain data.
| what | how much |
|---|---|
| batches | none lost; per-block retries with 1 s backoff |
rpc-server-errors SLO | budget spend (99.39 % left on 10-10) |
| error rate | 10-10: burst after the restart, then ~8 / 30 min; 10-13: 5–8 / 30 min, 102 in 6 h on l2-node-besu (besu_rpc_errors_count_total{errorType="INTERNAL_ERROR"}) |
l2-node-besu (burst right after it).The rpc-server-errors SLI and coordinator counters WARN logs.
None yet beyond observation; the coordinator's retry contains it.
an SLI on server errors made a silent retry loop visible.
the investigation steps were written down on 10-10 and not done for three days.
—
Capture the full stack trace and the block number for one failure
Check whether the same block succeeds on retry and on the sequencer (its own counters)
Check the import-time ZkBlockImportTracerProvider WARNs together (same plugin)
PromQL (10-13): sum by (job, errorType) (increase(besu_rpc_errors_count_total[6h])) > 0 → l2-node-besu INTERNAL_ERROR 102.