With GemFire 9.4, using the cluster configuration service, configuring a cache node with a custom (non-default) PDX disk store in a local cache.xml file will cause the node to fail to come up. See the configuration and issue below:
: <disk-store name="pdxData"> <disk-dirs> <disk-dir>/path/to/pdx_data</disk-dir> </disk-dirs> </disk-store> <pdx read-serialized="true" persistent="true" disk-store-name="pdxData"> : will cause the node to fail to come up and give the following exception: Exception in thread "main" org.apache.geode.pdx.PdxInitializationException: Could not create pdx registry at org.apache.geode.pdx.internal.PeerTypeRegistration.initialize(PeerTypeRegistration.java:204) at org.apache.geode.pdx.internal.TypeRegistry.creatingDiskStore(TypeRegistry.java:275) at org.apache.geode.internal.cache.DiskStoreFactoryImpl.create(DiskStoreFactoryImpl.java:147) at org.apache.geode.internal.cache.xmlcache.CacheCreation.createDiskStore(CacheCreation.java:725) at org.apache.geode.internal.cache.xmlcache.CacheCreation.initializePdxDiskStore(CacheCreation.java:716) at org.apache.geode.internal.cache.xmlcache.CacheCreation.create(CacheCreation.java:477) at org.apache.geode.internal.cache.xmlcache.CacheXmlParser.create(CacheXmlParser.java:337) at org.apache.geode.internal.cache.GemFireCacheImpl.loadCacheXml(GemFireCacheImpl.java:4307) at org.apache.geode.internal.cache.GemFireCacheImpl.initializeDeclarativeCache(GemFireCacheImpl.java:1408) at org.apache.geode.internal.cache.GemFireCacheImpl.initialize(GemFireCacheImpl.java:1209) at org.apache.geode.internal.cache.GemFireCacheImpl.basicCreate(GemFireCacheImpl.java:789) at org.apache.geode.internal.cache.GemFireCacheImpl.create(GemFireCacheImpl.java:775) at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:177) at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:224) at org.apache.geode.distributed.internal.DefaultServerLauncherCacheProvider.createCache(DefaultServerLauncherCacheProvider.java:52) at org.apache.geode.distributed.ServerLauncher.createCache(ServerLauncher.java:844) at org.apache.geode.distributed.ServerLauncher.start(ServerLauncher.java:762) at org.apache.geode.distributed.ServerLauncher.run(ServerLauncher.java:692) at org.apache.geode.distributed.ServerLauncher.main(ServerLauncher.java:225) Caused by: org.apache.geode.cache.RegionExistsException: /PdxTypes at org.apache.geode.internal.cache.GemFireCacheImpl.createVMRegion(GemFireCacheImpl.java:3002) at org.apache.geode.pdx.internal.PeerTypeRegistration.initialize(PeerTypeRegistration.java:198) ... 18 more
This issue is a regression in the Cluster Configuration Service. It was introduced in the GemFire 9.4 with the addition of a new feature of Apache Geode described in GEODE-3875 .
This issue has been resolved in GemFire 9.5 with GEODE-4913 and does not occur in versions prior to GemFire 9.4.
If you cannot immediately upgrade to GemFire 9.5 (or newer), you have the following three options as workarounds to resolve this issue:
--J=-Dgemfire.enable-cluster-configuration=false
--J=-Dgemfire.use-cluster-configuration=false
In this case, you will not be able to reload any changes made to your servers via a gfsh command from the Cluster Configuration Service when restarting.
<pdx read-serialized="true" persistent="true">