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

Reply via email to