Anilkumar Gingade created GEODE-3174:
----------------------------------------
Summary: Use of multiple cache configuration (xml) can
alter/impact cache setting during restart.
Key: GEODE-3174
URL: https://issues.apache.org/jira/browse/GEODE-3174
Project: Geode
Issue Type: Bug
Components: configuration
Reporter: Anilkumar Gingade
When system is configured using multiple cache configuration xml, the cache
setting could differ during restart.
When a geode node is configured using, cluster configuration and its own
cache.xml; during re-start the cache.xml settings are applied only after
cluster-configuration xml is parsed which leads to cache getting
created/initialized using partial configuration details.
One of the problem encountered is with pdx persistent setting. The pdx
persistent setting was done using node's cache.xml. And persistent regions are
created using cluster configuration. When the node was re-started, the system
parses the cluster-configuration file, and while creating the persistent region
throws exception saying pdx is not persisted, as the pdx persistent setting is
defined in cache.xml; which is processed later.
While code walk through, noticed one more issue with pdx-type registry, which
could get created as non-persistent region when the node is re-started.
One solution would be to merge all the xml (cluster-configuration, server-group
and cache.xml) before cache creation is invoked.
Steps to reproduce:
Start locator.
Start server1 with its own cache.xml with pdx-persistance set (make sure
use-cluster configuration is set to true)
Start server2 with its own cache.xml with pdx-persistance set (make sure
use-cluster configuration is set to true)
create non-persistent-partition region. Add pdx entries to it.
create persistent-partition region.
stop server2
re-start server2
it fails with:
Exception in thread "main" 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:535)
at
org.apache.geode.pdx.internal.PeerTypeRegistration.creatingPersistentRegion(PeerTypeRegistration.java:483)
at
org.apache.geode.pdx.internal.TypeRegistry.creatingPersistentRegion(TypeRegistry.java:276)
at
org.apache.geode.internal.cache.LocalRegion.findDiskStore(LocalRegion.java:7800)
at
org.apache.geode.internal.cache.PartitionedRegion.findDiskStore(PartitionedRegion.java:9378)
at
org.apache.geode.internal.cache.LocalRegion.<init>(LocalRegion.java:600)
at
org.apache.geode.internal.cache.PartitionedRegion.<init>(PartitionedRegion.java:614)
at
org.apache.geode.internal.cache.GemFireCacheImpl.createVMRegion(GemFireCacheImpl.java:3260)
at
org.apache.geode.internal.cache.GemFireCacheImpl.basicCreateRegion(GemFireCacheImpl.java:3199)
at
org.apache.geode.internal.cache.xmlcache.RegionCreation.createRoot(RegionCreation.java:255)
at
org.apache.geode.internal.cache.xmlcache.CacheCreation.initializeRegions(CacheCreation.java:544)
at
org.apache.geode.internal.cache.xmlcache.CacheCreation.create(CacheCreation.java:495)
at
org.apache.geode.internal.cache.xmlcache.CacheXmlParser.create(CacheXmlParser.java:343)
at
org.apache.geode.internal.cache.GemFireCacheImpl.loadCacheXml(GemFireCacheImpl.java:4483)
at
org.apache.geode.internal.cache.ClusterConfigurationLoader.applyClusterXmlConfiguration(ClusterConfigurationLoader.java:129)
at
org.apache.geode.internal.cache.GemFireCacheImpl.initialize(GemFireCacheImpl.java:1245)
at
org.apache.geode.internal.cache.GemFireCacheImpl.basicCreate(GemFireCacheImpl.java:796)
at
org.apache.geode.internal.cache.GemFireCacheImpl.create(GemFireCacheImpl.java:783)
at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:179)
at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:219)
at
org.apache.geode.distributed.internal.DefaultServerLauncherCacheProvider.createCache(DefaultServerLauncherCacheProvider.java:52)
at
org.apache.geode.distributed.ServerLauncher.createCache(ServerLauncher.java:857)
at
org.apache.geode.distributed.ServerLauncher.start(ServerLauncher.java:769)
at
org.apache.geode.distributed.ServerLauncher.run(ServerLauncher.java:696)
at
org.apache.geode.distributed.ServerLauncher.main(ServerLauncher.java:228)
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)