John, I'll save my questions for your SDG talk. Thanks!
-Kirk On Mon, Jul 25, 2016 at 6:59 PM, John Blum <jb...@pivotal.io> wrote: > For *Spring (Data GemFire)* applications, I don't strictly refuse this > configuration, as it is a valid configuration. It's just *not* enabled by > *default* since most *Spring* configured members (GemFire peer cache) are > "applications" that use the GemFire components/objects (Cache, Regions, > etc) some unique way (such as in DAOs). > > However, if users are using SDG to strictly configure their GemFire Peer > Cache data nodes/cluster members over cache.xml, or even Cluster Config, > then it might be perfectly valid to allow them to enable "auto-reconnect" > since there's (possibly) no Cache/Region/etc references being injected > anywhere (as in the case when it is not an "application"). > > enable-cluster-configuration is less risky and works in harmony with > *Spring* config. Essentially, *Spring* config "augments" anything coming > from Cluster Config, to enable features/create components/objects in > GemFire specific to the application's needs. > > I just disable enable-cluster-configuration by default since our preference > would be to have users use *Spring* to configure the member. This will > become even more prevalent as *Spring Boot* auto-configuration gets applied > to GemFire applications using Spring (Data GemFire). > > ... > > I have a few surprises lined up in SDG that I can present on Wednesday if > anyone is interested; I think users will be ecstatic about what I am > planning in SD GemFire 1.9 and SD Geode 1.0.0.APACHE-GEODE-INCUBATING-M3. > I am excited to be working on it. > > In a nutshell... it will be the equivalent of the *Spring Boot* experience > (like, but not specifically the @SpringBootApplication, hint, hint) applied > to GemFire/Geode applications using SDG to get up and running quickly and > easily, with minimal fuss. > > -John > > > > On Mon, Jul 25, 2016 at 6:45 PM, Kirk Lund <kl...@pivotal.io> wrote: > > > It sounds like maybe we need to modify the docs to tell users to not > enable > > reconnect when configuring the Cache with Spring. > > > > Is there anything else we can do like detect this in some way and refuse > to > > allow the configuration to startup? > > > > -Kirk > > > > On Monday, July 25, 2016, Bruce Schuchardt <bschucha...@pivotal.io> > wrote: > > > > > But as John pointed out, you shouldn't use auto-reconnect with Spring. > > > Spring has injected references to the old cache and regions into > > > applications and they won't know about the new cache. Auto-reconnect > > > doesn't rebuild the old cache - it creates a new one with its own > > identity. > > > > > > Le 7/25/2016 à 2:34 PM, Barry Oglesby a écrit : > > > > > >> I see the difference in our tests. Juan is using spring to configure > the > > >> cache, not cache.xml. In my test, I used just cache.xml. I read in his > > bug > > >> "through spring or cache.xml", so I just did cache.xml, but its the > > spring > > >> part of that statement that is relevant. > > >> > > >> With spring config, the cache is not reloaded. When the server is > > started > > >> initially, the ServerLauncher startWithSpring method is invoked which > > uses > > >> the SpringContextBootstrappingInitializer to initialize the cache. > That > > >> doesn't happen on reconnect. Reconnect will save or reload the config > in > > >> one of two ways: > > >> > > >> - if use-cluster-configuration=false (in JGroupMembershipManager > > >> saveCacheXmlForReconnect) > > >> - if the cache-xml-file is set (in GemFireCacheImpl logCacheXML) > > >> > > >> Neither of these are true in the spring-only configuration, so nothing > > is > > >> reloaded. > > >> > > >> > > >> Thanks, > > >> Barry Oglesby > > >> > > >> > > >> On Mon, Jul 25, 2016 at 1:05 PM, Kirk Lund <kl...@pivotal.io> wrote: > > >> > > >> I wouldn't recommend using both together as this combo is completely > > >>> untested. Users who do this are literally the only folks who have > even > > >>> tried running this way. I recommend supporting only what we've > tested. > > >>> > > >>> -Kirk > > >>> > > >>> > > >>> On Mon, Jul 25, 2016 at 12:27 PM, Michael Stolz <mst...@pivotal.io> > > >>> wrote: > > >>> > > >>> There are still some things that can't be configured with cluster > > >>>> configuration service so the combination of > > >>>> cluster-configuration-service=true and cache.xml will have to be > > >>>> > > >>> supported > > >>> > > >>>> until such time as CCS is completed. > > >>>> > > >>>> > > >>>> > > >>>> -- > > >>>> Mike Stolz > > >>>> Principal Engineer, GemFire Product Manager > > >>>> Mobile: 631-835-4771 > > >>>> > > >>>> On Mon, Jul 25, 2016 at 11:55 AM, Barry Oglesby < > bogle...@pivotal.io> > > >>>> wrote: > > >>>> > > >>>> I'm not seeing this behavior in my tests. I have a cache.xml and > > >>>>> use-cluster-configuration=true. When the member recovers, I see the > > xml > > >>>>> being recreated. > > >>>>> > > >>>>> The GMSMembershipManager.saveCacheXmlForReconnect method is being > > >>>>> > > >>>> invoked > > >>> > > >>>> but short-circuiting because sharedConfigEnabled=true. > > >>>>> > > >>>>> But, the GemFireCacheImpl.initializeDeclarativeCache method is > > invoked > > >>>>> > > >>>> and > > >>>> > > >>>>> that recreates the cache. > > >>>>> > > >>>>> I see this logging from the ReconnectThread: > > >>>>> > > >>>>> [info 2016/07/25 11:33:08.831 PDT server <ReconnectThread> > tid=0x3e] > > >>>>> Received cluster configuration from the locator > > >>>>> > > >>>>> [info 2016/07/25 11:33:08.831 PDT server <ReconnectThread> > tid=0x3e] > > >>>>> Received an empty shared configuration > > >>>>> > > >>>>> [info 2016/07/25 11:33:08.831 PDT server <ReconnectThread> > tid=0x3e] > > >>>>> Initializing cache using "file:/.../config/gemfire-server.xml": > > >>>>> <?xml version="1.0" encoding="UTF-8"?> > > >>>>> <!DOCTYPE cache PUBLIC > > >>>>> "-//GemStone Systems, Inc.//GemFire Declarative Caching > 7.0//EN" > > >>>>> "http://www.gemstone.com/dtd/cache7_0.dtd"> > > >>>>> > > >>>>> <cache> > > >>>>> <cache-server port="0"/> > > >>>>> <region name="data" refid="PARTITION_REDUNDANT"/> > > >>>>> <function-service> > > >>>>> <function> > > >>>>> <class-name>MembershipCycleHealthFunction</class-name> > > >>>>> </function> > > >>>>> </function-service> > > >>>>> </cache> > > >>>>> > > >>>>> What exact configuration is being used that is failing? > > >>>>> > > >>>>> Thanks, > > >>>>> Barry Oglesby > > >>>>> > > >>>>> > > >>>>> On Mon, Jul 25, 2016 at 10:44 AM, Kirk Lund <kl...@pivotal.io> > > wrote: > > >>>>> > > >>>>> Below came to me via support engineer, and I'm trying to determine > > >>>>>> > > >>>>> what > > >>> > > >>>> the > > >>>>> > > >>>>>> correct behavior should be: > > >>>>>> > > >>>>>> "Let's assume that you're configuring your entire cache through > > >>>>>> > > >>>>> spring > > >>> > > >>>> or > > >>>> > > >>>>> cache.xml without using the cluster configuration service, and that > > >>>>>> > > >>>>> you're > > >>>>> > > >>>>>> using the default settings when starting the cluster (meaning > > >>>>>> "-Dgemfire.use-cluster-configuration=true"). Under these > > >>>>>> > > >>>>> circumstances, > > >>> > > >>>> if > > >>>>> > > >>>>>> a member is kicked out of the distributed system, it'll be useless > > >>>>>> > > >>>>> after > > >>>> > > >>>>> the auto reconnect feature kicks in because it detects that the > > >>>>>> > > >>>>> cluster > > >>> > > >>>> configuration is enabled and tries to recover the configuration from > > >>>>>> > > >>>>> it, > > >>>> > > >>>>> even when it's actually empty because it's not being used at all. > > >>>>>> > > >>>>>> According to the user guide we actually support this kind of setup > > >>>>>> > > >>>>> (cluster > > >>>>> > > >>>>>> configuration plus member group configuration plus individual > member > > >>>>>> configuration), but the actual source code used when reconnecting > > >>>>>> > > >>>>> doesn't > > >>>> > > >>>>> support it at all." > > >>>>>> > > >>>>>> Apparently use-cluster-configuration=true, but the user actually > > used > > >>>>>> cache.xml to configure the cache server. > > >>>>>> > > >>>>>> 1) I thought we were going to disallow mixing cluster config with > > old > > >>>>>> config in this way. > > >>>>>> > > >>>>>> 2) I would expect that starting a server with a cache.xml AND > > >>>>>> use-cluster-configuration=true > > >>>>>> should fail fast and not be allowed to start. > > >>>>>> > > >>>>>> 3) I would also expect that if a locator is configured with > > >>>>>> use-cluster-configuration=true > > >>>>>> then it should reject any cache servers that attempt to join the > > >>>>>> > > >>>>> cluster > > >>>> > > >>>>> that have use-cluster-configuration=false. > > >>>>>> > > >>>>>> I still need to find the relevant section in the user guide, but I > > >>>>>> > > >>>>> would > > >>>> > > >>>>> propose changing this to NOT allow cluster config to be used with > old > > >>>>>> config. This is untested and be unsupported. The documentation > > should > > >>>>>> > > >>>>> NOT > > >>>> > > >>>>> say this is ok to do. > > >>>>>> > > >>>>>> Thoughts? > > >>>>>> > > >>>>>> -Kirk > > >>>>>> > > >>>>>> > > > > > > > > > -- > -John > 503-504-8657 > john.blum10101 (skype) >