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 2017/07/26 00:41:00 UTC

[jira] [Created] (GEODE-3315) NullPointerException creating a copy of a client queue when gemfire.PREFER_SERIALIZED=true

Dan Smith created GEODE-3315:
--------------------------------

             Summary: NullPointerException creating a copy of a client queue when gemfire.PREFER_SERIALIZED=true
                 Key: GEODE-3315
                 URL: https://issues.apache.org/jira/browse/GEODE-3315
             Project: Geode
          Issue Type: Bug
          Components: client queues
            Reporter: Dan Smith


In the case of an HARegion, AbstractRegionMap.initialImagePut deserializes the value to set the haContainer. Normally, that value is a wrapped by a VMCachedDeserializable, and deserializing it replaces it in the VMCachedDeserializable. With -Dgemfire.PREFER_SERIALIZED=true, the value is wrapped by a PreferBytesCachedDeserializable and deserializing it creates a copy of the value. It doesn't replace it in the PreferBytesCachedDeserializable.

So, in this case, the haContainer is being set on a copy of the value, not the value itself. It has no effect, and the value put into the HARegion has no haContainer.

This is not really an issue until this member needs to provide an initial image for another member.

At that time, a NullPointerException like this occurs:
{noformat}
[vm3] Caused by: java.lang.NullPointerException
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in org.apache.geode.internal.cache.tier.sockets.HAEventWrapper.toData(HAEventWrapper.java:287)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in org.apache.geode.internal.InternalDataSerializer.invokeToData(InternalDataSerializer.java:2299)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in org.apache.geode.internal.InternalDataSerializer.writeDSFID(InternalDataSerializer.java:1406)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in org.apache.geode.internal.InternalDataSerializer.basicWriteObject(InternalDataSerializer.java:2067)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in org.apache.geode.DataSerializer.writeObject(DataSerializer.java:2936)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in org.apache.geode.internal.util.BlobHelper.serializeToBlob(BlobHelper.java:53)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in org.apache.geode.internal.cache.EntryEventImpl.serialize(EntryEventImpl.java:1969)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in org.apache.geode.internal.cache.EntryEventImpl.serialize(EntryEventImpl.java:1955)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in org.apache.geode.internal.cache.PreferBytesCachedDeserializable.<init>(PreferBytesCachedDeserializable.java:69)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in org.apache.geode.internal.cache.CachedDeserializableFactory.create(CachedDeserializableFactory.java:82)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in org.apache.geode.internal.cache.AbstractRegionMap.initialImagePut(AbstractRegionMap.java:778)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in org.apache.geode.internal.cache.InitialImageOperation.processChunk(InitialImageOperation.java:928)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in org.apache.geode.internal.cache.InitialImageOperation$ImageProcessor.process(InitialImageOperation.java:1249)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in org.apache.geode.distributed.internal.ReplyMessage.process(ReplyMessage.java:213)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in org.apache.geode.internal.cache.InitialImageOperation$ImageReplyMessage.process(InitialImageOperation.java:2725)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in org.apache.geode.distributed.internal.ReplyMessage.dmProcess(ReplyMessage.java:193)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in org.apache.geode.distributed.internal.ReplyMessage.process(ReplyMessage.java:186)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:374)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in org.apache.geode.distributed.internal.DistributionMessage$1.run(DistributionMessage.java:440)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in org.apache.geode.distributed.internal.DistributionManager.runUntilShutdown(DistributionManager.java:665)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in org.apache.geode.distributed.internal.DistributionManager$5$1.run(DistributionManager.java:961)
[vm3] 	at Remote Member '172.16.115.245(73551)<v3>:32772' in java.lang.Thread.run(Thread.java:748)
{noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)