Based on these feedback, could we do this instead? 1. creating non-proxy region: check to see if there is a non-proxy region with the same name on the entire cluster or not. If yes, abort the creation. 2. creating proxy region: check to see if there is any region with the same name on the group or not, if yes, abort the creation.
I think this would catch all cases. On Sat, Feb 3, 2018 at 12:01 AM, Swapnil Bawaskar <sbawas...@pivotal.io> wrote: > Sometimes PROXY regions are used just to pass messages between members. In > this use case, there are no regions that store data. Point 2 will break > this use case. > > On Fri, Feb 2, 2018 at 2:22 PM Sai Boorlagadda <sai.boorlaga...@gmail.com> > wrote: > >> +1 to the proposal with the modified rule and favoring region creation >> with shortcuts. >> >> On Fri, Feb 2, 2018 at 1:56 PM, Jinmei Liao <jil...@pivotal.io> wrote: >> >>> I think we allowed too many ways for the user to do the same thing again. >>> >>> if we put in this restriction, this command would fail and user has to >>> use PARTITION_PROXY type to create an accessor region, which is not a bad >>> thing after all. >>> >>> So now, the rule is: >>> >>> 1. when user creates a non-proxy region (no matter on what group, what >>> type), a region with the same name can not exist already in the cluster >>> 2. When user creates a proxy region, a region with the same name has to >>> exist on the cluster first. >>> >>> would this be a reasonable rule to enforce when creating regions using >>> gfsh? >>> >>> >>> On Feb 2, 2018 12:02 PM, "Sai Boorlagadda" <sai.boorlaga...@gmail.com> >>> wrote: >>> >>>> I dont think allowing *_PROXY types with same names is sufficient. >>>> Users can also create accessor regions by setting 'local-max-memory' for a >>>> partition region (though not allowed for a replicate). >>>> >>>> gfsh>create region --name=test --type=PARTITION --local-max-memory=0 >>>> Member | Status >>>> --------------- | ------------------------------------------ >>>> yell-gifted-cow | Region "/test" created on "server1" >>>> >>>> Here /test becomes an accessor region just like when created using the >>>> shortcut "PARTITION_PROXY". >>>> >>>> On Fri, Feb 2, 2018 at 11:46 AM, Jinmei Liao <jil...@pivotal.io> wrote: >>>> >>>>> Accessor region is probably a special case. Then can we add this >>>>> caviar then: "user can not create a region with the same name of a >>>>> different type except it's a proxy region"? >>>>> >>>>> On Fri, Feb 2, 2018 at 11:17 AM, Sai Boorlagadda < >>>>> sai.boorlaga...@gmail.com> wrote: >>>>> >>>>>> Agree with Dan. This is the only way I know that you can create >>>>>> accessor regions on peer members. >>>>>> >>>>>> On Fri, Feb 2, 2018 at 11:07 AM, Dan Smith <dsm...@pivotal.io> wrote: >>>>>> >>>>>>> Won't this break any use case were two members need to create the >>>>>>> same region with different attributes? For example someone might have >>>>>>> some >>>>>>> members that are empty accessors of a replicated region: >>>>>>> >>>>>>> //Host data on members in group1 >>>>>>> gfsh> create region --name=A --type=REPLICATE --group=group1 >>>>>>> >>>>>>> //Group2 just needs access to data in region A >>>>>>> gfsh> create region --name=A --type=REPLICATE_PROXY --group=group2 >>>>>>> >>>>>>> -Dan >>>>>>> >>>>>>> On Fri, Feb 2, 2018 at 10:19 AM, Jinmei Liao <jil...@pivotal.io> >>>>>>> wrote: >>>>>>> >>>>>>>> Currently creating region with the same name on different groups >>>>>>>> are allowed by gfsh. Checks are done further on the servers when >>>>>>>> creating >>>>>>>> the region to see if the region attributes clashes with any existing >>>>>>>> region, and the operation will fail if types are different. Here is an >>>>>>>> example about this current behavior: >>>>>>>> >>>>>>>> gfsh> create region --name=A --type=REPLICATE --group=group1 // >>>>>>>> success >>>>>>>> >>>>>>>> gfsh> create region --name=A --type=REPLICATE --group=group2 // >>>>>>>> success >>>>>>>> >>>>>>>> gfsh> create region --name=A --type=PARTITION --group=group2 >>>>>>>> --skip-if-exists // skipping >>>>>>>> >>>>>>>> Member | Status >>>>>>>> >>>>>>>> ------- | ----------------------------------------------- >>>>>>>> >>>>>>>> server2 | Skipping "server2". Region "/A" already exists. >>>>>>>> >>>>>>>> >>>>>>>> gfsh>create region --name=A --type=PARTITION --group=group3 >>>>>>>> --skip-if-exists // failure >>>>>>>> >>>>>>>> Member | Status >>>>>>>> >>>>>>>> ------- | ------------------------------ >>>>>>>> ------------------------------------------------------------ >>>>>>>> ------------------------------------------------------------ >>>>>>>> --------- >>>>>>>> >>>>>>>> server3 | ERROR: Cannot create PartitionedRegion /A because another >>>>>>>> cache (10.118.33.243(server2:43156)<v4>:1026) has the same region >>>>>>>> defined as a non PartitionedRegion. >>>>>>>> >>>>>>>> We would like to propose catching the name clash earlier in gfsh >>>>>>>> for the last command as well. Since regions are referred to by names >>>>>>>> in the >>>>>>>> entire cluster (no server grouping considered at all), when trying to >>>>>>>> create a region, we should check for name clash in the entire cluster, >>>>>>>> not >>>>>>>> just in the specified server group. If we make this change, the >>>>>>>> behavior >>>>>>>> would be like this: >>>>>>>> >>>>>>>> gfsh> create region --name=A --type=REPLICATE --group=group1 // >>>>>>>> success >>>>>>>> >>>>>>>> gfsh> create region --name=A --type=REPLICATE --group=group2 // >>>>>>>> Error >>>>>>>> >>>>>>>> ERROR: Region "/A" already exists. >>>>>>>> >>>>>>>> >>>>>>>> gfsh> create region --name=A --type=REPLICATE --group=group2 >>>>>>>> --skip-if-exists // skipping >>>>>>>> >>>>>>>> Skipping: Region "/A" already exists. >>>>>>>> >>>>>>>> gfsh> create region --name=A --type=PARTITION --group=group2 >>>>>>>> --skip-if-exists >>>>>>>> >>>>>>>> Skipping. Region "/A" already exists. >>>>>>>> >>>>>>>> gfsh> create region --name=A --type=PARTITION --group=group3 >>>>>>>> --skip-if-exists >>>>>>>> Skipping. Region "/A" already exists. >>>>>>>> >>>>>>>> >>>>>>>> Basically, the name clash check is on the entire cluster, not just >>>>>>>> on one specific server. This would lead to some change in script >>>>>>>> behavior, >>>>>>>> but keep the command simple and consistent. >>>>>>>> >>>>>>>> Any feedback is welcome. >>>>>>>> >>>>>>>> Cheers >>>>>>>> >>>>>>>> Jinmei >>>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Cheers >>>>> >>>>> Jinmei >>>>> >>>> >>>> >> -- Cheers Jinmei