You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by je...@apache.org on 2018/01/26 17:58:33 UTC
[geode] branch develop updated: GEODE-4354: Add --if-not-exists
option to create region (#1328)
This is an automated email from the ASF dual-hosted git repository.
jensdeppe pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new e63152a GEODE-4354: Add --if-not-exists option to create region (#1328)
e63152a is described below
commit e63152ac0c2bb33a53897a26cb851ce16cda26ba
Author: Jens Deppe <jd...@pivotal.io>
AuthorDate: Fri Jan 26 09:58:30 2018 -0800
GEODE-4354: Add --if-not-exists option to create region (#1328)
- This supercedes and deprecates --skip-if-exists
---
.../internal/cli/commands/CreateRegionCommand.java | 5 ++++-
.../internal/cli/functions/RegionCreateFunction.java | 2 +-
.../internal/cli/functions/RegionFunctionArgs.java | 12 ++++++------
.../geode/management/internal/cli/i18n/CliStrings.java | 3 +++
.../org/apache/geode/redis/internal/RegionProvider.java | 8 ++++----
.../internal/cli/GfshParserAutoCompletionTest.java | 2 +-
.../commands/CreateRegionCommandIntegrationTest.java | 17 +++++++++++++++++
.../internal/cli/commands/CreateRegionCommandTest.java | 2 +-
8 files changed, 37 insertions(+), 14 deletions(-)
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommand.java
index 04e72c7..c3b6aa5 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommand.java
@@ -79,6 +79,9 @@ public class CreateRegionCommand implements GfshCommand {
@CliOption(key = CliStrings.CREATE_REGION__SKIPIFEXISTS, specifiedDefaultValue = "true",
unspecifiedDefaultValue = "false",
help = CliStrings.CREATE_REGION__SKIPIFEXISTS__HELP) boolean skipIfExists,
+ @CliOption(key = CliStrings.CREATE_REGION__IFNOTEXISTS, specifiedDefaultValue = "true",
+ unspecifiedDefaultValue = "false",
+ help = CliStrings.CREATE_REGION__IFNOTEXISTS__HELP) boolean ifNotExists,
// the following should all be in alphabetical order according to
// their key string
@@ -192,7 +195,7 @@ public class CreateRegionCommand implements GfshCommand {
// creating the RegionFunctionArgs
RegionFunctionArgs functionArgs = new RegionFunctionArgs();
functionArgs.setRegionPath(regionPath);
- functionArgs.setSkipIfExists(skipIfExists);
+ functionArgs.setIfNotExists(ifNotExists || skipIfExists);
functionArgs.setKeyConstraint(keyConstraint);
functionArgs.setValueConstraint(valueConstraint);
functionArgs.setStatisticsEnabled(statisticsEnabled);
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java
index 0901a93..3c032da 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionCreateFunction.java
@@ -84,7 +84,7 @@ public class RegionCreateFunction implements Function, InternalEntity {
RegionFunctionArgs regionCreateArgs = (RegionFunctionArgs) context.getArguments();
- if (regionCreateArgs.isSkipIfExists()) {
+ if (regionCreateArgs.isIfNotExists()) {
Region<Object, Object> region = cache.getRegion(regionCreateArgs.getRegionPath());
if (region != null) {
resultSender.lastResult(new CliFunctionResult(memberNameOrId, true,
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionFunctionArgs.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionFunctionArgs.java
index cec4cba..1b2bf5b 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionFunctionArgs.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/RegionFunctionArgs.java
@@ -44,7 +44,7 @@ public class RegionFunctionArgs implements Serializable {
private String regionPath;
private RegionShortcut regionShortcut;
private String templateRegion;
- private boolean skipIfExists;
+ private boolean ifNotExists;
private String keyConstraint;
private String valueConstraint;
private Boolean statisticsEnabled;
@@ -89,8 +89,8 @@ public class RegionFunctionArgs implements Serializable {
}
- public void setSkipIfExists(boolean skipIfExists) {
- this.skipIfExists = skipIfExists;
+ public void setIfNotExists(boolean ifNotExists) {
+ this.ifNotExists = ifNotExists;
}
public void setKeyConstraint(String keyConstraint) {
@@ -251,10 +251,10 @@ public class RegionFunctionArgs implements Serializable {
}
/**
- * @return the skipIfExists
+ * @return the ifNotExists
*/
- public Boolean isSkipIfExists() {
- return this.skipIfExists;
+ public Boolean isIfNotExists() {
+ return this.ifNotExists;
}
/**
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/i18n/CliStrings.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/i18n/CliStrings.java
index 306f32e..88db829 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/i18n/CliStrings.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/i18n/CliStrings.java
@@ -821,6 +821,9 @@ public class CliStrings {
"Name/Path of the region whose attributes should be duplicated when creating this region.";
public static final String CREATE_REGION__SKIPIFEXISTS = "skip-if-exists";
public static final String CREATE_REGION__SKIPIFEXISTS__HELP =
+ "(Deprecated: Use --if-not-exists) Skip region creation if the region already exists.";
+ public static final String CREATE_REGION__IFNOTEXISTS = "if-not-exists";
+ public static final String CREATE_REGION__IFNOTEXISTS__HELP =
"Skip region creation if the region already exists.";
public static final String CREATE_REGION__KEYCONSTRAINT = "key-constraint";
public static final String CREATE_REGION__KEYCONSTRAINT__HELP =
diff --git a/geode-core/src/main/java/org/apache/geode/redis/internal/RegionProvider.java b/geode-core/src/main/java/org/apache/geode/redis/internal/RegionProvider.java
index 4749251..de9f109 100644
--- a/geode-core/src/main/java/org/apache/geode/redis/internal/RegionProvider.java
+++ b/geode-core/src/main/java/org/apache/geode/redis/internal/RegionProvider.java
@@ -399,10 +399,10 @@ public class RegionProvider implements Closeable {
if (r != null)
return r;
do {
- Result result = createRegionCmd.createRegion(key, defaultRegionType, null, null, true, null,
- null, null, null, null, null, null, null, false, false, true, false, false, false, true,
- null, null, null, null, null, null, null, null, null, null, null, false, null, null, null,
- null, null, null, null, null, null, null, null);
+ Result result = createRegionCmd.createRegion(key, defaultRegionType, null, null, true, true,
+ null, null, null, null, null, null, null, null, false, false, true, false, false, false,
+ true, null, null, null, null, null, null, null, null, null, null, null, false, null, null,
+ null, null, null, null, null, null, null, null, null);
r = cache.getRegion(key);
if (result.getStatus() == Status.ERROR && r == null) {
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserAutoCompletionTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserAutoCompletionTest.java
index 86da02b..b460a84 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserAutoCompletionTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/GfshParserAutoCompletionTest.java
@@ -246,7 +246,7 @@ public class GfshParserAutoCompletionTest {
public void testCompletWithRegionTypeWithSpace() throws Exception {
buffer = "create region --name=test --type=REPLICATE ";
candidate = parser.complete(buffer);
- assertThat(candidate.size()).isEqualTo(42);
+ assertThat(candidate.size()).isEqualTo(43);
assertThat(candidate.getFirstCandidate()).isEqualTo(buffer + "--async-event-queue-id");
}
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommandIntegrationTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommandIntegrationTest.java
index de80f75..210b7ee 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommandIntegrationTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommandIntegrationTest.java
@@ -161,6 +161,23 @@ public class CreateRegionCommandIntegrationTest {
}
@Test
+ public void ifNotExistsIsIdempotent() throws Exception {
+ gfsh.executeAndAssertThat(
+ "create region --if-not-exists --type=PARTITION --name=/FOO --local-max-memory=0")
+ .statusIsSuccess().containsOutput("Region \"/FOO\" created");
+
+ gfsh.executeAndAssertThat(
+ "create region --skip-if-exists --type=PARTITION --name=/FOO --local-max-memory=0")
+ .statusIsSuccess().containsOutput("Region \"/FOO\" already exists.");
+
+ gfsh.executeAndAssertThat(
+ "create region --if-not-exists --type=PARTITION --name=/FOO --local-max-memory=0")
+ .statusIsSuccess().containsOutput("Region \"/FOO\" already exists.");
+
+ gfsh.executeAndAssertThat("destroy region --name=/FOO").statusIsSuccess();
+ }
+
+ @Test
public void invalidCacheListener() throws Exception {
gfsh.executeAndAssertThat("create region --name=/FOO --type=REPLICATE --cache-listener=abc-def")
.statusIsError().containsOutput("Specify a valid class name for cache-listener");
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommandTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommandTest.java
index 4b360d4..e937673 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommandTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/CreateRegionCommandTest.java
@@ -157,7 +157,7 @@ public class CreateRegionCommandTest {
assertThat(args.getRegionPath()).isEqualTo("/A");
assertThat(args.getRegionShortcut()).isEqualTo(RegionShortcut.REPLICATE);
assertThat(args.getTemplateRegion()).isNull();
- assertThat(args.isSkipIfExists()).isFalse();
+ assertThat(args.isIfNotExists()).isFalse();
assertThat(args.getKeyConstraint()).isNull();
assertThat(args.getValueConstraint()).isNull();
assertThat(args.isStatisticsEnabled()).isNull();
--
To stop receiving notification emails like this one, please contact
jensdeppe@apache.org.