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 <bak...@vmware.com> Sent: Friday, October 30, 2020 08:25 To: user@geode.apache.org 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 <cbalc...@1wa.org<mailto:cbalc...@1wa.org>> 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 <rupert.stjohnwebs...@impress-solutions.com<mailto:rupert.stjohnwebs...@impress-solutions.com>> Sent: Friday, October 30, 2020 02:25 To: user@geode.apache.org<mailto:user@geode.apache.org> 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:cbalc...@1wa.org] Sent: 29 October 2020 16:44 To: user@geode.apache.org<mailto:user@geode.apache.org> 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