You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "John Blum (JIRA)" <ji...@apache.org> on 2016/10/11 02:41:20 UTC
[jira] [Updated] (GEODE-1986) The Cluster Configuration Service
must absolutely not be required to run Geode.
[ https://issues.apache.org/jira/browse/GEODE-1986?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
John Blum updated GEODE-1986:
-----------------------------
Description:
A bug was introduced when the logic to fetch the Cluster Configuration meta-data from the Locator in the cluster by a member was broken out into it is own [class|https://github.com/apache/incubator-geode/blob/develop/geode-core/src/main/java/org/apache/geode/internal/cache/ClusterConfigurationLoader.java] causing the following issues...
1. First, and foremost, the _Cluster Configuration_ service is now, seemingly no longer *optional* (hence, _required_), which is both short sighted and too restrictive, and will break existing (embedded application) deployments, particularly in situations where GemFire config, and especially, _Gfsh_ were not used to configure the cluster, which will be true when users upgrade existing clusters based on an earlier versions of Geode (namely GemFire < v7.0) and as well as Spring applications.
This change is apparent from the removal of the [conditional check on the Geode System property (1)|https://github.com/apache/incubator-geode/blob/rel/v1.0.0-incubating.M3/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/GemFireCacheImpl.java#L956-L958], which is no longer present [here (2)|https://github.com/apache/incubator-geode/blob/develop/geode-core/src/main/java/org/apache/geode/internal/cache/ClusterConfigurationLoader.java#L184-L233] or possibly [here (3)|https://github.com/apache/incubator-geode/blob/develop/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java#L976-L981].
2. This does not work in the embedded Locator case. If a user configures a peer Cache using the following in his/her application...
{code:java}
... = new CacheFactory()
.set("name", "Example")
.set("start-locator", "localhost[10334]")
...
.create();
{code}
And another members joins, the logic in (2) above, will fail with...
{code:java}
Caused by: org.apache.geode.GemFireConfigException: cluster configuration service not available
at org.apache.geode.internal.cache.GemFireCacheImpl.requestSharedConfiguration(GemFireCacheImpl.java:1009)
at org.apache.geode.internal.cache.GemFireCacheImpl.initialize(GemFireCacheImpl.java:1135)
at org.apache.geode.internal.cache.GemFireCacheImpl.basicCreate(GemFireCacheImpl.java:771)
at org.apache.geode.internal.cache.GemFireCacheImpl.create(GemFireCacheImpl.java:758)
at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:181)
at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:231)
... 42 more
Caused by: org.apache.geode.internal.process.ClusterConfigurationNotAvailableException: Unable to retrieve cluster configuration from the locator.
at org.apache.geode.internal.cache.ClusterConfigurationLoader.requestConfigurationFromLocators(ClusterConfigurationLoader.java:229)
at org.apache.geode.internal.cache.GemFireCacheImpl.requestSharedConfiguration(GemFireCacheImpl.java:981)
... 47 more
{code}
was:
A bug was introduced when the logic to fetch the Cluster Configuration meta-data from the Locator in the cluster by a member was broken out into it is own [class|https://github.com/apache/incubator-geode/blob/develop/geode-core/src/main/java/org/apache/geode/internal/cache/ClusterConfigurationLoader.java] causing the following issues...
1. First, and foremost, the _Cluster Configuration_ service is now, seemingly no longer *optional* (hence, _required_), which is both short sighted and too restrictive, and will break existing (embedded application) deployments, particularly in situations where GemFire config, and especially, _Gfsh_ were not used to configure the cluster, which will be true when users upgrade existing clusters based on an earlier versions of Geode (namely GemFire < v7.0) and as well as Spring applications.
This change is apparent from the removal of the [conditional check on the Geode System property (1)|https://github.com/apache/incubator-geode/blob/rel/v1.0.0-incubating.M3/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/GemFireCacheImpl.java#L956-L958], which is no longer present [here (2)|https://github.com/apache/incubator-geode/blob/develop/geode-core/src/main/java/org/apache/geode/internal/cache/ClusterConfigurationLoader.java#L184-L233] or possibly [here (3)|https://github.com/apache/incubator-geode/blob/develop/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java#L976-L981].
2. This does not work in the embedded Locator case. If a user configures a peer Cache using the following in his/her application...
{code:java}
... = new CacheFactory()
.set("name", "Example")
.set("start-locator", "localhost[10334]")
...
.create();
{code}
And another members joins, the logic in (2) above, will fail with...
{code:java}
Caused by: org.apache.geode.GemFireConfigException: cluster configuration service not available
at org.apache.geode.internal.cache.GemFireCacheImpl.requestSharedConfiguration(GemFireCacheImpl.java:1009)
at org.apache.geode.internal.cache.GemFireCacheImpl.initialize(GemFireCacheImpl.java:1135)
at org.apache.geode.internal.cache.GemFireCacheImpl.basicCreate(GemFireCacheImpl.java:771)
at org.apache.geode.internal.cache.GemFireCacheImpl.create(GemFireCacheImpl.java:758)
at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:181)
at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:231)
at org.springframework.data.gemfire.CacheFactoryBean.createCache(CacheFactoryBean.java:354)
at org.springframework.data.gemfire.CacheFactoryBean.resolveCache(CacheFactoryBean.java:248)
at org.springframework.data.gemfire.CacheFactoryBean.init(CacheFactoryBean.java:189)
at org.springframework.data.gemfire.CacheFactoryBean.getObject(CacheFactoryBean.java:175)
at org.springframework.data.gemfire.CacheFactoryBean.getObject(CacheFactoryBean.java:87)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:168)
... 36 more
Caused by: org.apache.geode.internal.process.ClusterConfigurationNotAvailableException: Unable to retrieve cluster configuration from the locator.
at org.apache.geode.internal.cache.ClusterConfigurationLoader.requestConfigurationFromLocators(ClusterConfigurationLoader.java:229)
at org.apache.geode.internal.cache.GemFireCacheImpl.requestSharedConfiguration(GemFireCacheImpl.java:981)
... 47 more
{code}
> The Cluster Configuration Service must absolutely not be required to run Geode.
> -------------------------------------------------------------------------------
>
> Key: GEODE-1986
> URL: https://issues.apache.org/jira/browse/GEODE-1986
> Project: Geode
> Issue Type: Bug
> Components: configuration
> Reporter: John Blum
> Fix For: 1.0.0-incubating
>
>
> A bug was introduced when the logic to fetch the Cluster Configuration meta-data from the Locator in the cluster by a member was broken out into it is own [class|https://github.com/apache/incubator-geode/blob/develop/geode-core/src/main/java/org/apache/geode/internal/cache/ClusterConfigurationLoader.java] causing the following issues...
> 1. First, and foremost, the _Cluster Configuration_ service is now, seemingly no longer *optional* (hence, _required_), which is both short sighted and too restrictive, and will break existing (embedded application) deployments, particularly in situations where GemFire config, and especially, _Gfsh_ were not used to configure the cluster, which will be true when users upgrade existing clusters based on an earlier versions of Geode (namely GemFire < v7.0) and as well as Spring applications.
> This change is apparent from the removal of the [conditional check on the Geode System property (1)|https://github.com/apache/incubator-geode/blob/rel/v1.0.0-incubating.M3/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/GemFireCacheImpl.java#L956-L958], which is no longer present [here (2)|https://github.com/apache/incubator-geode/blob/develop/geode-core/src/main/java/org/apache/geode/internal/cache/ClusterConfigurationLoader.java#L184-L233] or possibly [here (3)|https://github.com/apache/incubator-geode/blob/develop/geode-core/src/main/java/org/apache/geode/internal/cache/GemFireCacheImpl.java#L976-L981].
> 2. This does not work in the embedded Locator case. If a user configures a peer Cache using the following in his/her application...
> {code:java}
> ... = new CacheFactory()
> .set("name", "Example")
> .set("start-locator", "localhost[10334]")
> ...
> .create();
> {code}
> And another members joins, the logic in (2) above, will fail with...
> {code:java}
> Caused by: org.apache.geode.GemFireConfigException: cluster configuration service not available
> at org.apache.geode.internal.cache.GemFireCacheImpl.requestSharedConfiguration(GemFireCacheImpl.java:1009)
> at org.apache.geode.internal.cache.GemFireCacheImpl.initialize(GemFireCacheImpl.java:1135)
> at org.apache.geode.internal.cache.GemFireCacheImpl.basicCreate(GemFireCacheImpl.java:771)
> at org.apache.geode.internal.cache.GemFireCacheImpl.create(GemFireCacheImpl.java:758)
> at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:181)
> at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:231)
> ... 42 more
> Caused by: org.apache.geode.internal.process.ClusterConfigurationNotAvailableException: Unable to retrieve cluster configuration from the locator.
> at org.apache.geode.internal.cache.ClusterConfigurationLoader.requestConfigurationFromLocators(ClusterConfigurationLoader.java:229)
> at org.apache.geode.internal.cache.GemFireCacheImpl.requestSharedConfiguration(GemFireCacheImpl.java:981)
> ... 47 more
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)