You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Dan Smith (Jira)" <ji...@apache.org> on 2020/01/08 19:53:00 UTC
[jira] [Created] (GEODE-7661) NullPointerException when serializing
an EventID to a geode 1.0.0 member
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)