Juan Ramos created GEODE-8079: --------------------------------- Summary: AttributesMutator Should Validate AsyncEventQueue/GatewaySender Type Key: GEODE-8079 URL: https://issues.apache.org/jira/browse/GEODE-8079 Project: Geode Issue Type: Bug Components: configuration, gfsh, wan Reporter: Juan Ramos
By design, a parallel {{gateway-sender}} can't be attached to a {{REPLICATE}} region. While working on on GEODE-8029 I've found that the above fact is correctly validated when creating or initialising the region, but totally ignored when updating the region through the {{AttributesMutator}} class. Altering a {{REPLICATE}} region to dispatch events through a parallel {{gateway-sender}} results in cryptic errors while putting entries into the region afterwards: {noformat} [vm1] [warn 2020/05/06 10:34:09.638 IST <RMI TCP Connection(1)-127.0.0.1> tid=0x13] GatewaySender: Not queuing the event GatewaySenderEventImpl[id=EventID[id=18 bytes;threadID=0x10062|2;sequenceID=91;bucketId=98];action=0;operation=CREATE;region=/TestRegion;key=Key90;value=Value90;valueIsObject=1;numberOfParts=9;callbackArgument=GatewaySenderEventCallbackArgument [originalCallbackArg=null;originatingSenderId=1;recipientGatewayReceivers={2}];possibleDuplicate=false;creationTime=1588757649638;shadowKey=-1;timeStamp=1588757649638;acked=false;dispatched=false;bucketId=98;isConcurrencyConflict=false], as the region for which this event originated is not yet configured in the GatewaySender [vm1] [warn 2020/05/06 10:34:09.638 IST <RMI TCP Connection(1)-127.0.0.1> tid=0x13] GatewaySender: Not queuing the event GatewaySenderEventImpl[id=EventID[id=18 bytes;threadID=0x10063|2;sequenceID=92;bucketId=99];action=0;operation=CREATE;region=/TestRegion;key=Key91;value=Value91;valueIsObject=1;numberOfParts=9;callbackArgument=GatewaySenderEventCallbackArgument [originalCallbackArg=null;originatingSenderId=1;recipientGatewayReceivers={2}];possibleDuplicate=false;creationTime=1588757649638;shadowKey=-1;timeStamp=1588757649638;acked=false;dispatched=false;bucketId=99;isConcurrencyConflict=false], as the region for which this event originated is not yet configured in the GatewaySender [vm1] [warn 2020/05/06 10:34:09.639 IST <RMI TCP Connection(1)-127.0.0.1> tid=0x13] GatewaySender: Not queuing the event GatewaySenderEventImpl[id=EventID[id=18 bytes;threadID=0x10064|2;sequenceID=93;bucketId=100];action=0;operation=CREATE;region=/TestRegion;key=Key92;value=Value92;valueIsObject=1;numberOfParts=9;callbackArgument=GatewaySenderEventCallbackArgument [originalCallbackArg=null;originatingSenderId=1;recipientGatewayReceivers={2}];possibleDuplicate=false;creationTime=1588757649638;shadowKey=-1;timeStamp=1588757649638;acked=false;dispatched=false;bucketId=100;isConcurrencyConflict=false], as the region for which this event originated is not yet configured in the GatewaySender [vm1] [warn 2020/05/06 10:34:09.639 IST <RMI TCP Connection(1)-127.0.0.1> tid=0x13] GatewaySender: Not queuing the event GatewaySenderEventImpl[id=EventID[id=18 bytes;threadID=0x10065|2;sequenceID=94;bucketId=101];action=0;operation=CREATE;region=/TestRegion;key=Key93;value=Value93;valueIsObject=1;numberOfParts=9;callbackArgument=GatewaySenderEventCallbackArgument [originalCallbackArg=null;originatingSenderId=1;recipientGatewayReceivers={2}];possibleDuplicate=false;creationTime=1588757649639;shadowKey=-1;timeStamp=1588757649639;acked=false;dispatched=false;bucketId=101;isConcurrencyConflict=false], as the region for which this event originated is not yet configured in the GatewaySender {noformat} When done from {{GFSH}}, on the other hand, the server doesn't even start up after altering the region as the {{cluster-configuration}} is invalid: {noformat} gfsh -e "connect" -e "create region --name=TestRegion --type=REPLICATE" Member | Status | Message --------------- | ------ | ------------------------------------------------- cluster1-server | OK | Region "/TestRegion" created on "cluster1-server" Cluster configuration for group 'cluster' is updated. gfsh -e "connect" -e "create gateway-sender --id=MyGateway --remote-distributed-system-id=2 --parallel=true" Member | Status | Message --------------- | ------ | ------------------------------------------------------ cluster1-server | OK | GatewaySender "MyGateway" created on "cluster1-server" Cluster configuration for group 'cluster' is updated. gfsh -e "connect" -e "alter region --name=/TestRegion -–gateway-sender-id=MyGateway" Member | Status | Message --------------- | ------ | ------------------------- cluster1-server | OK | Region TestRegion altered Cluster configuration for group 'cluster' is updated. ////// Restart Cluster [warn 2020/05/06 10:09:07.385 IST <main> tid=0x1] Initialization failed for Region /TestRegion org.apache.geode.internal.cache.wan.GatewaySenderConfigurationException: Parallel gateway sender MyGateway can not be used with replicated region /TestRegion at org.apache.geode.internal.cache.DistributedRegion.preInitialize(DistributedRegion.java:1035) at org.apache.geode.internal.cache.GemFireCacheImpl.createVMRegion(GemFireCacheImpl.java:2996) at org.apache.geode.internal.cache.GemFireCacheImpl.basicCreateRegion(GemFireCacheImpl.java:2891) 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:339) at org.apache.geode.internal.cache.GemFireCacheImpl.loadCacheXml(GemFireCacheImpl.java:4096) at org.apache.geode.internal.cache.ClusterConfigurationLoader.applyClusterXmlConfiguration(ClusterConfigurationLoader.java:208) at org.apache.geode.internal.cache.GemFireCacheImpl.applyJarAndXmlFromClusterConfig(GemFireCacheImpl.java:1409) 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:892) at org.apache.geode.distributed.ServerLauncher.start(ServerLauncher.java:807) at org.apache.geode.distributed.ServerLauncher.run(ServerLauncher.java:737) at org.apache.geode.distributed.ServerLauncher.main(ServerLauncher.java:256) {noformat} -- This message was sent by Atlassian Jira (v8.3.4#803005)