[ 
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)

Reply via email to