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)

Reply via email to