[
https://issues.apache.org/jira/browse/GEODE-7381?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
John Blum updated GEODE-7381:
-----------------------------
Summary: PDX Serialization throws an Exception with an incorrect error
message when a domain type does not have a public, no-arg constructor (was:
PDX Serialization throws an Exception with an incorrect incorrect error message
when a domain type does not have a public, no-arg constructor)
> PDX Serialization throws an Exception with an 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
> Priority: Major
>
> 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)