RPC error bufferComplete=false: feed resume window does not cover the cursor
Last updated:
At a glance
| Property | Value |
|---|---|
| Applies to | Robinhood Chain (chain ID 4663) |
| Frame field | resume.bufferComplete |
| Window | 8,192 frames / 64 MiB / 5 minutes, whichever comes first |
| Lost on restart | Yes — the window is in process memory |
Cause
The resume control frame reports bufferComplete=false when the bounded window (at most 8,192 frames, 64 MiB or five minutes) cannot deliver every sequence after your cursor. That happens when the cursor is older than earliestAvailableSequence, when it is ahead of latestAvailableSequence, or when the window is empty — the normal state right after a service restart, because the buffer lives in process memory.
Solution
- Read earliestAvailableSequence and latestAvailableSequence from the resume frame to see exactly which range is missing.
- Consume the available tail, then reconcile the gap over JSON-RPC: sequenceNumber is the L2 block number, so eth_getBlockByNumber, eth_getBlockReceipts and eth_getLogs map directly.
- Persist your processed cursor before acknowledging downstream work so the gap is always computable.
Example
{
"version": 1,
"resume": {
"requestedAfterSequence": 56798024,
"earliestAvailableSequence": 56798100,
"latestAvailableSequence": 56798130,
"bufferComplete": false
}
}FAQ
- Is this an error?
- No, it is an honest report: the feed tells you the window cannot cover your cursor instead of silently skipping data.
- Can I replay an arbitrary past day?
- No. The feed is a live stream with a short operational buffer, not a historical API.