Skip to content

fix(arbitrum): ensure unique batch RPC request IDs - #16

Merged
DenisCarriere merged 1 commit into
masterfrom
codex/fix-arbitrum-rpc-request-ids
Aug 8, 2026
Merged

fix(arbitrum): ensure unique batch RPC request IDs#16
DenisCarriere merged 1 commit into
masterfrom
codex/fix-arbitrum-rpc-request-ids

Conversation

@DenisCarriere

Copy link
Copy Markdown

Summary

  • assign a unique transport-level ID to every request sent by the Arbitrum batch RPC helper
  • restore each response to the caller-provided semantic ID before returning it
  • add a regression test covering duplicate caller IDs and out-of-order responses

Why

The Robinhood Chain deployment uses an Ethereum L1 JSON-RPC endpoint that enforces the JSON-RPC 2.0 batch requirement that every request ID be unique. Several Arbitrum workers intentionally use a batch number as their semantic request ID, so multiple requests for blocks in the same batch can produce duplicate IDs.

The endpoint rejects those batches with:

JSON RPC parse error: duplicate request ID: {0}

That prevents the Arbitrum batches and L1 message trackers from populating deposits and transaction-batch data. Fixing this centrally preserves the existing caller contract while making requests valid for strict JSON-RPC servers.

Validation

  • CHAIN_TYPE=arbitrum mix test apps/indexer/test/indexer/fetcher/arbitrum/utils/rpc_test.exs — 1 test, 0 failures
  • mix deps.compile && mix compile — passed
  • mix format — passed
  • mix credo --strict on the changed files — no new findings (one pre-existing TODO suggestion remains)
  • git diff --check — passed

Deployment

After merge, publish the updated Blockscout and Firehose images, update the Kubernetes image tag, and verify that the live Arbitrum batch/message trackers progress without duplicate-ID errors.

@DenisCarriere
DenisCarriere merged commit 7781fc6 into master Aug 8, 2026
18 checks passed
@DenisCarriere
DenisCarriere deleted the codex/fix-arbitrum-rpc-request-ids branch August 8, 2026 13:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant