Yes, you can't have a single region pointing at 2 pools. What I posted is
the way I've done it in the past. I just tried it, and it still works.
Maybe if you post your full code, I can take a look.

Thanks,
Barry Oglesby



On Tue, May 5, 2020 at 10:19 AM aashish choudhary <
[email protected]> wrote:

> Hi Barry,
>
> Thanks for the response.
>
> I am actually calling region.close() which I believe calls localDestroyRegion
> only. The problem is region names are same in both cluster so do how do I
> close region of cluster before switching to another cluster. I just want to
> switch pools based upon my use case at run-time.
>
> With best regards,
> Ashish
>
> On Tue, May 5, 2020, 10:25 PM Barry Oglesby <[email protected]> wrote:
>
>> Ashish,
>>
>> You're probably using region.destroyRegion to destroy the client region.
>> If so, that also destroys the region on the server.
>>
>> You should be able to use localDestroyRegion to just destroy the client
>> region like:
>>
>> // Get the region's key set using pool 1
>> Region pool11Region = createRegion(this.pool1.getName());
>> Set pool1Keys = pool1Region.keySetOnServer();
>> pool1Region.localDestroyRegion();
>>
>> // Get the region's key set using pool 2
>> Region pool2Region = createRegion(this.pool2.getName());
>> Set pool2Keys = pool2Region.keySetOnServer();
>> pool2Region.localDestroyRegion();
>>
>> The createRegion method is:
>>
>> private Region createRegion(String poolName) {
>>   return this.cache
>>     .createClientRegionFactory(ClientRegionShortcut.PROXY)
>>     .setPoolName(poolName)
>>     .create(this.regionName);
>> }
>>
>> Thanks,
>> Barry Oglesby
>>
>>
>>
>> On Tue, May 5, 2020 at 9:37 AM aashish choudhary <
>> [email protected]> wrote:
>>
>>> Hi,
>>>
>>> I am sort of trying to implement a failover/failback for geode client. I
>>> have followed the approach the mentioned in here
>>> <https://community.pivotal.io/s/article/Configure-client-to-use-several-clusters>.
>>> I understand it's for gemfire but sharing just for reference as the use
>>> case is same and will apply this for geode as well. I hope that's ok.
>>>
>>> This is what i am trying to do. Creating two pools but in my case i have
>>> same region names in both cluster A and B.
>>> ClientCache clientCache = new ClientCacheFactory().create();
>>>
>>> PoolFactory poolFactory = PoolManager.createFactory();
>>> poolFactory.addLocator("Locator1", 10334);
>>> poolFactory.addLocator("Locator2", 10334);
>>> poolFactory.create("A");
>>>
>>> poolFactory = PoolManager.createFactory();
>>> poolFactory.addLocator("Locator1", 10334);
>>> poolFactory.addLocator("Locator2", 10334);
>>> poolFactory.create("B");
>>>
>>> Region region11 = 
>>> clientCache.createClientRegionFactory(ClientRegionShortcut.PROXY)
>>>         .setPoolName("A")
>>>         .create("region1");
>>>
>>> Region region22 = 
>>> clientCache.createClientRegionFactory(ClientRegionShortcut.PROXY)
>>>         .setPoolName("A")
>>>         .create("region2");
>>>
>>>
>>>
>>> Region region33 = 
>>> clientCache.createClientRegionFactory(ClientRegionShortcut.PROXY)
>>>         .setPoolName("B")
>>>
>>>         .create("region1");
>>>
>>> Region region44 = 
>>> clientCache.createClientRegionFactory(ClientRegionShortcut.PROXY)
>>>         .setPoolName("B")
>>>
>>>         .create("region2");
>>>
>>> So If a client needs to connect to regions with the same name in two 
>>> different distributed systems then it must close or destroy the region and 
>>> recreate it with the changed pool configuration each time it wants to 
>>> change between two distributed systems.
>>>
>>> I am doing the same but getting region destroyed exception instead. I am 
>>> using geode java client not spring data geode.
>>>
>>> How to do this? Please help.
>>>
>>>
>>>
>>> With Best Regards,
>>> Ashish
>>>
>>

Reply via email to