John Blum created GEODE-7381:
--------------------------------
Summary: PDX Serialization throws an Exception with an incorrect
incorrect error message when a domain type does not have a public, no-arg
Constructor
Key: GEODE-7381
URL: https://issues.apache.org/jira/browse/GEODE-7381
Project: Geode
Issue Type: Bug
Reporter: John Blum
Apache Geode throws an incorrect {{PdxSerializationException}} with message
"_Could not deserialize pdx because the pdx serializer's fromData returned
false for a pdx of class com.springone.austin.vursys.battle.model.Vote_",
instead.
The Stack Trace is:
{code:java}
Caused by: org.apache.geode.pdx.PdxSerializationException: Could not
deserialize pdx because the pdx serializer's fromData returned false for a pdx
of class com.springone.austin.vursys.battle.model.Vote
at
org.apache.geode.pdx.internal.PdxReaderImpl.basicGetObject(PdxReaderImpl.java:823)
at
org.apache.geode.pdx.internal.PdxReaderImpl.getObject(PdxReaderImpl.java:753)
at
org.apache.geode.internal.InternalDataSerializer.readPdxSerializable(InternalDataSerializer.java:3153)
at
org.apache.geode.internal.InternalDataSerializer.basicReadObject(InternalDataSerializer.java:2916)
at org.apache.geode.DataSerializer.readObject(DataSerializer.java:2978)
at
org.apache.geode.internal.util.BlobHelper.deserializeBlob(BlobHelper.java:90)
at
org.apache.geode.internal.cache.EntryEventImpl.deserialize(EntryEventImpl.java:2013)
at
org.apache.geode.internal.cache.EntryEventImpl.deserialize(EntryEventImpl.java:2006)
at
org.apache.geode.internal.cache.VMCachedDeserializable.getDeserializedValue(VMCachedDeserializable.java:132)
at
org.apache.geode.internal.cache.LocalRegion.getDeserialized(LocalRegion.java:1336)
at
org.apache.geode.internal.cache.NonTXEntry.getValue(NonTXEntry.java:91)
at
org.apache.geode.internal.cache.LocalDataSet$LocalEntriesSet$LocalEntriesSetIterator.moveNext(LocalDataSet.java:781)
at
org.apache.geode.internal.cache.LocalDataSet$LocalEntriesSet$LocalEntriesSetIterator.<init>(LocalDataSet.java:735)
at
org.apache.geode.internal.cache.LocalDataSet$LocalEntriesSet.iterator(LocalDataSet.java:722)
at
org.apache.geode.cache.query.internal.ResultsCollectionWrapper.iterator(ResultsCollectionWrapper.java:199)
at
org.apache.geode.cache.query.internal.QRegion.iterator(QRegion.java:282)
at
org.apache.geode.cache.query.internal.CompiledSelect.doNestedIterations(CompiledSelect.java:834)
at
org.apache.geode.cache.query.internal.CompiledSelect.doIterationEvaluate(CompiledSelect.java:701)
at
org.apache.geode.cache.query.internal.CompiledSelect.evaluate(CompiledSelect.java:545)
at
org.apache.geode.cache.query.internal.CompiledGroupBySelect.evaluate(CompiledGroupBySelect.java:157)
at
org.apache.geode.cache.query.internal.CompiledGroupBySelect.evaluate(CompiledGroupBySelect.java:42)
at
org.apache.geode.cache.query.internal.DefaultQuery.executeUsingContext(DefaultQuery.java:430)
at
org.apache.geode.internal.cache.PRQueryProcessor.executeQueryOnBuckets(PRQueryProcessor.java:246)
at
org.apache.geode.internal.cache.PRQueryProcessor.executeSequentially(PRQueryProcessor.java:204)
at
org.apache.geode.internal.cache.PRQueryProcessor.executeQuery(PRQueryProcessor.java:122)
at
org.apache.geode.internal.cache.PartitionedRegionQueryEvaluator.executeQueryOnLocalNode(PartitionedRegionQueryEvaluator.java:962)
at
org.apache.geode.internal.cache.PartitionedRegionQueryEvaluator.executeQueryOnRemoteAndLocalNodes(PartitionedRegionQueryEvaluator.java:378)
at
org.apache.geode.internal.cache.PartitionedRegionQueryEvaluator.queryBuckets(PartitionedRegionQueryEvaluator.java:495)
at
org.apache.geode.internal.cache.PartitionedRegion.doExecuteQuery(PartitionedRegion.java:1963)
at
org.apache.geode.internal.cache.PartitionedRegion.executeQuery(PartitionedRegion.java:1890)
at
org.apache.geode.cache.query.internal.DefaultQuery.execute(DefaultQuery.java:831)
at
com.springone.austin.vursys.battle.geode.function.impl.FindWinningCharacter.execute(FindWinningCharacter.java:60)
at
org.apache.geode.internal.cache.execute.AbstractExecution.executeFunctionLocally(AbstractExecution.java:335)
at
org.apache.geode.internal.cache.execute.AbstractExecution$1.run(AbstractExecution.java:275)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at
org.apache.geode.distributed.internal.ClusterDistributionManager.runUntilShutdown(ClusterDistributionManager.java:960)
at
org.apache.geode.distributed.internal.ClusterDistributionManager.doFunctionExecutionThread(ClusterDistributionManager.java:814)
at
org.apache.geode.internal.logging.LoggingThreadFactory.lambda$newThread$0(LoggingThreadFactory.java:121)
at java.lang.Thread.run(Thread.java:748)
{code}
The Apache Geode code did *not* properly consider that there was simply no
public, no-arg constructor on the application domain type (e.g. {{Vote}})! Of
course, after adding a public, no-arg constructor to the application domain
type, everything works as expected!
The error and message is very misleading!
--
This message was sent by Atlassian Jira
(v8.3.4#803005)