NullPointerException during Client Node Join in Apache Ignite 2.15.0
- Dominant language
- Java
- Stars
- 5.1k
- Forks
- 1.9k
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 46
Description
NullPointerException during Client Node Join in Apache Ignite 2.15.0
**Environment:**
Apache Ignite Version: 2.15.0
Cluster Size: 14 server nodes, 4 client nodes
Deployment: Dockerized nodes with host networking
JDK: Java 17
OS: RHEL 9
**Summary**
When a client node attempts to join an existing Apache Ignite cluster, a NullPointerException is thrown during the partition map exchange phase. The error occurs in GridCachePartitionExchangeManager.clientTopology, where it attempts to invoke .config() on a null CacheGroupDescriptor.
**Error Logs**
`04-04-2025 19:59:10.857 [sys-#86] ERROR ROOT.? - Critical system error detected. Will be handled accordingly to configured handler [hnd=StopNodeOrHaltFailureHandler [tryStop=false, timeout=0, super=AbstractFailureHandler [ignoredFailureTypes=UnmodifiableSet [SYSTEM_WORKER_BLOCKED, SYSTEM_CRITICAL_OPERATION_TIMEOUT]]], failureCtx=FailureContext [type=CRITICAL_ERROR, err=java.lang.NullPointerException: Cannot invoke "o.a.i.i.processors.cache.CacheGroupDescriptor.config()" because "grpDesc" is null]]
java.lang.NullPointerException: Cannot invoke "org.apache.ignite.internal.processors.cache.CacheGroupDescriptor.config()" because "grpDesc" is null
at org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager.clientTopology(GridCachePartitionExchangeManager.java:1055)
at org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.lambda$updatePartitionFullMap$81bdb8e8$1(GridDhtPartitionsExchangeFuture.java:4831)
at org.apache.ignite.internal.util.IgniteUtils.lambda$null$3(IgniteUtils.java:11609)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
Suppressed: java.lang.NullPointerException: Cannot invoke "org.apache.ignite.internal.processors.cache.CacheGroupDescriptor.config()" because "grpDesc" is null
... 7 common frames omitted
04-04-2025 19:59:10.899 [sys-#86] ERROR ROOT.? - JVM will be halted immediately due to the failure: [failureCtx=FailureContext [type=CRITICAL_ERROR, err=java.lang.NullPointerException: Cannot invoke "o.a.i.i.processors.cache.CacheGroupDescriptor.config()" because "grpDesc" is null]]
`
**Reproduction Steps**
Start a cluster with 14 server nodes.
Try joining 4 client nodes in parallel as the cluster is coming up.
**Impact**
Prevents successful join of client nodes during topology changes.
**Expected Behavior**
Client node should be able to join and complete partition exchange without encountering NullPointerException.
Contributor guide
Research direction
Start in org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager.java at clientTopology, then trace the partition exchange call from GridDhtPartitionsExchangeFuture.updatePartitionFullMap. Reproduce with 14 server nodes and four client nodes joining in parallel during cluster startup. Done means client nodes complete partition exchange without the reported NullPointerException.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100