Hello Philippe, Have you restarted the servers after configuring pdx? You can either use DEFAULT disk store (like described in the SO post you shared) or use 'PDX' disk-store that you have created for persisting PDX types to disk. But configuring PDX has to be done before starting any servers and you cannot create disk stores without members. So following the below sequence I was able to fix the exception:
1) start locator --name=locator --bind-address=127.0.0.1 2) configure pdx --disk-store=pdx --read-serialized=true 3) start server --name=server1 --locators=127.0.0.1[10334] --server-port=0 --group=ksgroup 4) create disk-store --name pdx --allow-force-compaction=true --auto-compact=true --compaction-threshold=50 --max-oplog-size=1024 --queue-size=1000 --time-interval=1000 --write-buffer-size=32768 --dir=/tmp/pdx --group=ksgroup 5) create disk-store --name example --allow-force-compaction=true --auto-compact=true --compaction-threshold=50 --max-oplog-size=1024 --queue-size=1000 --time-interval=1000 --write-buffer-size=32768 --dir=/tmp/example --group=ksgroup 6) create region --if-not-exists --name=example --type=PARTITION_REDUNDANT_PERSISTENT --disk-store=example --group=ksgroup PS: I saw that `--group` was missing in your create region command which could cause issues when you add more servers that are not ksgroup. Sau On Mon, Jan 14, 2019 at 8:30 AM Philippe CEROU <philippe.ce...@gfi.fr> wrote: > Hi, > > > > I have a 6 nodes GEODE 1.8.0 cluster on which I try to run following > code (I just renamed « example-region » to « example ») which show how to > persist a simple PDX’ised object in a region : > > > > > https://github.com/apache/geode-examples/tree/master/serialization/src/main/java/org/apache/geode_examples/serialization > > > > When I run my code I have this error stack : > > > > Exception in thread "main" *org.apache.geode.ToDataException*: > PdxSerializer failed when calling toData on class > com.gfi.rt.test.product.apache.geode.client.example.Country > > at org.apache.geode.internal.InternalDataSerializer.writePdx( > *InternalDataSerializer.java:3063*) > > at org.apache.geode.internal.InternalDataSerializer.writeUserObject( > *InternalDataSerializer.java:1649*) > > at > org.apache.geode.internal.InternalDataSerializer.writeWellKnownObject( > *InternalDataSerializer.java:1548*) > > at > org.apache.geode.internal.InternalDataSerializer.basicWriteObject( > *InternalDataSerializer.java:2200*) > > at org.apache.geode.DataSerializer.writeObject( > *DataSerializer.java:2952*) > > at org.apache.geode.internal.util.BlobHelper.serializeTo( > *BlobHelper.java:66*) > > at > org.apache.geode.internal.cache.tier.sockets.Message.serializeAndAddPart( > *Message.java:397*) > > at org.apache.geode.internal.cache.tier.sockets.Message.addObjPart( > *Message.java:341*) > > at org.apache.geode.internal.cache.tier.sockets.Message.addObjPart( > *Message.java:320*) > > at org.apache.geode.cache.client.internal.PutOp$PutOpImpl.<init>( > *PutOp.java:280*) > > at org.apache.geode.cache.client.internal.PutOp.execute( > *PutOp.java:64*) > > at org.apache.geode.cache.client.internal.ServerRegionProxy.put( > *ServerRegionProxy.java:152*) > > at org.apache.geode.internal.cache.LocalRegion.serverPut( > *LocalRegion.java:3032*) > > at org.apache.geode.internal.cache.LocalRegion.cacheWriteBeforePut( > *LocalRegion.java:3144*) > > at org.apache.geode.internal.cache.ProxyRegionMap.basicPut( > *ProxyRegionMap.java:238*) > > at org.apache.geode.internal.cache.LocalRegion.virtualPut( > *LocalRegion.java:5664*) > > at org.apache.geode.internal.cache.LocalRegionDataView.putEntry( > *LocalRegionDataView.java:152*) > > at org.apache.geode.internal.cache.LocalRegion.basicPut( > *LocalRegion.java:5090*) > > at org.apache.geode.internal.cache.LocalRegion.validatedPut( > *LocalRegion.java:1635*) > > at org.apache.geode.internal.cache.LocalRegion.put( > *LocalRegion.java:1622*) > > at org.apache.geode.internal.cache.AbstractRegion.put( > *AbstractRegion.java:411*) > > at > com.gfi.rt.test.product.apache.geode.client.example.Main.insertValue( > *Main.java:98*) > > at > com.gfi.rt.test.product.apache.geode.client.example.Main.insertValues( > *Main.java:85*) > > at com.gfi.rt.test.product.apache.geode.client.example.Main.main( > *Main.java:58*) > > Caused by: *org.apache.geode.cache.client.ServerOperationException*: > remote server on GFI301776(6480:loner):63257:7f7d324d: While performing a > remote getPdxIdForType > > at > org.apache.geode.cache.client.internal.GetPDXIdForTypeOp$GetPDXIdForTypeOpImpl.processResponse( > *GetPDXIdForTypeOp.java:63*) > > at > org.apache.geode.cache.client.internal.AbstractOp.processResponse( > *AbstractOp.java:225*) > > at > org.apache.geode.cache.client.internal.AbstractOp.attemptReadResponse( > *AbstractOp.java:210*) > > at org.apache.geode.cache.client.internal.AbstractOp.attempt( > *AbstractOp.java:386*) > > at org.apache.geode.cache.client.internal.ConnectionImpl.execute( > *ConnectionImpl.java:274*) > > at > org.apache.geode.cache.client.internal.pooling.PooledConnection.execute( > *PooledConnection.java:325*) > > at > org.apache.geode.cache.client.internal.OpExecutorImpl.executeWithPossibleReAuthentication( > *OpExecutorImpl.java:892*) > > at org.apache.geode.cache.client.internal.OpExecutorImpl.execute( > *OpExecutorImpl.java:171*) > > at org.apache.geode.cache.client.internal.OpExecutorImpl.execute( > *OpExecutorImpl.java:128*) > > at org.apache.geode.cache.client.internal.PoolImpl.execute( > *PoolImpl.java:758*) > > at org.apache.geode.cache.client.internal.GetPDXIdForTypeOp.execute( > *GetPDXIdForTypeOp.java:38*) > > at org.apache.geode.pdx.internal.ClientTypeRegistration.defineType( > *ClientTypeRegistration.java:67*) > > at org.apache.geode.pdx.internal.TypeRegistry.defineType( > *TypeRegistry.java:197*) > > at org.apache.geode.pdx.internal.TypeRegistry.defineLocalType( > *TypeRegistry.java:238*) > > at > org.apache.geode.pdx.internal.PdxWriterImpl.completeByteStreamGeneration( > *PdxWriterImpl.java:515*) > > at org.apache.geode.pdx.internal.PdxWriterImpl.getAutoPdxType( > *PdxWriterImpl.java:546*) > > at org.apache.geode.pdx.internal.AutoSerializableManager.writeData( > *AutoSerializableManager.java:2047*) > > at org.apache.geode.pdx.internal.AutoSerializableManager.writeData( > *AutoSerializableManager.java:1987*) > > at org.apache.geode.pdx.ReflectionBasedAutoSerializer.toData( > *ReflectionBasedAutoSerializer.java:346*) > > at org.apache.geode.internal.InternalDataSerializer.writePdx( > *InternalDataSerializer.java:3014*) > > ... 23 more > > Caused by: *org.apache.geode.pdx.PdxInitializationException*: The PDX > metadata must be persistent in a member that has persistent data. See > CacheFactory.setPdxPersistent. > > at org.apache.geode.pdx.internal.PeerTypeRegistration.checkAllowed( > *PeerTypeRegistration.java:516*) > > at > org.apache.geode.pdx.internal.PeerTypeRegistration.verifyConfiguration( > *PeerTypeRegistration.java:500*) > > at org.apache.geode.pdx.internal.PeerTypeRegistration.defineType( > *PeerTypeRegistration.java:342*) > > at org.apache.geode.pdx.internal.TypeRegistry.defineType( > *TypeRegistry.java:197*) > > at > org.apache.geode.internal.cache.tier.sockets.command.GetPDXIdForType.cmdExecute( > *GetPDXIdForType.java:62*) > > at org.apache.geode.internal.cache.tier.sockets.BaseCommand.execute( > *BaseCommand.java:178*) > > at > org.apache.geode.internal.cache.tier.sockets.ServerConnection.doNormalMessage( > *ServerConnection.java:844*) > > at > org.apache.geode.internal.cache.tier.sockets.OriginalServerConnection.doOneMessage( > *OriginalServerConnection.java:74*) > > at > org.apache.geode.internal.cache.tier.sockets.ServerConnection.run( > *ServerConnection.java:1214*) > > at java.util.concurrent.ThreadPoolExecutor.runWorker( > *ThreadPoolExecutor.java:1149*) > > at java.util.concurrent.ThreadPoolExecutor$Worker.run( > *ThreadPoolExecutor.java:624*) > > at > org.apache.geode.internal.cache.tier.sockets.AcceptorImpl.lambda$initializeServerConnectionThreadPool$3( > *AcceptorImpl.java:594*) > > at > org.apache.geode.internal.logging.LoggingThreadFactory.lambda$newThread$0( > *LoggingThreadFactory.java:121*) > > at java.lang.Thread.run(*Thread.java:748*) > > > > > > I have seen here same error : > > > > > https://stackoverflow.com/questions/41059201/pdx-serializing-in-replicated-region-using-clientcache > > > > Someone say I need to make : > > > > *You need to configure the pdx registry to be persistent on the server. > You can do that in gfsh like this:* > > *gfsh> configure pdx --disk-store=DEFAULT* > > *I think you need to restart the server after that for the changes to take > effect.* > > I tried that too but same effect ☹ > > > > *Here is my initialization :* > > > > 1.Start locators (On three nodes) > > > > gfsh -e "start locator --name=$(hostname -s) --group=ksgroup > --enable-cluster-configuration=true --port=1234 --mcast-port=0 > --locators='${LLOCATORS}'" > > > > 2.Start servers (On all nodes) > > > > gfsh -e "start server --name=$(hostname -s)-srv --group=ksgroup > --use-cluster-configuration=true --mcast-port=0 > --locators='nx101c[1234],nx102a[1234],nx103b[1234]'" > > > > 3. Initialize cluster (From one locators node) > > > > gfsh -e "connect --locator='nx101c[1234],nc102a[1234],nx103b[1234]'" -e > "create disk-store --name pdx --allow-force-compaction=true > --auto-compact=true --compaction-threshold=50 --max-oplog-size=1024 > --queue-size=1000 --time-interval=1000 --write-buffer-size=32768 > --dir=/opt/app/geode/data/pdx --group=ksgroup" > > > > gfsh -e "connect --locator='nx101c[1234],nc102a[1234],nx103b[1234]'" -e > "create disk-store --name example --allow-force-compaction=true > --auto-compact=true --compaction-threshold=50 --max-oplog-size=1024 > --queue-size=1000 --time-interval=1000 --write-buffer-size=32768 > --dir=/opt/app/geode/data/example --group=ksgroup" > > > > gfsh -e "connect --locator='nx101c[1234],nc102a[1234],nx103b[1234]'" -e > "create region --if-not-exists --name=example > --type=PARTITION_REDUNDANT_PERSISTENT --disk-store=example > --redundant-copies=2" > > > > gfsh -e "connect --locator='nx101c[1234],nc102a[1234],nx103b[1234]'" -e > "configure pdx --disk-store=pdx --read-serialized=true" > > > > 4. Check (From one locators node) > > > > (1) Executing - connect --locator='nx101c[1234],nx102a[1234],nx103b[1234]' > > > > Connecting to Locator at [host=nx101c, port=1234] .. > > Connecting to Manager at [host=nx101c, port=1099] .. > > Successfully connected to: [host=nx101c, port=1099] > > > > > > (2) Executing - list members > > > > Name | Id > > ---------- | ------------------------------------------------ > > nx102a | 10.200.2.102(nx102a:32633:locator)<ec><v0>:41000 > > nx105a-srv | 10.200.2.105(nx105a-srv:21660)<v3>:41000 > > nx103b | 10.200.4.103(nx103b:26448:locator)<ec><v2>:41000 > > nx106b-srv | 10.200.4.106(nx106b-srv:21547)<v5>:41000 > > nx101c | 10.200.6.101(nx101c:26877:locator)<ec><v1>:41000 > > nx104c-srv | 10.200.6.104(nx104c-srv:21528)<v5>:41000 > > nx102a-srv | 10.200.2.102(nx102a-srv:330)<v3>:41001 > > nx103b-srv | 10.200.4.103(nx103b-srv:26605)<v6>:41001 > > nx101c-srv | 10.200.6.101(nx101c-srv:27039)<v4>:41001 > > > > > > (3) Executing - describe region --name=/ksdata > > > > .......................................................... > > Name : ksdata > > Data Policy : persistent partition > > Hosting Members : nx102a-srv > > nx106b-srv > > nx105a-srv > > nx101c-srv > > nx103b-srv > > nx104c-srv > > > > Non-Default Attributes Shared By Hosting Members > > > > Type | Name | Value > > --------- | ---------------- | -------------------- > > Region | data-policy | PERSISTENT_PARTITION > > | disk-store-name | ksdata > > | size | 0 > > Partition | redundant-copies | 2 > > > > > > > > (4) Executing - describe region --name=/example > > > > .......................................................... > > Name : example > > Data Policy : persistent partition > > Hosting Members : nx102a-srv > > nx106b-srv > > nx105a-srv > > nx101c-srv > > nx103b-srv > > nx104c-srv > > > > Non-Default Attributes Shared By Hosting Members > > > > Type | Name | Value > > --------- | ---------------- | -------------------- > > Region | data-policy | PERSISTENT_PARTITION > > | disk-store-name | example > > | size | 0 > > Partition | redundant-copies | 2 > > > > I think I missed something but still reading documentation I do not find > my error... > > > > Cordialement, > > > *— NOTE : n/a* > — > Gfi Informatique > *Philippe Cerou* > Architecte & Expert Système > GFI Production / Toulouse > philippe.cerou @gfi.fr > > — > > 1 Rond-point du Général Eisenhower, 31400 Toulouse > > Tél. : +33 (0)5.62.85.11.55 > Mob. : +33 (0)6.03.56.48.62 > *www.gfi.world* <http://www.gfi.world/> > > — > > [image: Facebook] <https://www.facebook.com/gfiinformatique> [image: > Twitter] <https://twitter.com/gfiinformatique> [image: Instagram] > <https://www.instagram.com/gfiinformatique/> [image: LinkedIn] > <https://www.linkedin.com/company/gfi-informatique> [image: YouTube] > <https://www.youtube.com/user/GFIinformatique> > — > [image: cid:image006.jpg@01D2F97F.AA6ABB50] <http://www.gfi.world/> > > > > >