This is geode 1.13
The org.myApp.domain.myClass has been deployed on the server in a jar
Gfsh message:
gfsh>export data --region=myregion --file=geode-storage/myregion.gfd
--member=-server1
Member| Status | Message
---------- | ------ |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
server1 | ERROR | java.io.IOException:
org.apache.geode.cache.execute.FunctionException:
org.apache.geode.SerializationException: A ClassNotFoundException was thrown
while trying to deserialize cached value.
Stack trace:
[error 2020/10/30 08:54:29.317 PDT <Function Execution Processor2> tid=0x41]
org.apache.geode.cache.execute.FunctionException:
org.apache.geode.SerializationException: A ClassNotFoundException was thrown
while trying to deserialize cached value.
java.io.IOException: org.apache.geode.cache.execute.FunctionException:
org.apache.geode.SerializationException: A ClassNotFoundException was thrown
while trying to deserialize cached value.
at
org.apache.geode.internal.cache.snapshot.WindowedExporter.export(WindowedExporter.java:106)
at
org.apache.geode.internal.cache.snapshot.RegionSnapshotServiceImpl.exportOnMember(RegionSnapshotServiceImpl.java:361)
at
org.apache.geode.internal.cache.snapshot.RegionSnapshotServiceImpl.save(RegionSnapshotServiceImpl.java:161)
at
org.apache.geode.internal.cache.snapshot.RegionSnapshotServiceImpl.save(RegionSnapshotServiceImpl.java:146)
at
org.apache.geode.management.internal.cli.functions.ExportDataFunction.executeFunction(ExportDataFunction.java:62)
at
org.apache.geode.management.cli.CliFunction.execute(CliFunction.java:37)
at
org.apache.geode.internal.cache.MemberFunctionStreamingMessage.process(MemberFunctionStreamingMessage.java:201)
at
org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:376)
at
org.apache.geode.distributed.internal.DistributionMessage$1.run(DistributionMessage.java:441)
at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at
org.apache.geode.distributed.internal.ClusterOperationExecutors.runUntilShutdown(ClusterOperationExecutors.java:442)
at
org.apache.geode.distributed.internal.ClusterOperationExecutors.doFunctionExecutionThread(ClusterOperationExecutors.java:377)
at
org.apache.geode.logging.internal.executors.LoggingThreadFactory.lambda$newThread$0(LoggingThreadFactory.java:119)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: org.apache.geode.cache.execute.FunctionException:
org.apache.geode.SerializationException: A ClassNotFoundException was thrown
while trying to deserialize cached value.
at
org.apache.geode.internal.cache.snapshot.WindowedExporter$WindowedExportCollector.setException(WindowedExporter.java:383)
at
org.apache.geode.internal.cache.snapshot.WindowedExporter$WindowedExportCollector.addResult(WindowedExporter.java:346)
at
org.apache.geode.internal.cache.execute.PartitionedRegionFunctionResultSender.lastResult(PartitionedRegionFunctionResultSender.java:195)
at
org.apache.geode.internal.cache.execute.AbstractExecution.handleException(AbstractExecution.java:502)
at
org.apache.geode.internal.cache.execute.AbstractExecution.executeFunctionLocally(AbstractExecution.java:353)
at
org.apache.geode.internal.cache.execute.AbstractExecution.lambda$executeFunctionOnLocalPRNode$0(AbstractExecution.java:273)
... 6 more
Caused by: org.apache.geode.SerializationException: A ClassNotFoundException
was thrown while trying to deserialize cached value.
at
org.apache.geode.internal.cache.EntryEventImpl.deserialize(EntryEventImpl.java:2046)
at
org.apache.geode.internal.cache.EntryEventImpl.deserialize(EntryEventImpl.java:2032)
at
org.apache.geode.internal.cache.VMCachedDeserializable.getDeserializedValue(VMCachedDeserializable.java:135)
at
org.apache.geode.internal.cache.EntrySnapshot.getRawValue(EntrySnapshot.java:111)
at
org.apache.geode.internal.cache.EntrySnapshot.getRawValue(EntrySnapshot.java:99)
at
org.apache.geode.internal.cache.EntrySnapshot.getValue(EntrySnapshot.java:129)
at
org.apache.geode.internal.cache.snapshot.SnapshotPacket$SnapshotRecord.<init>(SnapshotPacket.java:79)
at
org.apache.geode.internal.cache.snapshot.WindowedExporter$WindowedExportFunction.execute(WindowedExporter.java:197)
at
org.apache.geode.internal.cache.execute.AbstractExecution.executeFunctionLocally(AbstractExecution.java:328)
... 7 more
Caused by: java.lang.ClassNotFoundException: org.myApp.domain.myClass
at
org.apache.geode.internal.ClassPathLoader.forName(ClassPathLoader.java:186)
at
org.apache.geode.internal.InternalDataSerializer.getCachedClass(InternalDataSerializer.java:3114)
at org.apache.geode.DataSerializer.readClass(DataSerializer.java:264)
at
org.apache.geode.internal.InternalDataSerializer.readDataSerializable(InternalDataSerializer.java:2327)
at
org.apache.geode.internal.InternalDataSerializer.basicReadObject(InternalDataSerializer.java:2513)
at org.apache.geode.DataSerializer.readObject(DataSerializer.java:2864)
thanks
Claudiu Balcîza
From: Anthony Baker <[email protected]>
Sent: Friday, October 30, 2020 08:25
To: [email protected]
Subject: Re: A ClassNotFoundException was thrown while trying to deserialize
cached value
Can you share at the full stack trace? Thanks! What version is this?
Anthony
On Oct 30, 2020, at 7:01 AM, Claudiu Balciza
<[email protected]<mailto:[email protected]>> wrote:
By exporting data I mean the gfsh command
export data --region=myregion --file=geode-storage/myregion.gfd --member=
server1
that’s useful for backups
perhaps I should give PDX a try since it is enabled by default in spring boot
for geode
but I would still like to know why the data exporting doesn’t work with my
current approach.
Claudiu Balcîza
From: Rupert St John Webster
<[email protected]<mailto:[email protected]>>
Sent: Friday, October 30, 2020 02:25
To: [email protected]<mailto:[email protected]>
Subject: RE: A ClassNotFoundException was thrown while trying to deserialize
cached value
Hi, what do you mean by export the data… do you mean “get” ?
I “get” domain arrays within arrays using a custom FromData method like this:
public MyObject FromPdx(IPdxInstance pdx)
{
MyString = (string) pdx.GetField("MyType");
MyChar = Convert.ToChar(pdx.GetField("MyChar"));
MyInt = Convert.ToInt32(pdx.GetField("MyInt"));
MyArray = FromPdxToMyArray(size, pdx.GetField("MyArray"));
return this;
}
public IMyArray[] FromPdxToMyArray(int size, object o)
{
IList<object> objList = (List<object>)o;
MyArray[] elements = new MyArray[size];
int c = 0;
foreach (object o2 in objList)
{
elements[c] = new MyArray().FromPdx((IPdxInstance)o2);
c++;
}
return elements;
}
Then in the MyArray().FromPdx(IPdxInstance) there’s a repeat of the MyObject
FromPdx(pdx) method to get the array elements. If there were further arrays
within arrays then the FromPdx() stack like this. It works for me.
Cheers.
From: Claudiu Balciza [mailto:[email protected]]
Sent: 29 October 2020 16:44
To: [email protected]<mailto:[email protected]>
Subject: A ClassNotFoundException was thrown while trying to deserialize cached
value
This email has reached the company via an external source.
Please be cautious opening any attachments or links.
Hi,
I have this springboot application where I store and retrieve complex objects
in geode (…array lists within array lists…).
I serialize the objects with DataSerializable and DataSerializer and use
compression (the default snappy compressor).
It all works fine.
But when I try to export the data I get: java.io.IOException:
org.apache.geode.cache.execute.FunctionException:
org.apache.geode.SerializationException: A ClassNotFoundException was thrown
while trying to deserialize cached value.
I packed all the domain classes in a jar and deployed the jar on the cluster
(all classes have the toData and fromData methods)
I still get the exception above.
What am I doing wrong?
Claudiu Balciza