Dan Smith created GEODE-7661:
--------------------------------
Summary: NullPointerException when serializing an EventID to a
geode 1.0.0 member
Key: GEODE-7661
URL: https://issues.apache.org/jira/browse/GEODE-7661
Project: Geode
Issue Type: Improvement
Components: membership
Reporter: Dan Smith
When serializing an EventID to a geode 1.0.0 member, there is special logic to
translate the EventId.membershipID bytes to a different format.
However, it's possible to construct an EventID with null bytes. This gets used
as part of GII for server to client queues in HAEventWrapper.toData, as seen in
this code and stack trace:
{code}
context.getSerializer().writeObject(new EventID(), out);
{code}
{noformat}
[warning 2020/01/02 22:03:29.029 PST bridgegemfire5_host1_32096 <Handshaker
0.0.0.0/0.0.0.0:24446 Thread 6> tid=0x1b8] Initialization failed for Region
/_gfe_non_durable_client_with_id_rs-FullRegression03050259a4i32xlarge-hydra-client-19(edgegemfire3_host1_32498:32498:loner):40074:57d9f969:edgegemfire3_host1_32498(version:GFE
8.1)_1_queue
java.lang.NullPointerException
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in
org.apache.geode.internal.serialization.ByteArrayDataInput.initialize(ByteArrayDataInput.java:62)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in
org.apache.geode.internal.serialization.ByteArrayDataInput.<init>(ByteArrayDataInput.java:50)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in
org.apache.geode.internal.cache.EventID.getDistributedMember(EventID.java:319)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in org.apache.geode.internal.cache.EventID.toData(EventID.java:360)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in
org.apache.geode.internal.serialization.DSFIDSerializerImpl.invokeToData(DSFIDSerializerImpl.java:199)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in
org.apache.geode.internal.serialization.DSFIDSerializerImpl.write(DSFIDSerializerImpl.java:123)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in
org.apache.geode.internal.InternalDataSerializer.basicWriteObject(InternalDataSerializer.java:2007)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in org.apache.geode.DataSerializer.writeObject(DataSerializer.java:2839)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in
org.apache.geode.internal.InternalDataSerializer$2.writeObject(InternalDataSerializer.java:293)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in
org.apache.geode.internal.cache.tier.sockets.HAEventWrapper.toData(HAEventWrapper.java:287)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in
org.apache.geode.internal.serialization.DSFIDSerializerImpl.invokeToData(DSFIDSerializerImpl.java:199)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in
org.apache.geode.internal.serialization.DSFIDSerializerImpl.write(DSFIDSerializerImpl.java:123)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in
org.apache.geode.internal.InternalDataSerializer.basicWriteObject(InternalDataSerializer.java:2007)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in org.apache.geode.DataSerializer.writeObject(DataSerializer.java:2839)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in org.apache.geode.internal.util.BlobHelper.serializeTo(BlobHelper.java:66)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in
org.apache.geode.internal.cache.entries.AbstractRegionEntry.fillInValue(AbstractRegionEntry.java:391)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in
org.apache.geode.internal.cache.InitialImageOperation$RequestImageMessage.chunkEntries(InitialImageOperation.java:2051)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in
org.apache.geode.internal.cache.InitialImageOperation$RequestImageMessage.process(InitialImageOperation.java:1774)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in
org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:394)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in
org.apache.geode.distributed.internal.DistributionMessage$1.run(DistributionMessage.java:458)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in
org.apache.geode.distributed.internal.ClusterOperationExecutors.runUntilShutdown(ClusterOperationExecutors.java:449)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in
org.apache.geode.distributed.internal.ClusterOperationExecutors.doHighPriorityThread(ClusterOperationExecutors.java:404)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in
org.apache.geode.logging.internal.executors.LoggingThreadFactory.lambda$newThread$0(LoggingThreadFactory.java:119)
at Remote Member
'rs-FullRegression03050259a4i32xlarge-hydra-client-19(bridgegemfire6_host1_7584:7584)<ec><v28>:41002(version:UNKNOWN[ordinal=115])'
in java.lang.Thread.run(Thread.java:834)
at
org.apache.geode.distributed.internal.ReplyException.handleAsUnexpected(ReplyException.java:85)
at
org.apache.geode.internal.cache.InitialImageOperation.getFromOne(InitialImageOperation.java:499)
at
org.apache.geode.internal.cache.DistributedRegion.getInitialImageAndRecovery(DistributedRegion.java:1307)
at
org.apache.geode.internal.cache.DistributedRegion.initialize(DistributedRegion.java:1101)
at
org.apache.geode.internal.cache.HARegion.initialize(HARegion.java:345)
at
org.apache.geode.internal.cache.GemFireCacheImpl.createVMRegion(GemFireCacheImpl.java:3304)
at
org.apache.geode.internal.cache.HARegion.getInstance(HARegion.java:265)
at
org.apache.geode.internal.cache.ha.HARegionQueue.createHARegion(HARegionQueue.java:348)
at
org.apache.geode.internal.cache.ha.HARegionQueue.<init>(HARegionQueue.java:328)
at
org.apache.geode.internal.cache.ha.HARegionQueue$BlockingHARegionQueue.<init>(HARegionQueue.java:2199)
at
org.apache.geode.internal.cache.ha.HARegionQueue$DurableHARegionQueue.<init>(HARegionQueue.java:2450)
at
org.apache.geode.internal.cache.ha.HARegionQueue.getHARegionQueueInstance(HARegionQueue.java:2030)
at
org.apache.geode.internal.cache.tier.sockets.CacheClientProxy$MessageDispatcher.<init>(CacheClientProxy.java:2315)
at
org.apache.geode.internal.cache.tier.sockets.CacheClientProxy.initializeMessageDispatcher(CacheClientProxy.java:1728)
at
org.apache.geode.internal.cache.tier.sockets.CacheClientNotifier.initializeProxy(CacheClientNotifier.java:660)
at
org.apache.geode.internal.cache.tier.sockets.CacheClientNotifier.registerClient(CacheClientNotifier.java:587)
at
org.apache.geode.internal.cache.tier.sockets.CacheClientNotifier.registerGFEClient(CacheClientNotifier.java:379)
at
org.apache.geode.internal.cache.tier.sockets.CacheClientNotifier.registerClient(CacheClientNotifier.java:324)
at
org.apache.geode.internal.cache.tier.sockets.AcceptorImpl.handleNewClientConnection(AcceptorImpl.java:1517)
at
org.apache.geode.internal.cache.tier.sockets.AcceptorImpl$5.run(AcceptorImpl.java:1299)
at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java./base/java.lang.Thread.run(Thread.java:834)
{noformat}
We should check for null in this case and just send the null bytes as is to the
remote member.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)