Validator Load Test Report (2026-02-04)

Status

Context

This report documents a local 3-node Aeron cluster load test of oak-segment-consensus on a single MacBook. The test targeted the HTTP API on validator-0 (port 8090) while validator-1 (port 8092) acted as leader and validator-2 (port 8094) as follower. The goal was to observe backpressure behavior, thread dump patterns, and log divergence under sustained write pressure.

Test Setup

High-Level Outcome

The cluster did not behave as a stable, coordinated 3-node system during the test. Validator-1 was elected leader (term 1), but it rejected a large volume of incoming proposals due to stale term values (proposal term 0). Validator-0 continued to forward write batches while in the FOLLOWER role, generating very large logs. Validator-2 remained a follower with minimal activity.

This explains the observed divergence in log sizes and the apparent absence of a functional leader from the client’s perspective.

Per-Node Observations

Validator-0 (Port 8090, FOLLOWER)

Evidence:

Interpretation:

Validator-1 (Port 8092, LEADER)

Dominant warnings:

Interpretation:

Validator-2 (Port 8094, FOLLOWER)

Interpretation:

Cross-Node Diagnosis

Root Cause Likely

Incoming proposals to the leader are missing or using stale term values. The leader is at term 1, while proposals sent from validator-0 carry term 0. This causes the leader to reject the bulk of incoming load.

The end result:

This explains:

Why It Matters

The Aeron cluster is behaving as designed (leader enforces term correctness), but the application layer is not ensuring that proposals carry the correct term when forwarded to the ingress. This is a correctness issue, not just performance.

Immediate Fixes to Apply

  1. Ensure all proposals sent through Aeron ingress include the current term.
  2. On followers, block or redirect client writes unless they are forwarded with a valid leader term.
  3. Reduce warning spam by collapsing repeated stale-term warnings (rate limit or log once per interval).

Expected Result After Fix

If proposals carry the current term:

Next Test Plan

  1. Rebuild validators with term-included proposals.

  2. Restart all three nodes to reset term state.

  3. Re-run the same load test against validator-0.

  4. Compare:

    • Leader warning rate
    • Batch acceptance rate
    • Log size ratios across nodes

Data Appendix

Summary stats captured from logs:

Key warning signatures on leader: