apache / apache/ignite

Apache Ignite 3.1.0 – Node3 JVM Old Generation Saturation, Replication Future Accumulation, Deadlocks, and Raft Instability Under Concurrent RW_GET_ALL Load

Open
#13,218 0 comments 0 reactions 0 assignees View on GitHub
ignite-3
Dominant language
Java
Stars
5.1k
Forks
1.9k
Avg merge
3d 2h
Merged PRs (30d)
46

Description

Description:

We are testing Apache Ignite 3.1.0 using a 3-node cluster under heavy JMeter load (~3 million records).

Environment:

Ignite 3.1.0
Java 17
3 nodes
Xms/Xmx = 16GB
G1GC

Problem:
Only node3 experiences severe JVM heap pressure while node1/node2 remain relatively stable.

Observed JVM Usage:

node1 → ~50-60%
node2 → ~60-70%
node3 → ~99.96% Old Gen

even High CPU usage

Image

GC Statistics on node3:

Full GC Count = 2189
Full GC Time = 16220 sec

Errors Observed:
1.
IGN-TX-4 Failed to acquire a lock due to a possible deadlock

Replication is timed out

SYSTEM_WORKER_BLOCKED

Example:
A critical thread is blocked for 11772 ms:

node3-network-worker-5

JRaft PreVote timeout / unsuccessful election rounds

Heap Histogram Findings on node3:
Very large accumulation of:

CompletableFuture (~36 million)
PartitionReplicaListener$OperationId (~36 million)
TxCleanupReadyFutureList (~36 million)

We also observed very high raft activity for Zone 20 partitions (13k+ events in logs).

Example workload:

requestType=RW_GET_ALL
primaryKeys.size=39

Questions:

Is this expected under heavy concurrent RW_GET_ALL workload?
Could this indicate replication/transaction cleanup backlog or future accumulation issue?
Are there recommended tuning settings for this workload pattern?
Has this behavior improved in newer Ignite 3 versions?

I can provide:

GC logs
heap histogram
thread dumps
JVM graphs
additional logs if needed.

Contributor guide

Open the contributing guide

Research direction

Start with the provided heap histogram, GC logs, thread dumps, JVM graphs, and node3 logs, focusing on the RW_GET_ALL workload and Zone 20 Raft activity. Compare the CompletableFuture, OperationId, and TxCleanupReadyFutureList accumulation with replication timeouts, deadlocks, blocked workers, and election failures. Done means determining whether this is expected, identifying any cleanup or replication backlog, and documenting applicable tuning or newer-version findings.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
databases, distributed-systems
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.