[ https://issues.apache.org/jira/browse/GEODE-3172?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16077446#comment-16077446 ]
ASF GitHub Bot commented on GEODE-3172: --------------------------------------- Github user upthewaterspout commented on the issue: https://github.com/apache/geode/pull/620 @jhuynh1 @ladyVader @bschuchardt @hiteshk25 > Clients miss events when servers are upgraded from 1.0 to 1.2 due to > serialization issues with HAEventWrapper > ------------------------------------------------------------------------------------------------------------- > > Key: GEODE-3172 > URL: https://issues.apache.org/jira/browse/GEODE-3172 > Project: Geode > Issue Type: Bug > Components: client queues, membership > Reporter: Dan Smith > Assignee: Dan Smith > Fix For: 1.2.0 > > > We're seeing another data loss issue when upgrading servers due to > GEODE-2137. The issue is that we store HAEventWrapper objects in a region for > server->client queues. These objects contain a member ID. Because the objects > are region values, they can be lazily deserialized using the version of the > current member, which may not match the version of the member they were > serialized with. > What we are seeing is that when a client is creating a queue on a 9.1 server, > and it is copying the contents of the queue from a 9.0 server, we get are > getting serialization errors which prevent the queue from being created. When > the 9.0 server is killed as part of a rolling upgrade, this results in event > loss. > {noformat} > [severe 2017/07/06 15:09:52.195 PDT <Handshaker 0.0.0.0/0.0.0.0:23779 Thread > 6> tid=0xc0] Uncaught exception in thread Thread[Handshaker > 0.0.0.0/0.0.0.0:23779 Thread 6,5,Handshaker 0.0.0.0/0.0.0.0:23779] > org.apache.geode.InternalGemFireError: unexpected typeCode: -126 > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.internal.InternalDataSerializer.decodePrimitiveClass(InternalDataSerializer.java:1880) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.DataSerializer.readClass(DataSerializer.java:264) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.internal.InternalDataSerializer.basicReadObject(InternalDataSerializer.java:2707) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.DataSerializer.readObject(DataSerializer.java:2961) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.internal.cache.tier.sockets.HAEventWrapper.fromData(HAEventWrapper.java:330) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.internal.InternalDataSerializer.invokeFromData(InternalDataSerializer.java:2370) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.internal.DSFIDFactory.create(DSFIDFactory.java:981) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.internal.InternalDataSerializer.basicReadObject(InternalDataSerializer.java:2691) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.DataSerializer.readObject(DataSerializer.java:2961) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.internal.util.BlobHelper.deserializeBlob(BlobHelper.java:99) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.internal.cache.EntryEventImpl.deserialize(EntryEventImpl.java:1911) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.internal.cache.EntryEventImpl.deserialize(EntryEventImpl.java:1904) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.internal.cache.VMCachedDeserializable.getDeserializedValue(VMCachedDeserializable.java:134) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.internal.cache.AbstractRegionMap.initialImagePut(AbstractRegionMap.java:771) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.internal.cache.InitialImageOperation.processChunk(InitialImageOperation.java:928) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.internal.cache.InitialImageOperation$ImageProcessor.process(InitialImageOperation.java:1249) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.distributed.internal.ReplyMessage.process(ReplyMessage.java:213) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.internal.cache.InitialImageOperation$ImageReplyMessage.process(InitialImageOperation.java:2723) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.distributed.internal.ReplyMessage.dmProcess(ReplyMessage.java:193) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.distributed.internal.ReplyMessage.process(ReplyMessage.java:186) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:374) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.distributed.internal.DistributionMessage$1.run(DistributionMessage.java:440) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.distributed.internal.DistributionManager.runUntilShutdown(DistributionManager.java:665) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > org.apache.geode.distributed.internal.DistributionManager$5$1.run(DistributionManager.java:961) > at Remote Member '172.1.1.1(32406)<v4>:32771' in > java.lang.Thread.run(Thread.java:748) > at > org.apache.geode.distributed.internal.ReplyException.handleAsUnexpected(ReplyException.java:89) > at > org.apache.geode.internal.cache.InitialImageOperation.getFromOne(InitialImageOperation.java:501) > at > org.apache.geode.internal.cache.DistributedRegion.getInitialImageAndRecovery(DistributedRegion.java:1182) > at > org.apache.geode.internal.cache.DistributedRegion.initialize(DistributedRegion.java:1022) > at > org.apache.geode.internal.cache.HARegion.initialize(HARegion.java:337) > at > org.apache.geode.internal.cache.GemFireCacheImpl.createVMRegion(GemFireCacheImpl.java:3077) > at > org.apache.geode.internal.cache.HARegion.getInstance(HARegion.java:257) > at > org.apache.geode.internal.cache.ha.HARegionQueue.createHARegion(HARegionQueue.java:367) > at > org.apache.geode.internal.cache.ha.HARegionQueue.<init>(HARegionQueue.java:347) > at > org.apache.geode.internal.cache.ha.HARegionQueue$BlockingHARegionQueue.<init>(HARegionQueue.java:2100) > at > org.apache.geode.internal.cache.ha.HARegionQueue$DurableHARegionQueue.<init>(HARegionQueue.java:2331) > at > org.apache.geode.internal.cache.ha.HARegionQueue.getHARegionQueueInstance(HARegionQueue.java:1953) > at > org.apache.geode.internal.cache.tier.sockets.CacheClientProxy$MessageDispatcher.<init>(CacheClientProxy.java:2321) > at > org.apache.geode.internal.cache.tier.sockets.CacheClientProxy.initializeMessageDispatcher(CacheClientProxy.java:1730) > at > org.apache.geode.internal.cache.tier.sockets.CacheClientNotifier.initializeProxy(CacheClientNotifier.java:610) > at > org.apache.geode.internal.cache.tier.sockets.CacheClientNotifier.registerClient(CacheClientNotifier.java:537) > at > org.apache.geode.internal.cache.tier.sockets.CacheClientNotifier.registerGFEClient(CacheClientNotifier.java:330) > at > org.apache.geode.internal.cache.tier.sockets.CacheClientNotifier.registerClient(CacheClientNotifier.java:277) > at > org.apache.geode.internal.cache.tier.sockets.AcceptorImpl.handleNewClientConnection(AcceptorImpl.java:1457) > at > org.apache.geode.internal.cache.tier.sockets.AcceptorImpl$5.run(AcceptorImpl.java:1332) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:748) > {noformat} > {noformat} -- This message was sent by Atlassian JIRA (v6.4.14#64029)