[ https://issues.apache.org/jira/browse/GEODE-7661?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ernest Burghardt closed GEODE-7661. ----------------------------------- Assignee: Ernest Burghardt (was: Dan Smith) > 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: Bug > Components: membership > Reporter: Dan Smith > Assignee: Ernest Burghardt > Priority: Major > Fix For: 1.12.0 > > Time Spent: 20m > Remaining Estimate: 0h > > 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)