Skip to content

SubscribePendingTransactions returns near-zero transactions after node restart #2176

Description

@mukul3097

Description

After restarting a Bor node, the eth_subscribe("newPendingTransactions") WebSocket subscription returns near-zero pending transactions instead of the expected volume. The issue does not recover over time — it persists for the lifetime of the restarted process.

Steps to Reproduce

  1. Start a Bor node on Polygon mainnet and let it sync fully
  2. Verify WS pending tx subscription works (should receive ~100+ tx/s)
  3. Restart the Bor process (same data directory, same config)
  4. Wait for the node to sync and establish peer connections
  5. Test WS pending tx subscription again

Expected Behavior

After restart and peer connection, pending tx subscription should return transactions at the same rate as before restart (~100-130 tx/s on mainnet).

Actual Behavior

After restart, the subscription returns 0-2 tx/s — sometimes zero transactions for minutes at a time. The node shows:

  • Synced (not in syncing state)
  • Full peer count (33+ peers)
  • Other RPC methods work normally (eth_blockNumber, eth_call, etc.)
  • Only eth_subscribe("newPendingTransactions") is affected

Reproduction Data

Tested by subscribing to pending txs for 15-30 second windows:

Condition tx/s received
Before restart ~130 tx/s
After restart (1 min) 0-1 tx/s
After restart (5 min) 0-1 tx/s
After restart (10 min) 0-2 tx/s
After restart (50 min) 0-1 tx/s
Non-restarted node ~130 tx/s (unchanged)

Versions Tested

  • Bor v2.6.3 — same issue
  • Bor v2.7.0 (commit 21a6320) — same issue

Environment

  • Polygon mainnet
  • Multiple deployment environments, same behavior in all
  • Tested across different cloud regions

Suspected Root Cause

The SubscribeFullPendingTransactions / SubscribePendingTransactions mechanism in go-ethereum/Bor appears to not properly reinitialize the pending tx event feed after process restart. The node can receive pending txs from peers (they appear in the txpool) but the internal Go channel/event subscription that delivers them to WS subscribers is broken.

Impact

Any application relying on real-time pending transaction notifications via WebSocket will be affected after Bor node restarts, including:

  • MEV/searcher infrastructure
  • DEX aggregators monitoring mempool
  • Transaction monitoring and analytics services

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions