Hi devs,

just a kind reminder. We would be really grateful if you could take look at question in below mail.

BRs,

Jakov

On 06. 07. 2020. 15:50, Jakov Varenina wrote:
Hi all,


We are trying to setup non-persistent parallel gateway sender (‘sender’) on a non-persistent  partitioned region (‘part_a’). This works OK. But when this same region ‘part_a’ is colocated with another persistent region (‘_part_hidden’),  Geode throws an exception:

Exception in thread "main" org.apache.geode.internal.cache.wan.GatewaySenderException: Non persistent gateway sender sender can not be attached to persistent region /_part_hidden         at org.apache.geode.internal.cache.wan.parallel.ParallelGatewaySenderQueue.addShadowPartitionedRegionForUserPR(ParallelGatewaySenderQueue.java:461)         at org.apache.geode.internal.cache.wan.parallel.ParallelGatewaySenderQueue.addShadowPartitionedRegionForUserPR(ParallelGatewaySenderQueue.java:451)         at org.apache.geode.internal.cache.wan.parallel.ParallelGatewaySenderEventProcessor.addShadowPartitionedRegionForUserPR(ParallelGatewaySenderEventProcessor.java:191)         at org.apache.geode.internal.cache.wan.parallel.ConcurrentParallelGatewaySenderQueue.addShadowPartitionedRegionForUserPR(ConcurrentParallelGatewaySenderQueue.java:177)         at org.apache.geode.internal.cache.PartitionedRegion.postCreateRegion(PartitionedRegion.java:1174)         at org.apache.geode.internal.cache.GemFireCacheImpl.createVMRegion(GemFireCacheImpl.java:3010)         at org.apache.geode.internal.cache.GemFireCacheImpl.basicCreateRegion(GemFireCacheImpl.java:2869)         at org.apache.geode.internal.cache.xmlcache.RegionCreation.createRoot(RegionCreation.java:237)         at org.apache.geode.internal.cache.xmlcache.CacheCreation.initializeRegions(CacheCreation.java:658)         at org.apache.geode.internal.cache.xmlcache.CacheCreation.create(CacheCreation.java:592)         at org.apache.geode.internal.cache.xmlcache.CacheXmlParser.create(CacheXmlParser.java:338)         at org.apache.geode.internal.cache.GemFireCacheImpl.loadCacheXml(GemFireCacheImpl.java:4081)         at org.apache.geode.internal.cache.GemFireCacheImpl.initializeDeclarativeCache(GemFireCacheImpl.java:1535)         at org.apache.geode.internal.cache.GemFireCacheImpl.initialize(GemFireCacheImpl.java:1374)         at org.apache.geode.internal.cache.InternalCacheBuilder.create(InternalCacheBuilder.java:191)         at org.apache.geode.internal.cache.InternalCacheBuilder.create(InternalCacheBuilder.java:158)         at org.apache.geode.cache.CacheFactory.create(CacheFactory.java:142)         at org.apache.geode.distributed.internal.DefaultServerLauncherCacheProvider.createCache(DefaultServerLauncherCacheProvider.java:52)         at org.apache.geode.distributed.ServerLauncher.createCache(ServerLauncher.java:894)         at org.apache.geode.distributed.ServerLauncher.start(ServerLauncher.java:809)         at org.apache.geode.distributed.ServerLauncher.run(ServerLauncher.java:739)         at org.apache.geode.distributed.ServerLauncher.main(ServerLauncher.java:256)


This is cache.xml used:

<?xml version="1.0" encoding="UTF-8"?><cache xmlns="http://geode.apache.org/schema/cache";
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
       xsi:schemaLocation="http://geode.apache.org/schema/cache http://geode.apache.org/schema/cache/cache-1.0.xsd";
       version="1.0"
       copy-on-read="true">
   <!-- Topology information fragment  -->
   <gateway-sender id="sender"
                   parallel="true"
                   enable-persistence="false"
                   remote-distributed-system-id="4"/>
   <gateway-sender id="sender_persistent"
                   parallel="true"
                   enable-persistence="true"
                   remote-distributed-system-id="4"/>
   <pdx read-serialized="true" persistent="true" />
   <region name="_part_hidden" refid="PARTITION_REDUNDANT_PERSISTENT">
      <region-attributes>
         <partition-attributes redundant-copies="1">
           <partition-resolver>
<class-name>org.apache.geode.cache.util.StringPrefixPartitionResolver
             </class-name>
           </partition-resolver>
         </partition-attributes>
      </region-attributes>
   </region>
   <region name="part_a" refid="PARTITION_REDUNDANT">
      <region-attributes gateway-sender-ids="sender" >
         <partition-attributes colocated-with="_part_hidden" redundant-copies="1">
           <partition-resolver>
<class-name>org.apache.geode.cache.util.StringPrefixPartitionResolver
             </class-name>
           </partition-resolver>
         </partition-attributes>
      </region-attributes>
   </region>
   <region name="part_b" refid="PARTITION_REDUNDANT_PERSISTENT">
      <region-attributes gateway-sender-ids="sender_persistent">
         <partition-attributes colocated-with="_part_hidden" redundant-copies="1">
           <partition-resolver>
<class-name>org.apache.geode.cache.util.StringPrefixPartitionResolver
             </class-name>
           </partition-resolver>
         </partition-attributes>
      </region-attributes>
   </region>
</cache>


There is nothing explicitly said about this in documentation, and It is not clear why this is not allowed. Non-persistent parallel gateway sender is attached only to non-persistent  region ‘part_a’ (and not to persistent  region ‘_part_hidden’) .

Why is this not allowed by Geode? Is there any way around this issue?

Geode version: 1.12, 1.11

BRs,

Jakov

Reply via email to