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/08/06 14:47:58 UTC
[geode] branch develop updated: GEODE-4858: Update *DiskStore
commands to use ResultModel and SingleGfshCommand (#1996)
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 8b9ebaa GEODE-4858: Update *DiskStore commands to use ResultModel and SingleGfshCommand (#1996)
8b9ebaa is described below
commit 8b9ebaa483f6d9f4f96354a1c0dafa472ce39e8c
Author: Jens Deppe <jd...@pivotal.io>
AuthorDate: Mon Aug 6 07:47:52 2018 -0700
GEODE-4858: Update *DiskStore commands to use ResultModel and SingleGfshCommand (#1996)
---
.../cli/commands/DiskStoreCommandsDUnitTest.java | 125 ++++++++++++++++++++-
.../geode/cache/configuration/DiskDirsType.java | 2 +-
.../geode/cache/configuration/DiskStoreType.java | 7 +-
.../internal/beans/DistributedSystemBridge.java | 5 +
.../cli/commands/AlterOfflineDiskStoreCommand.java | 36 ++----
.../cli/commands/BackupDiskStoreCommand.java | 43 ++++---
.../cli/commands/CompactDiskStoreCommand.java | 33 +++---
.../commands/CompactOfflineDiskStoreCommand.java | 90 +++++----------
.../cli/commands/CreateDiskStoreCommand.java | 67 ++++++++---
.../cli/commands/DescribeDiskStoreCommand.java | 40 ++++---
.../cli/commands/DestroyDiskStoreCommand.java | 30 ++---
.../commands/ExportOfflineDiskStoreCommand.java | 15 ++-
.../cli/commands/ListDiskStoresCommand.java | 23 ++--
.../commands/RevokeMissingDiskStoreCommand.java | 34 ++----
.../cli/commands/ShowMissingDiskStoreCommand.java | 90 ++++++---------
.../commands/UpgradeOfflineDiskStoreCommand.java | 76 +++----------
.../cli/commands/ValidateDiskStoreCommand.java | 62 ++++++----
.../cli/functions/CreateDiskStoreFunction.java | 57 ++--------
.../internal/cli/util/DiskStoreCompacter.java | 7 ++
.../internal/cli/util/DiskStoreUpgrader.java | 7 ++
.../internal/cli/util/DiskStoreValidater.java | 38 +++----
.../sanctioned-geode-core-serializables.txt | 1 +
22 files changed, 456 insertions(+), 432 deletions(-)
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/management/internal/cli/commands/DiskStoreCommandsDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/management/internal/cli/commands/DiskStoreCommandsDUnitTest.java
index 8319129..fc08858 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/management/internal/cli/commands/DiskStoreCommandsDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/management/internal/cli/commands/DiskStoreCommandsDUnitTest.java
@@ -32,11 +32,14 @@ import org.junit.rules.TemporaryFolder;
import org.apache.geode.cache.Cache;
import org.apache.geode.cache.Region;
+import org.apache.geode.cache.configuration.CacheConfig;
+import org.apache.geode.cache.configuration.DiskStoreType;
import org.apache.geode.distributed.Locator;
import org.apache.geode.distributed.internal.InternalConfigurationPersistenceService;
import org.apache.geode.distributed.internal.InternalLocator;
import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.internal.cache.SnapshotTestUtil;
+import org.apache.geode.management.cli.Result;
import org.apache.geode.management.internal.cli.result.CommandResult;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.dunit.rules.MemberVM;
@@ -139,7 +142,7 @@ public class DiskStoreCommandsDUnitTest {
}
@Test
- public void testDescribeOfflineDiskStoreCommand() throws Exception {
+ public void testValidateOfflineDiskStoreCommand() throws Exception {
MemberVM server1 = rule.startServerVM(0, x -> x.withJMXManager().withProperty("groups", GROUP));
gfsh.connectAndVerify(server1.getJmxPort(), GfshCommandRule.PortType.jmxManager);
@@ -198,9 +201,9 @@ public class DiskStoreCommandsDUnitTest {
boolean result = jmxManager.invoke(() -> {
InternalConfigurationPersistenceService sharedConfig =
((InternalLocator) Locator.getLocator()).getConfigurationPersistenceService();
- String xmlFromConfig;
- xmlFromConfig = sharedConfig.getConfiguration(GROUP).getCacheXmlContent();
- return xmlFromConfig.contains(DISKSTORE);
+ List<DiskStoreType> diskStores = sharedConfig.getCacheConfig(GROUP).getDiskStores();
+
+ return diskStores.size() == 1 && DISKSTORE.equals(diskStores.get(0).getName());
});
return result;
@@ -243,7 +246,6 @@ public class DiskStoreCommandsDUnitTest {
assertThat(diskStoreExistsInClusterConfig(locator)).isFalse();
}
-
@Test
public void testBackupDiskStore() throws Exception {
Properties props = new Properties();
@@ -282,6 +284,14 @@ public class DiskStoreCommandsDUnitTest {
gfsh.executeAndAssertThat(String.format("destroy disk-store --name=%s --if-exists", DISKSTORE))
.statusIsSuccess();
+
+ locator.invoke(() -> {
+ InternalConfigurationPersistenceService cc =
+ ClusterStartupRule.getLocator().getConfigurationPersistenceService();
+ CacheConfig config = cc.getCacheConfig("cluster");
+ assertThat(config.getDiskStores().size()).isEqualTo(0);
+ });
+
gfsh.executeAndAssertThat(String.format("destroy disk-store --name=%s --if-exists", DISKSTORE))
.statusIsSuccess();
}
@@ -319,4 +329,109 @@ public class DiskStoreCommandsDUnitTest {
assertThat(cmdResult.getMapFromSection("server-2").keySet()).contains("UUID", "Host",
"Directory");
}
+
+ @Test
+ public void testDescribeDiskStoreCommand() throws Exception {
+ MemberVM server1 = rule.startServerVM(0, x -> x.withJMXManager().withProperty("groups", GROUP));
+
+ gfsh.connectAndVerify(server1.getJmxPort(), GfshCommandRule.PortType.jmxManager);
+
+ createDiskStoreAndRegion(server1, 1);
+
+ server1.invoke(() -> {
+ Cache cache = ClusterStartupRule.getCache();
+ Region r = cache.getRegion(REGION_1);
+ r.put("A", "B");
+ });
+
+ CommandResult result = gfsh.executeCommand(
+ String.format("describe disk-store --member=%s --name=%s", server1.getName(), DISKSTORE));
+ assertThat(result.getStatus()).isEqualTo(Result.Status.OK);
+
+ Map<String, String> data =
+ result.getMapFromSection(DescribeDiskStoreCommand.DISK_STORE_SECTION);
+ assertThat(data.keySet()).contains("Disk Store Name", "Member ID", "Member Name",
+ "Allow Force Compaction", "Auto Compaction", "Compaction Threshold", "Max Oplog Size",
+ "Queue Size", "Time Interval", "Write Buffer Size", "Disk Usage Warning Percentage",
+ "Disk Usage Critical Percentage", "PDX Serialization Meta-Data Stored");
+
+ Map<String, List<String>> directories =
+ result.getMapFromTableContent(DescribeDiskStoreCommand.DISK_DIR_SECTION);
+ assertThat(directories.get("Disk Directory").size()).isEqualTo(1);
+
+ Map<String, List<String>> regions =
+ result.getMapFromTableContent(DescribeDiskStoreCommand.REGION_SECTION);
+ assertThat(regions.get("Region Path").size()).isEqualTo(1);
+ }
+
+ @Test
+ public void testUpgradeOfflineDiskStoreCommandFailsAsExpected() throws Exception {
+ MemberVM server1 = rule.startServerVM(0, x -> x.withJMXManager().withProperty("groups", GROUP));
+
+ gfsh.connectAndVerify(server1.getJmxPort(), GfshCommandRule.PortType.jmxManager);
+
+ createDiskStoreAndRegion(server1, 1);
+
+ server1.invoke(() -> {
+ Cache cache = ClusterStartupRule.getCache();
+ Region r = cache.getRegion(REGION_1);
+ r.put("A", "B");
+ });
+
+ // Should not be able to do this on a running system
+ String diskDirs = new File(server1.getWorkingDir(), DISKSTORE).getAbsolutePath();
+ gfsh.executeAndAssertThat(
+ String.format("upgrade offline-disk-store --name=%s --disk-dirs=%s", DISKSTORE, diskDirs))
+ .statusIsError().containsOutput("The disk is currently being used by another process");
+
+ server1.stop(false);
+
+ gfsh.executeAndAssertThat(
+ String.format("upgrade offline-disk-store --name=%s --disk-dirs=%s", DISKSTORE, diskDirs))
+ .statusIsError().containsOutput("This disk store is already at version");
+ }
+
+ @Test
+ public void revokingUnknownDiskStoreShowsErrorCorrectly() throws Exception {
+ Properties props = new Properties();
+ props.setProperty("groups", GROUP);
+
+ MemberVM locator = rule.startLocatorVM(0);
+ MemberVM server1 = rule.startServerVM(1, props, locator.getPort());
+
+ gfsh.connectAndVerify(locator);
+
+ gfsh.executeAndAssertThat("revoke missing-disk-store --id=unknown-diskstore")
+ .statusIsError().containsOutput("Unable to find missing disk store to revoke");
+ }
+
+ @Test
+ public void testAlterOfflineDiskStoreCommandFailsAsExpected() throws Exception {
+ MemberVM server1 = rule.startServerVM(0, x -> x.withJMXManager().withProperty("groups", GROUP));
+
+ gfsh.connectAndVerify(server1.getJmxPort(), GfshCommandRule.PortType.jmxManager);
+
+ createDiskStoreAndRegion(server1, 1);
+
+ server1.invoke(() -> {
+ Cache cache = ClusterStartupRule.getCache();
+ Region r = cache.getRegion(REGION_1);
+ r.put("A", "B");
+ });
+
+ String diskDirs = new File(server1.getWorkingDir(), DISKSTORE).getAbsolutePath();
+ gfsh.executeAndAssertThat(
+ String.format("alter disk-store --name=%s --region=%s --disk-dirs=%s --compressor=foo.Bar",
+ DISKSTORE, REGION_1, diskDirs))
+ .statusIsError().containsOutput("DISKSTORE: Could not lock");
+
+ server1.stop(false);
+ gfsh.disconnect();
+
+ gfsh.executeAndAssertThat(
+ String.format(
+ "alter disk-store --name=%s --region=INVALID --disk-dirs=%s --compressor=foo.Bar",
+ DISKSTORE, diskDirs))
+ .statusIsError().containsOutput("The disk store does not contain a region named: /INVALID");
+ }
}
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/DiskDirsType.java b/geode-core/src/main/java/org/apache/geode/cache/configuration/DiskDirsType.java
index 49d5729..817332d 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/configuration/DiskDirsType.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/configuration/DiskDirsType.java
@@ -89,7 +89,7 @@ public class DiskDirsType {
*/
public List<DiskDirType> getDiskDirs() {
if (diskDirs == null) {
- diskDirs = new ArrayList<DiskDirType>();
+ diskDirs = new ArrayList<>();
}
return this.diskDirs;
}
diff --git a/geode-core/src/main/java/org/apache/geode/cache/configuration/DiskStoreType.java b/geode-core/src/main/java/org/apache/geode/cache/configuration/DiskStoreType.java
index 0ecb168..6f30171 100644
--- a/geode-core/src/main/java/org/apache/geode/cache/configuration/DiskStoreType.java
+++ b/geode-core/src/main/java/org/apache/geode/cache/configuration/DiskStoreType.java
@@ -66,7 +66,7 @@ import org.apache.geode.annotations.Experimental;
@XmlType(name = "disk-store-type", namespace = "http://geode.apache.org/schema/cache",
propOrder = {"diskDirs"})
@Experimental
-public class DiskStoreType {
+public class DiskStoreType implements CacheElement {
@XmlElement(name = "disk-dirs", namespace = "http://geode.apache.org/schema/cache")
protected DiskDirsType diskDirs;
@@ -91,6 +91,11 @@ public class DiskStoreType {
@XmlAttribute(name = "disk-usage-critical-percentage")
protected String diskUsageCriticalPercentage;
+ @Override
+ public String getId() {
+ return getName();
+ }
+
/**
* Gets the value of the diskDirs property.
*
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/beans/DistributedSystemBridge.java b/geode-core/src/main/java/org/apache/geode/management/internal/beans/DistributedSystemBridge.java
index 2097726..ed22cb6 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/beans/DistributedSystemBridge.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/beans/DistributedSystemBridge.java
@@ -877,6 +877,11 @@ public class DistributedSystemBridge {
public PersistentMemberDetails[] listMissingDiskStores() {
PersistentMemberDetails[] missingDiskStores = null;
+ // No need to try and send anything if we're a Loner
+ if (dm.isLoner()) {
+ return missingDiskStores;
+ }
+
Set<PersistentID> persistentMemberSet = MissingPersistentIDsRequest.send(dm);
if (persistentMemberSet != null && persistentMemberSet.size() > 0) {
missingDiskStores = new PersistentMemberDetails[persistentMemberSet.size()];
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/AlterOfflineDiskStoreCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/AlterOfflineDiskStoreCommand.java
index 7819f00..a5e3570 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/AlterOfflineDiskStoreCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/AlterOfflineDiskStoreCommand.java
@@ -24,15 +24,13 @@ import org.apache.geode.cache.CacheExistsException;
import org.apache.geode.cache.Region;
import org.apache.geode.internal.cache.DiskStoreImpl;
import org.apache.geode.management.cli.CliMetaData;
-import org.apache.geode.management.cli.Result;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.geode.management.internal.cli.result.ErrorResultData;
-import org.apache.geode.management.internal.cli.result.ResultBuilder;
+import org.apache.geode.management.internal.cli.result.model.ResultModel;
public class AlterOfflineDiskStoreCommand extends InternalGfshCommand {
@CliCommand(value = CliStrings.ALTER_DISK_STORE, help = CliStrings.ALTER_DISK_STORE__HELP)
@CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GEODE_DISKSTORE})
- public Result alterOfflineDiskStore(
+ public ResultModel alterOfflineDiskStore(
@CliOption(key = CliStrings.ALTER_DISK_STORE__DISKSTORENAME, mandatory = true,
help = CliStrings.ALTER_DISK_STORE__DISKSTORENAME__HELP) String diskStoreName,
@CliOption(key = CliStrings.ALTER_DISK_STORE__REGIONNAME, mandatory = true,
@@ -61,8 +59,6 @@ public class AlterOfflineDiskStoreCommand extends InternalGfshCommand {
help = CliStrings.ALTER_DISK_STORE__REMOVE__HELP, specifiedDefaultValue = "true",
unspecifiedDefaultValue = "false") boolean remove) {
- Result result;
-
try {
File[] dirs = null;
@@ -74,7 +70,7 @@ public class AlterOfflineDiskStoreCommand extends InternalGfshCommand {
}
if (regionName.equals(Region.SEPARATOR)) {
- return ResultBuilder.createUserErrorResult(CliStrings.INVALID_REGION_NAME);
+ return ResultModel.createError(CliStrings.INVALID_REGION_NAME);
}
if ((lruEvictionAlgo != null) || (lruEvictionAction != null) || (lruEvictionLimit != null)
@@ -101,41 +97,31 @@ public class AlterOfflineDiskStoreCommand extends InternalGfshCommand {
initialCapacityString, loadFactorString, compressorClassName, statisticsEnabledString,
offHeapString, false);
- result = ResultBuilder.createInfoResult(resultMessage);
+ return ResultModel.createInfo(resultMessage);
} else {
- result = ResultBuilder.createParsingErrorResult(
+ return ResultModel.createCommandProcessingError(
"Cannot use the --remove=true parameter with any other parameters");
}
} else {
if (remove) {
DiskStoreImpl.destroyRegion(diskStoreName, dirs, "/" + regionName);
- result = ResultBuilder.createInfoResult("The region " + regionName
+ return ResultModel.createInfo("The region " + regionName
+ " was successfully removed from the disk store " + diskStoreName);
} else {
// Please provide an option
- result = ResultBuilder.createParsingErrorResult("Please provide a relevant parameter");
+ return ResultModel.createInfo("Please provide a relevant parameter");
}
}
// Catch the IllegalArgumentException thrown by the modifyDiskStore function and sent the
} catch (IllegalArgumentException e) {
- String message = "Please check the parameters";
- message += "\n" + e.getMessage();
- result = ResultBuilder.createGemFireErrorResult(message);
- } catch (IllegalStateException e) {
- result = ResultBuilder.createGemFireErrorResult(e.getMessage());
+ return ResultModel.createError("Please check the parameters. " + e.getMessage());
} catch (CacheExistsException e) {
// Indicates that the command is being used when a cache is open
- result = ResultBuilder.createGemFireErrorResult("Cannot execute "
- + CliStrings.ALTER_DISK_STORE + " when a cache exists (Offline command)");
+ return ResultModel.createError("Cannot execute " + CliStrings.ALTER_DISK_STORE
+ + " when a cache exists (Offline command)");
} catch (Exception e) {
- result = createErrorResult(e.getMessage());
+ return ResultModel.createError(e.getMessage());
}
- return result;
}
- private Result createErrorResult(String message) {
- ErrorResultData erd = ResultBuilder.createErrorResultData();
- erd.addLine(message);
- return ResultBuilder.buildResult(erd);
- }
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/BackupDiskStoreCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/BackupDiskStoreCommand.java
index 366d187..e4616f4 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/BackupDiskStoreCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/BackupDiskStoreCommand.java
@@ -28,15 +28,16 @@ import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.internal.cache.backup.BackupOperation;
import org.apache.geode.management.BackupStatus;
import org.apache.geode.management.cli.CliMetaData;
-import org.apache.geode.management.cli.Result;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.geode.management.internal.cli.result.CompositeResultData;
-import org.apache.geode.management.internal.cli.result.ResultBuilder;
-import org.apache.geode.management.internal.cli.result.TabularResultData;
+import org.apache.geode.management.internal.cli.result.model.ResultModel;
+import org.apache.geode.management.internal.cli.result.model.TabularResultModel;
import org.apache.geode.management.internal.security.ResourceOperation;
import org.apache.geode.security.ResourcePermission;
public class BackupDiskStoreCommand extends InternalGfshCommand {
+ public static final String BACKED_UP_DISKSTORES_SECTION = "backed-up-diskstores";
+ public static final String OFFLINE_DISKSTORES_SECTION = "offline-diskstores";
+
/**
* Internally, we also verify the resource operation permissions CLUSTER:WRITE:DISK if the region
* is persistent
@@ -45,7 +46,7 @@ public class BackupDiskStoreCommand extends InternalGfshCommand {
@CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DISKSTORE})
@ResourceOperation(resource = ResourcePermission.Resource.DATA,
operation = ResourcePermission.Operation.READ)
- public Result backupDiskStore(
+ public ResultModel backupDiskStore(
@CliOption(key = CliStrings.BACKUP_DISK_STORE__DISKDIRS,
help = CliStrings.BACKUP_DISK_STORE__DISKDIRS__HELP, mandatory = true) String targetDir,
@CliOption(key = CliStrings.BACKUP_DISK_STORE__BASELINEDIR,
@@ -53,7 +54,8 @@ public class BackupDiskStoreCommand extends InternalGfshCommand {
authorize(ResourcePermission.Resource.CLUSTER, ResourcePermission.Operation.WRITE,
ResourcePermission.Target.DISK);
- Result result;
+
+ ResultModel result = new ResultModel();
try {
InternalCache cache = (InternalCache) getCache();
DistributionManager dm = cache.getDistributionManager();
@@ -70,12 +72,10 @@ public class BackupDiskStoreCommand extends InternalGfshCommand {
backupStatus.getBackedUpDiskStores();
Set<DistributedMember> backedupMembers = backedupMemberDiskstoreMap.keySet();
- CompositeResultData crd = ResultBuilder.createCompositeResultData();
if (!backedupMembers.isEmpty()) {
- CompositeResultData.SectionResultData backedupDiskStoresSection = crd.addSection();
- backedupDiskStoresSection.setHeader(CliStrings.BACKUP_DISK_STORE_MSG_BACKED_UP_DISK_STORES);
- TabularResultData backedupDiskStoresTable = backedupDiskStoresSection.addTable();
+ TabularResultModel backedupDiskStoresTable = result.addTable(BACKED_UP_DISKSTORES_SECTION);
+ backedupDiskStoresTable.setHeader(CliStrings.BACKUP_DISK_STORE_MSG_BACKED_UP_DISK_STORES);
for (DistributedMember member : backedupMembers) {
Set<PersistentID> backedupDiskStores = backedupMemberDiskstoreMap.get(member);
@@ -103,17 +103,15 @@ public class BackupDiskStoreCommand extends InternalGfshCommand {
}
}
} else {
- CompositeResultData.SectionResultData noMembersBackedUp = crd.addSection();
- noMembersBackedUp.setHeader(CliStrings.BACKUP_DISK_STORE_MSG_NO_DISKSTORES_BACKED_UP);
+ result.addInfo().addLine(CliStrings.BACKUP_DISK_STORE_MSG_NO_DISKSTORES_BACKED_UP);
}
Set<PersistentID> offlineDiskStores = backupStatus.getOfflineDiskStores();
if (!offlineDiskStores.isEmpty()) {
- CompositeResultData.SectionResultData offlineDiskStoresSection = crd.addSection();
- TabularResultData offlineDiskStoresTable = offlineDiskStoresSection.addTable();
+ TabularResultModel offlineDiskStoresTable = result.addTable(OFFLINE_DISKSTORES_SECTION);
+ offlineDiskStoresTable.setHeader(CliStrings.BACKUP_DISK_STORE_MSG_OFFLINE_DISK_STORES);
- offlineDiskStoresSection.setHeader(CliStrings.BACKUP_DISK_STORE_MSG_OFFLINE_DISK_STORES);
for (PersistentID offlineDiskStore : offlineDiskStores) {
offlineDiskStoresTable.accumulate(CliStrings.BACKUP_DISK_STORE_MSG_UUID,
offlineDiskStore.getUUID().toString());
@@ -123,19 +121,18 @@ public class BackupDiskStoreCommand extends InternalGfshCommand {
offlineDiskStore.getDirectory());
}
}
- result = ResultBuilder.buildResult(crd);
} catch (Exception e) {
- result = ResultBuilder.createGemFireErrorResult(e.getMessage());
+ return ResultModel.createError(e.getMessage());
}
return result;
}
- private void writeToBackupDiskStoreTable(TabularResultData backedupDiskStoreTable,
- String memberId, String UUID, String host, String directory) {
- backedupDiskStoreTable.accumulate(CliStrings.BACKUP_DISK_STORE_MSG_MEMBER, memberId);
- backedupDiskStoreTable.accumulate(CliStrings.BACKUP_DISK_STORE_MSG_UUID, UUID);
- backedupDiskStoreTable.accumulate(CliStrings.BACKUP_DISK_STORE_MSG_DIRECTORY, directory);
- backedupDiskStoreTable.accumulate(CliStrings.BACKUP_DISK_STORE_MSG_HOST, host);
+ private void writeToBackupDiskStoreTable(TabularResultModel table, String memberId, String UUID,
+ String host, String directory) {
+ table.accumulate(CliStrings.BACKUP_DISK_STORE_MSG_MEMBER, memberId);
+ table.accumulate(CliStrings.BACKUP_DISK_STORE_MSG_UUID, UUID);
+ table.accumulate(CliStrings.BACKUP_DISK_STORE_MSG_DIRECTORY, directory);
+ table.accumulate(CliStrings.BACKUP_DISK_STORE_MSG_HOST, host);
}
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CompactDiskStoreCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CompactDiskStoreCommand.java
index 328fcb4..6330db7 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CompactDiskStoreCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CompactDiskStoreCommand.java
@@ -36,11 +36,10 @@ import org.apache.geode.management.DistributedSystemMXBean;
import org.apache.geode.management.ManagementService;
import org.apache.geode.management.cli.CliMetaData;
import org.apache.geode.management.cli.ConverterHint;
-import org.apache.geode.management.cli.Result;
import org.apache.geode.management.internal.cli.LogWrapper;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.geode.management.internal.cli.result.CompositeResultData;
-import org.apache.geode.management.internal.cli.result.ResultBuilder;
+import org.apache.geode.management.internal.cli.result.model.DataResultModel;
+import org.apache.geode.management.internal.cli.result.model.ResultModel;
import org.apache.geode.management.internal.messages.CompactRequest;
import org.apache.geode.management.internal.security.ResourceOperation;
import org.apache.geode.security.ResourcePermission;
@@ -50,18 +49,18 @@ public class CompactDiskStoreCommand extends InternalGfshCommand {
@CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DISKSTORE})
@ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
operation = ResourcePermission.Operation.MANAGE, target = ResourcePermission.Target.DISK)
- public Result compactDiskStore(
+ public ResultModel compactDiskStore(
@CliOption(key = CliStrings.COMPACT_DISK_STORE__NAME, mandatory = true,
optionContext = ConverterHint.DISKSTORE,
help = CliStrings.COMPACT_DISK_STORE__NAME__HELP) String diskStoreName,
@CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
help = CliStrings.COMPACT_DISK_STORE__GROUP__HELP) String[] groups) {
- Result result;
+ ResultModel result = new ResultModel();
try {
// disk store exists validation
if (!diskStoreExists(diskStoreName)) {
- result = ResultBuilder.createUserErrorResult(
+ return ResultModel.createError(
CliStrings.format(CliStrings.COMPACT_DISK_STORE__DISKSTORE_0_DOES_NOT_EXIST,
new Object[] {diskStoreName}));
} else {
@@ -97,7 +96,7 @@ public class CompactDiskStoreCommand extends InternalGfshCommand {
// allMembers should not be empty when groups are not specified - it'll
// have at least one member
if (allMembers.isEmpty()) {
- result = ResultBuilder.createUserErrorResult(
+ return ResultModel.createError(
CliStrings.format(CliStrings.COMPACT_DISK_STORE__NO_MEMBERS_FOUND_IN_SPECIFED_GROUP,
new Object[] {Arrays.toString(groups)}));
} else {
@@ -130,34 +129,30 @@ public class CompactDiskStoreCommand extends InternalGfshCommand {
// If compaction happened at all, then prepare the summary
if (overallCompactInfo != null && !overallCompactInfo.isEmpty()) {
- CompositeResultData compositeResultData = ResultBuilder.createCompositeResultData();
- CompositeResultData.SectionResultData section;
-
Set<Map.Entry<DistributedMember, PersistentID>> entries = overallCompactInfo.entrySet();
for (Map.Entry<DistributedMember, PersistentID> entry : entries) {
String memberId = entry.getKey().getName();
- section = compositeResultData.addSection(memberId);
- section.setHeader("On Member: " + memberId);
+ DataResultModel summary = result.addData(memberId);
+ summary.setHeader("On Member: " + memberId);
PersistentID persistentID = entry.getValue();
if (persistentID != null) {
- section.addData("UUID", persistentID.getUUID());
- section.addData("Host", persistentID.getHost().getHostName());
- section.addData("Directory", persistentID.getDirectory());
+ summary.addData("UUID", persistentID.getUUID());
+ summary.addData("Host", persistentID.getHost().getHostName());
+ summary.addData("Directory", persistentID.getDirectory());
}
}
- compositeResultData.setHeader("Compacted " + diskStoreName + groupInfo);
- result = ResultBuilder.buildResult(compositeResultData);
+ result.addInfo().addLine("Compacted " + diskStoreName + groupInfo);
} else {
- result = ResultBuilder.createInfoResult(
+ return ResultModel.createInfo(
CliStrings.COMPACT_DISK_STORE__COMPACTION_ATTEMPTED_BUT_NOTHING_TO_COMPACT);
}
} // all members' if
} // disk store exists' if
} catch (RuntimeException e) {
LogWrapper.getInstance(getCache()).info(e.getMessage(), e);
- result = ResultBuilder.createGemFireErrorResult(
+ return ResultModel.createError(
CliStrings.format(CliStrings.COMPACT_DISK_STORE__ERROR_WHILE_COMPACTING_REASON_0,
new Object[] {e.getMessage()}));
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CompactOfflineDiskStoreCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CompactOfflineDiskStoreCommand.java
index fbcce91..d70f4ed 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CompactOfflineDiskStoreCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CompactOfflineDiskStoreCommand.java
@@ -17,32 +17,29 @@ package org.apache.geode.management.internal.cli.commands;
import java.io.BufferedReader;
import java.io.File;
-import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.concurrent.TimeUnit;
import org.springframework.shell.core.annotation.CliCommand;
import org.springframework.shell.core.annotation.CliOption;
-import org.apache.geode.GemFireIOException;
-import org.apache.geode.internal.lang.StringUtils;
import org.apache.geode.management.cli.CliMetaData;
import org.apache.geode.management.cli.Result;
-import org.apache.geode.management.internal.cli.GfshParser;
import org.apache.geode.management.internal.cli.LogWrapper;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.geode.management.internal.cli.result.ResultBuilder;
-import org.apache.geode.management.internal.cli.shell.Gfsh;
+import org.apache.geode.management.internal.cli.result.model.InfoResultModel;
+import org.apache.geode.management.internal.cli.result.model.ResultModel;
import org.apache.geode.management.internal.cli.util.DiskStoreCompacter;
public class CompactOfflineDiskStoreCommand extends InternalGfshCommand {
@CliCommand(value = CliStrings.COMPACT_OFFLINE_DISK_STORE,
help = CliStrings.COMPACT_OFFLINE_DISK_STORE__HELP)
@CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GEODE_DISKSTORE})
- public Result compactOfflineDiskStore(
+ public ResultModel compactOfflineDiskStore(
@CliOption(key = CliStrings.COMPACT_OFFLINE_DISK_STORE__NAME, mandatory = true,
help = CliStrings.COMPACT_OFFLINE_DISK_STORE__NAME__HELP) String diskStoreName,
@CliOption(key = CliStrings.COMPACT_OFFLINE_DISK_STORE__DISKDIRS, mandatory = true,
@@ -52,13 +49,11 @@ public class CompactOfflineDiskStoreCommand extends InternalGfshCommand {
help = CliStrings.COMPACT_OFFLINE_DISK_STORE__MAXOPLOGSIZE__HELP) long maxOplogSize,
@CliOption(key = CliStrings.COMPACT_OFFLINE_DISK_STORE__J,
help = CliStrings.COMPACT_OFFLINE_DISK_STORE__J__HELP) String[] jvmProps) {
- Result result;
+ ResultModel result = new ResultModel();
+ InfoResultModel infoResult = result.addInfo();
LogWrapper logWrapper = LogWrapper.getInstance(getCache());
- StringBuilder output = new StringBuilder();
- StringBuilder error = new StringBuilder();
- StringBuilder errorMessage = new StringBuilder();
- Process compacterProcess = null;
+ Process compactorProcess = null;
try {
String validatedDirectories = DiskStoreCommandsUtils.validatedDirectories(diskDirs);
@@ -83,7 +78,7 @@ public class CompactOfflineDiskStoreCommand extends InternalGfshCommand {
commandList.add(CliStrings.COMPACT_OFFLINE_DISK_STORE__NAME + "=" + diskStoreName);
- if (diskDirs != null && diskDirs.length != 0) {
+ if (diskDirs.length != 0) {
StringBuilder builder = new StringBuilder();
int arrayLength = diskDirs.length;
for (int i = 0; i < arrayLength; i++) {
@@ -102,75 +97,40 @@ public class CompactOfflineDiskStoreCommand extends InternalGfshCommand {
commandList.add(CliStrings.COMPACT_OFFLINE_DISK_STORE__MAXOPLOGSIZE + "=" + maxOplogSize);
ProcessBuilder procBuilder = new ProcessBuilder(commandList);
- compacterProcess = procBuilder.start();
- InputStream inputStream = compacterProcess.getInputStream();
- InputStream errorStream = compacterProcess.getErrorStream();
+ procBuilder.redirectErrorStream(true);
+ compactorProcess = procBuilder.start();
+
+ InputStream inputStream = compactorProcess.getInputStream();
BufferedReader inputReader = new BufferedReader(new InputStreamReader(inputStream));
- BufferedReader errorReader = new BufferedReader(new InputStreamReader(errorStream));
String line;
while ((line = inputReader.readLine()) != null) {
- output.append(line).append(GfshParser.LINE_SEPARATOR);
- }
-
- boolean switchToStackTrace = false;
- while ((line = errorReader.readLine()) != null) {
- if (!switchToStackTrace && DiskStoreCompacter.STACKTRACE_START.equals(line)) {
- switchToStackTrace = true;
- } else if (switchToStackTrace) {
- error.append(line).append(GfshParser.LINE_SEPARATOR);
- } else {
- errorMessage.append(line);
- }
- }
-
- if (errorMessage.length() > 0) {
- throw new GemFireIOException(errorMessage.toString());
+ infoResult.addLine(line);
}
- // do we have to waitFor??
- compacterProcess.destroy();
- result = ResultBuilder.createInfoResult(output.toString());
- } catch (IOException e) {
- if (output.length() != 0) {
- Gfsh.println(output.toString());
+ compactorProcess.waitFor(2, TimeUnit.SECONDS);
+ if (compactorProcess.exitValue() != 0) {
+ result.setStatus(Result.Status.ERROR);
}
- String fieldsMessage = (maxOplogSize != -1
- ? CliStrings.COMPACT_OFFLINE_DISK_STORE__MAXOPLOGSIZE + "=" + maxOplogSize + "," : "");
- fieldsMessage += StringUtils.arrayToString(diskDirs);
- String errorString = CliStrings.format(
- CliStrings.COMPACT_OFFLINE_DISK_STORE__MSG__ERROR_WHILE_COMPACTING_DISKSTORE_0_WITH_1_REASON_2,
- diskStoreName, fieldsMessage);
- result = ResultBuilder.createUserErrorResult(errorString);
- if (logWrapper.fineEnabled()) {
- logWrapper.fine(e.getMessage(), e);
- }
- } catch (GemFireIOException e) {
- if (output.length() != 0) {
- Gfsh.println(output.toString());
- }
- result = ResultBuilder.createUserErrorResult(errorMessage.toString());
- if (logWrapper.fineEnabled()) {
- logWrapper.fine(error.toString());
- }
- } catch (IllegalArgumentException e) {
- if (output.length() != 0) {
- Gfsh.println(output.toString());
- }
- result = ResultBuilder.createUserErrorResult(e.getMessage());
+ } catch (Exception e) {
+ infoResult.addLine(
+ String.format("Error compacting disk store %s: %s", diskStoreName, e.getMessage()));
+ result.setStatus(Result.Status.ERROR);
+ logWrapper.warning(e.getMessage(), e);
} finally {
- if (compacterProcess != null) {
+ if (compactorProcess != null) {
try {
// just to check whether the process has exited
// Process.exitValue() throws IllegalThreadStateException if Process
// is alive
- compacterProcess.exitValue();
+ compactorProcess.exitValue();
} catch (IllegalThreadStateException ise) {
// not yet terminated, destroy the process
- compacterProcess.destroy();
+ compactorProcess.destroy();
}
}
}
+
return result;
}
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateDiskStoreCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateDiskStoreCommand.java
index e3fcff5..023923c 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateDiskStoreCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/CreateDiskStoreCommand.java
@@ -22,27 +22,28 @@ import java.util.Set;
import org.springframework.shell.core.annotation.CliCommand;
import org.springframework.shell.core.annotation.CliOption;
+import org.apache.geode.cache.configuration.CacheConfig;
+import org.apache.geode.cache.configuration.DiskDirType;
+import org.apache.geode.cache.configuration.DiskDirsType;
+import org.apache.geode.cache.configuration.DiskStoreType;
import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.distributed.internal.InternalConfigurationPersistenceService;
import org.apache.geode.internal.cache.DiskStoreAttributes;
import org.apache.geode.management.cli.CliMetaData;
import org.apache.geode.management.cli.ConverterHint;
-import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.cli.SingleGfshCommand;
import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
import org.apache.geode.management.internal.cli.functions.CreateDiskStoreFunction;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.geode.management.internal.cli.result.CommandResult;
-import org.apache.geode.management.internal.cli.result.ResultBuilder;
-import org.apache.geode.management.internal.configuration.domain.XmlEntity;
+import org.apache.geode.management.internal.cli.result.model.ResultModel;
import org.apache.geode.management.internal.security.ResourceOperation;
import org.apache.geode.security.ResourcePermission;
-public class CreateDiskStoreCommand extends InternalGfshCommand {
+public class CreateDiskStoreCommand extends SingleGfshCommand {
@CliCommand(value = CliStrings.CREATE_DISK_STORE, help = CliStrings.CREATE_DISK_STORE__HELP)
@CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DISKSTORE})
@ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
operation = ResourcePermission.Operation.MANAGE, target = ResourcePermission.Target.DISK)
- public Result createDiskStore(
+ public ResultModel createDiskStore(
@CliOption(key = CliStrings.CREATE_DISK_STORE__NAME, mandatory = true,
optionContext = ConverterHint.DISKSTORE,
help = CliStrings.CREATE_DISK_STORE__NAME__HELP) String name,
@@ -78,7 +79,6 @@ public class CreateDiskStoreCommand extends InternalGfshCommand {
unspecifiedDefaultValue = "99",
help = CliStrings.CREATE_DISK_STORE__DISK_USAGE_CRITICAL_PCT__HELP) float diskUsageCriticalPercentage) {
-
DiskStoreAttributes diskStoreAttributes = new DiskStoreAttributes();
diskStoreAttributes.allowForceCompaction = allowForceCompaction;
diskStoreAttributes.autoCompact = autoCompact;
@@ -87,6 +87,7 @@ public class CreateDiskStoreCommand extends InternalGfshCommand {
diskStoreAttributes.queueSize = queueSize;
diskStoreAttributes.timeInterval = timeInterval;
diskStoreAttributes.writeBufferSize = writeBufferSize;
+ diskStoreAttributes.name = name;
File[] directories = new File[directoriesAndSizes.length];
int[] sizes = new int[directoriesAndSizes.length];
@@ -109,21 +110,51 @@ public class CreateDiskStoreCommand extends InternalGfshCommand {
Set<DistributedMember> targetMembers = findMembers(groups, null);
if (targetMembers.isEmpty()) {
- return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
+ return ResultModel.createError(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
}
- List<CliFunctionResult> results = executeAndGetFunctionResult(new CreateDiskStoreFunction(),
- new Object[] {name, diskStoreAttributes}, targetMembers);
+ List<CliFunctionResult> functionResults = executeAndGetFunctionResult(
+ new CreateDiskStoreFunction(), new Object[] {name, diskStoreAttributes}, targetMembers);
+
+ ResultModel result = ResultModel.createMemberStatusResult(functionResults);
+ result.setConfigObject(createDiskStoreType(name, diskStoreAttributes));
+
+ return result;
+ }
- CommandResult result = ResultBuilder.buildResult(results);
- XmlEntity xmlEntity = findXmlEntity(results);
+ private DiskStoreType createDiskStoreType(String name, DiskStoreAttributes diskStoreAttributes) {
+ DiskStoreType diskStoreType = new DiskStoreType();
+ diskStoreType.setAllowForceCompaction(diskStoreAttributes.getAllowForceCompaction());
+ diskStoreType.setAutoCompact(diskStoreAttributes.getAutoCompact());
+ diskStoreType
+ .setCompactionThreshold(Integer.toString(diskStoreAttributes.getCompactionThreshold()));
- if (xmlEntity != null) {
- persistClusterConfiguration(result,
- () -> ((InternalConfigurationPersistenceService) getConfigurationPersistenceService())
- .addXmlEntity(xmlEntity, groups));
+ DiskDirsType diskDirsType = new DiskDirsType();
+ List<DiskDirType> diskDirs = diskDirsType.getDiskDirs();
+ for (int i = 0; i < diskStoreAttributes.getDiskDirs().length; i++) {
+ DiskDirType diskDir = new DiskDirType();
+ diskDir.setContent(diskStoreAttributes.getDiskDirs()[i].getName());
+ diskDir.setDirSize(Integer.toString(diskStoreAttributes.getDiskDirSizes()[i]));
+
+ diskDirs.add(diskDir);
}
+ diskStoreType.setDiskDirs(diskDirsType);
+ diskStoreType.setDiskUsageCriticalPercentage(
+ Integer.toString((int) diskStoreAttributes.getDiskUsageCriticalPercentage()));
+ diskStoreType.setDiskUsageWarningPercentage(
+ Integer.toString((int) diskStoreAttributes.getDiskUsageWarningPercentage()));
+ diskStoreType.setMaxOplogSize(Integer.toString((int) diskStoreAttributes.getMaxOplogSize()));
+ diskStoreType.setName(diskStoreAttributes.getName());
+ diskStoreType.setQueueSize(Integer.toString(diskStoreAttributes.getQueueSize()));
+ diskStoreType.setTimeInterval(Integer.toString((int) diskStoreAttributes.getTimeInterval()));
+ diskStoreType.setWriteBufferSize(Integer.toString(diskStoreAttributes.getWriteBufferSize()));
- return result;
+ return diskStoreType;
+ }
+
+ @Override
+ public void updateClusterConfig(String group, CacheConfig config, Object configObject) {
+ DiskStoreType diskStoreType = (DiskStoreType) configObject;
+ config.getDiskStores().add(diskStoreType);
}
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeDiskStoreCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeDiskStoreCommand.java
index c4b780f..ebe36b8 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeDiskStoreCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DescribeDiskStoreCommand.java
@@ -26,23 +26,29 @@ import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.internal.lang.ClassUtils;
import org.apache.geode.management.cli.CliMetaData;
import org.apache.geode.management.cli.ConverterHint;
-import org.apache.geode.management.cli.Result;
import org.apache.geode.management.internal.cli.domain.DiskStoreDetails;
import org.apache.geode.management.internal.cli.exceptions.EntityNotFoundException;
import org.apache.geode.management.internal.cli.functions.DescribeDiskStoreFunction;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.geode.management.internal.cli.result.CompositeResultData;
-import org.apache.geode.management.internal.cli.result.ResultBuilder;
-import org.apache.geode.management.internal.cli.result.TabularResultData;
+import org.apache.geode.management.internal.cli.result.model.DataResultModel;
+import org.apache.geode.management.internal.cli.result.model.ResultModel;
+import org.apache.geode.management.internal.cli.result.model.TabularResultModel;
import org.apache.geode.management.internal.security.ResourceOperation;
import org.apache.geode.security.ResourcePermission;
public class DescribeDiskStoreCommand extends InternalGfshCommand {
+ public static final String DISK_STORE_SECTION = "disk-store";
+ public static final String DISK_DIR_SECTION = "disk-dir";
+ public static final String REGION_SECTION = "region";
+ public static final String CACHE_SERVER_SECTION = "cache-server";
+ public static final String GATEWAY_SECTION = "gateway";
+ public static final String ASYNC_EVENT_QUEUE_SECTION = "async-event-queue";
+
@CliCommand(value = CliStrings.DESCRIBE_DISK_STORE, help = CliStrings.DESCRIBE_DISK_STORE__HELP)
@CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DISKSTORE})
@ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
operation = ResourcePermission.Operation.READ)
- public Result describeDiskStore(
+ public ResultModel describeDiskStore(
@CliOption(key = CliStrings.MEMBER, mandatory = true,
optionContext = ConverterHint.MEMBERIDNAME,
help = CliStrings.DESCRIBE_DISK_STORE__MEMBER__HELP) final String memberName,
@@ -50,7 +56,7 @@ public class DescribeDiskStoreCommand extends InternalGfshCommand {
optionContext = ConverterHint.DISKSTORE,
help = CliStrings.DESCRIBE_DISK_STORE__NAME__HELP) final String diskStoreName) {
- return toCompositeResult(getDiskStoreDescription(memberName, diskStoreName));
+ return toResultModel(getDiskStoreDescription(memberName, diskStoreName));
}
@@ -91,10 +97,10 @@ public class DescribeDiskStoreCommand extends InternalGfshCommand {
}
}
- private Result toCompositeResult(final DiskStoreDetails diskStoreDetails) {
- final CompositeResultData diskStoreData = ResultBuilder.createCompositeResultData();
+ private ResultModel toResultModel(final DiskStoreDetails diskStoreDetails) {
+ ResultModel result = new ResultModel();
- final CompositeResultData.SectionResultData diskStoreSection = diskStoreData.addSection();
+ DataResultModel diskStoreSection = result.addData(DISK_STORE_SECTION);
diskStoreSection.addData("Disk Store ID", diskStoreDetails.getId());
diskStoreSection.addData("Disk Store Name", diskStoreDetails.getName());
@@ -115,14 +121,14 @@ public class DescribeDiskStoreCommand extends InternalGfshCommand {
diskStoreSection.addData("PDX Serialization Meta-Data Stored",
diskStoreDetails.isPdxSerializationMetaDataStored() ? "Yes" : "No");
- final TabularResultData diskDirTable = diskStoreData.addSection().addTable();
+ final TabularResultModel diskDirTable = result.addTable(DISK_DIR_SECTION);
for (DiskStoreDetails.DiskDirDetails diskDirDetails : diskStoreDetails) {
diskDirTable.accumulate("Disk Directory", diskDirDetails.getAbsolutePath());
- diskDirTable.accumulate("Size", diskDirDetails.getSize());
+ diskDirTable.accumulate("Size", Integer.toString(diskDirDetails.getSize()));
}
- final TabularResultData regionTable = diskStoreData.addSection().addTable();
+ final TabularResultModel regionTable = result.addTable(REGION_SECTION);
for (DiskStoreDetails.RegionDetails regionDetails : diskStoreDetails.iterateRegions()) {
regionTable.accumulate("Region Path", regionDetails.getFullPath());
@@ -131,29 +137,29 @@ public class DescribeDiskStoreCommand extends InternalGfshCommand {
regionTable.accumulate("Overflow To Disk", regionDetails.isOverflowToDisk() ? "Yes" : "No");
}
- final TabularResultData cacheServerTable = diskStoreData.addSection().addTable();
+ final TabularResultModel cacheServerTable = result.addTable(CACHE_SERVER_SECTION);
for (DiskStoreDetails.CacheServerDetails cacheServerDetails : diskStoreDetails
.iterateCacheServers()) {
cacheServerTable.accumulate("Bind Address", cacheServerDetails.getBindAddress());
cacheServerTable.accumulate("Hostname for Clients", cacheServerDetails.getHostName());
- cacheServerTable.accumulate("Port", cacheServerDetails.getPort());
+ cacheServerTable.accumulate("Port", Integer.toString(cacheServerDetails.getPort()));
}
- final TabularResultData gatewayTable = diskStoreData.addSection().addTable();
+ final TabularResultModel gatewayTable = result.addTable(GATEWAY_SECTION);
for (DiskStoreDetails.GatewayDetails gatewayDetails : diskStoreDetails.iterateGateways()) {
gatewayTable.accumulate("Gateway ID", gatewayDetails.getId());
gatewayTable.accumulate("Persistent", gatewayDetails.isPersistent() ? "Yes" : "No");
}
- final TabularResultData asyncEventQueueTable = diskStoreData.addSection().addTable();
+ final TabularResultModel asyncEventQueueTable = result.addTable(ASYNC_EVENT_QUEUE_SECTION);
for (DiskStoreDetails.AsyncEventQueueDetails asyncEventQueueDetails : diskStoreDetails
.iterateAsyncEventQueues()) {
asyncEventQueueTable.accumulate("Async Event Queue ID", asyncEventQueueDetails.getId());
}
- return ResultBuilder.buildResult(diskStoreData);
+ return result;
}
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DestroyDiskStoreCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DestroyDiskStoreCommand.java
index 0e06562..e266355 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DestroyDiskStoreCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DestroyDiskStoreCommand.java
@@ -21,26 +21,26 @@ import java.util.Set;
import org.springframework.shell.core.annotation.CliCommand;
import org.springframework.shell.core.annotation.CliOption;
+import org.apache.geode.cache.configuration.CacheConfig;
+import org.apache.geode.cache.configuration.CacheElement;
import org.apache.geode.distributed.DistributedMember;
-import org.apache.geode.distributed.internal.InternalConfigurationPersistenceService;
import org.apache.geode.management.cli.CliMetaData;
import org.apache.geode.management.cli.ConverterHint;
-import org.apache.geode.management.cli.Result;
+import org.apache.geode.management.cli.SingleGfshCommand;
import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
import org.apache.geode.management.internal.cli.functions.DestroyDiskStoreFunction;
import org.apache.geode.management.internal.cli.functions.DestroyDiskStoreFunctionArgs;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.geode.management.internal.cli.result.ResultBuilder;
-import org.apache.geode.management.internal.configuration.domain.XmlEntity;
+import org.apache.geode.management.internal.cli.result.model.ResultModel;
import org.apache.geode.management.internal.security.ResourceOperation;
import org.apache.geode.security.ResourcePermission;
-public class DestroyDiskStoreCommand extends InternalGfshCommand {
+public class DestroyDiskStoreCommand extends SingleGfshCommand {
@CliCommand(value = CliStrings.DESTROY_DISK_STORE, help = CliStrings.DESTROY_DISK_STORE__HELP)
@CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DISKSTORE})
@ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
operation = ResourcePermission.Operation.MANAGE, target = ResourcePermission.Target.DISK)
- public Result destroyDiskStore(
+ public ResultModel destroyDiskStore(
@CliOption(key = CliStrings.DESTROY_DISK_STORE__NAME, mandatory = true,
help = CliStrings.DESTROY_DISK_STORE__NAME__HELP) String name,
@CliOption(key = {CliStrings.GROUP, CliStrings.GROUPS},
@@ -52,7 +52,7 @@ public class DestroyDiskStoreCommand extends InternalGfshCommand {
Set<DistributedMember> targetMembers = findMembers(groups, null);
if (targetMembers.isEmpty()) {
- return ResultBuilder.createUserErrorResult(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
+ return ResultModel.createError(CliStrings.NO_MEMBERS_FOUND_MESSAGE);
}
DestroyDiskStoreFunctionArgs functionArgs = new DestroyDiskStoreFunctionArgs(name, ifExist);
@@ -60,15 +60,15 @@ public class DestroyDiskStoreCommand extends InternalGfshCommand {
List<CliFunctionResult> results =
executeAndGetFunctionResult(new DestroyDiskStoreFunction(), functionArgs, targetMembers);
- Result result = ResultBuilder.buildResult(results);
- XmlEntity xmlEntity = findXmlEntity(results);
-
- if (xmlEntity != null) {
- persistClusterConfiguration(result,
- () -> ((InternalConfigurationPersistenceService) getConfigurationPersistenceService())
- .deleteXmlEntity(xmlEntity, groups));
- }
+ ResultModel result = ResultModel.createMemberStatusResult(results, ifExist);
+ result.setConfigObject(name);
return result;
}
+
+ @Override
+ public void updateClusterConfig(String group, CacheConfig config, Object configObject) {
+ String diskStoreName = (String) configObject;
+ CacheElement.removeElement(config.getDiskStores(), diskStoreName);
+ }
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportOfflineDiskStoreCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportOfflineDiskStoreCommand.java
index 7d14cc7..bf20067 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportOfflineDiskStoreCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ExportOfflineDiskStoreCommand.java
@@ -23,16 +23,15 @@ import org.springframework.shell.core.annotation.CliOption;
import org.apache.geode.SystemFailure;
import org.apache.geode.internal.cache.DiskStoreImpl;
import org.apache.geode.management.cli.CliMetaData;
-import org.apache.geode.management.cli.Result;
import org.apache.geode.management.internal.cli.LogWrapper;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.geode.management.internal.cli.result.ResultBuilder;
+import org.apache.geode.management.internal.cli.result.model.ResultModel;
public class ExportOfflineDiskStoreCommand extends InternalGfshCommand {
@CliCommand(value = CliStrings.EXPORT_OFFLINE_DISK_STORE,
help = CliStrings.EXPORT_OFFLINE_DISK_STORE__HELP)
@CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GEODE_DISKSTORE})
- public Result exportOfflineDiskStore(
+ public ResultModel exportOfflineDiskStore(
@CliOption(key = CliStrings.EXPORT_OFFLINE_DISK_STORE__DISKSTORENAME, mandatory = true,
help = CliStrings.EXPORT_OFFLINE_DISK_STORE__DISKSTORENAME__HELP) String diskStoreName,
@CliOption(key = CliStrings.EXPORT_OFFLINE_DISK_STORE__DISKDIRS, mandatory = true,
@@ -52,17 +51,17 @@ public class ExportOfflineDiskStoreCommand extends InternalGfshCommand {
// not be moved to a separate process unless we provide a way for the user
// to configure the size of that process.
DiskStoreImpl.exportOfflineSnapshot(diskStoreName, dirs, output);
- String resultString =
- CliStrings.format(CliStrings.EXPORT_OFFLINE_DISK_STORE__SUCCESS, diskStoreName, dir);
- return ResultBuilder.createInfoResult(resultString);
+
+ return ResultModel.createInfo(
+ CliStrings.format(CliStrings.EXPORT_OFFLINE_DISK_STORE__SUCCESS, diskStoreName, dir));
} catch (VirtualMachineError e) {
SystemFailure.initiateFailure(e);
throw e;
} catch (Throwable th) {
SystemFailure.checkFailure();
LogWrapper.getInstance(getCache()).warning(th.getMessage(), th);
- return ResultBuilder.createGemFireErrorResult(CliStrings
- .format(CliStrings.EXPORT_OFFLINE_DISK_STORE__ERROR, diskStoreName, th.toString()));
+ return ResultModel.createError(CliStrings.format(CliStrings.EXPORT_OFFLINE_DISK_STORE__ERROR,
+ diskStoreName, th.toString()));
}
}
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ListDiskStoresCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ListDiskStoresCommand.java
index ac4e59b..5cdfcd0 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ListDiskStoresCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ListDiskStoresCommand.java
@@ -28,13 +28,12 @@ import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.internal.cache.InternalCache;
import org.apache.geode.internal.cache.execute.AbstractExecution;
import org.apache.geode.management.cli.CliMetaData;
-import org.apache.geode.management.cli.Result;
import org.apache.geode.management.internal.cli.domain.DiskStoreDetails;
import org.apache.geode.management.internal.cli.functions.ListDiskStoresFunction;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.geode.management.internal.cli.result.ResultBuilder;
import org.apache.geode.management.internal.cli.result.ResultDataException;
-import org.apache.geode.management.internal.cli.result.TabularResultData;
+import org.apache.geode.management.internal.cli.result.model.ResultModel;
+import org.apache.geode.management.internal.cli.result.model.TabularResultModel;
import org.apache.geode.management.internal.security.ResourceOperation;
import org.apache.geode.security.ResourcePermission;
@@ -43,13 +42,14 @@ public class ListDiskStoresCommand extends InternalGfshCommand {
@CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DISKSTORE})
@ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
operation = ResourcePermission.Operation.READ)
- public Result listDiskStores() {
+ public ResultModel listDiskStores() {
Set<DistributedMember> dataMembers =
DiskStoreCommandsUtils.getNormalMembers((InternalCache) getCache());
if (dataMembers.isEmpty()) {
- return ResultBuilder.createInfoResult(CliStrings.NO_CACHING_MEMBERS_FOUND_MESSAGE);
+ return ResultModel.createInfo(CliStrings.NO_CACHING_MEMBERS_FOUND_MESSAGE);
}
+
return toTabularResult(getDiskStoreListing(dataMembers));
}
@@ -78,22 +78,23 @@ public class ListDiskStoresCommand extends InternalGfshCommand {
return distributedSystemMemberDiskStores;
}
- private Result toTabularResult(final List<DiskStoreDetails> diskStoreList)
+ private ResultModel toTabularResult(final List<DiskStoreDetails> diskStoreList)
throws ResultDataException {
if (!diskStoreList.isEmpty()) {
- final TabularResultData diskStoreData = ResultBuilder.createTabularResultData();
+ ResultModel result = new ResultModel();
+ TabularResultModel diskStoreData =
+ result.addTable(DescribeDiskStoreCommand.DISK_STORE_SECTION);
for (final DiskStoreDetails diskStoreDetails : diskStoreList) {
diskStoreData.accumulate("Member Name", diskStoreDetails.getMemberName());
diskStoreData.accumulate("Member Id", diskStoreDetails.getMemberId());
diskStoreData.accumulate("Disk Store Name", diskStoreDetails.getName());
- diskStoreData.accumulate("Disk Store ID", diskStoreDetails.getId());
+ diskStoreData.accumulate("Disk Store ID", diskStoreDetails.getId().toString());
}
- return ResultBuilder.buildResult(diskStoreData);
+ return result;
} else {
- return ResultBuilder
- .createInfoResult(CliStrings.LIST_DISK_STORE__DISK_STORES_NOT_FOUND_MESSAGE);
+ return ResultModel.createInfo(CliStrings.LIST_DISK_STORE__DISK_STORES_NOT_FOUND_MESSAGE);
}
}
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RevokeMissingDiskStoreCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RevokeMissingDiskStoreCommand.java
index ebb2a1c..1014a71 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RevokeMissingDiskStoreCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RevokeMissingDiskStoreCommand.java
@@ -18,13 +18,11 @@ package org.apache.geode.management.internal.cli.commands;
import org.springframework.shell.core.annotation.CliCommand;
import org.springframework.shell.core.annotation.CliOption;
-import org.apache.geode.SystemFailure;
import org.apache.geode.management.DistributedSystemMXBean;
import org.apache.geode.management.ManagementService;
import org.apache.geode.management.cli.CliMetaData;
-import org.apache.geode.management.cli.Result;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.geode.management.internal.cli.result.ResultBuilder;
+import org.apache.geode.management.internal.cli.result.model.ResultModel;
import org.apache.geode.management.internal.security.ResourceOperation;
import org.apache.geode.security.ResourcePermission;
@@ -34,28 +32,16 @@ public class RevokeMissingDiskStoreCommand extends InternalGfshCommand {
@CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DISKSTORE})
@ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
operation = ResourcePermission.Operation.MANAGE, target = ResourcePermission.Target.DISK)
- public Result revokeMissingDiskStore(@CliOption(key = CliStrings.REVOKE_MISSING_DISK_STORE__ID,
- mandatory = true, help = CliStrings.REVOKE_MISSING_DISK_STORE__ID__HELP) String id) {
+ public ResultModel revokeMissingDiskStore(
+ @CliOption(key = CliStrings.REVOKE_MISSING_DISK_STORE__ID, mandatory = true,
+ help = CliStrings.REVOKE_MISSING_DISK_STORE__ID__HELP) String id) {
- try {
- DistributedSystemMXBean dsMXBean =
- ManagementService.getManagementService(getCache()).getDistributedSystemMXBean();
- if (dsMXBean.revokeMissingDiskStores(id)) {
- return ResultBuilder.createInfoResult("Missing disk store successfully revoked");
- }
-
- return ResultBuilder.createUserErrorResult("Unable to find missing disk store to revoke");
- } catch (VirtualMachineError e) {
- SystemFailure.initiateFailure(e);
- throw e;
- } catch (Throwable th) {
- SystemFailure.checkFailure();
- if (th.getMessage() == null) {
- return ResultBuilder.createGemFireErrorResult(
- "An error occurred while revoking missing disk stores: " + th);
- }
- return ResultBuilder.createGemFireErrorResult(
- "An error occurred while revoking missing disk stores: " + th.getMessage());
+ DistributedSystemMXBean dsMXBean =
+ ManagementService.getManagementService(getCache()).getDistributedSystemMXBean();
+ if (dsMXBean.revokeMissingDiskStores(id)) {
+ return ResultModel.createInfo("Missing disk store successfully revoked");
}
+
+ return ResultModel.createError("Unable to find missing disk store to revoke");
}
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ShowMissingDiskStoreCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ShowMissingDiskStoreCommand.java
index 9c89184..4f6fe52 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ShowMissingDiskStoreCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ShowMissingDiskStoreCommand.java
@@ -21,9 +21,7 @@ import java.util.Set;
import org.springframework.shell.core.annotation.CliCommand;
-import org.apache.geode.SystemFailure;
import org.apache.geode.cache.execute.Execution;
-import org.apache.geode.cache.execute.FunctionInvocationTargetException;
import org.apache.geode.cache.execute.ResultCollector;
import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.internal.cache.InternalCache;
@@ -31,51 +29,37 @@ import org.apache.geode.internal.cache.execute.AbstractExecution;
import org.apache.geode.internal.cache.partitioned.ColocatedRegionDetails;
import org.apache.geode.internal.cache.persistence.PersistentMemberPattern;
import org.apache.geode.management.cli.CliMetaData;
-import org.apache.geode.management.cli.Result;
import org.apache.geode.management.internal.cli.functions.ShowMissingDiskStoresFunction;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.geode.management.internal.cli.result.CompositeResultData;
-import org.apache.geode.management.internal.cli.result.ResultBuilder;
import org.apache.geode.management.internal.cli.result.ResultDataException;
-import org.apache.geode.management.internal.cli.result.TabularResultData;
+import org.apache.geode.management.internal.cli.result.model.ResultModel;
+import org.apache.geode.management.internal.cli.result.model.TabularResultModel;
import org.apache.geode.management.internal.security.ResourceOperation;
import org.apache.geode.security.ResourcePermission;
public class ShowMissingDiskStoreCommand extends InternalGfshCommand {
+ public static final String MISSING_DISK_STORES_SECTION = "missing-disk-stores";
+ public static final String MISSING_COLOCATED_REGIONS_SECTION = "missing-colocated-regions";
+
@CliCommand(value = CliStrings.SHOW_MISSING_DISK_STORE,
help = CliStrings.SHOW_MISSING_DISK_STORE__HELP)
@CliMetaData(relatedTopic = {CliStrings.TOPIC_GEODE_DISKSTORE})
@ResourceOperation(resource = ResourcePermission.Resource.CLUSTER,
operation = ResourcePermission.Operation.READ)
- public Result showMissingDiskStore() {
+ public ResultModel showMissingDiskStore() {
- try {
- Set<DistributedMember> dataMembers =
- DiskStoreCommandsUtils.getNormalMembers((InternalCache) getCache());
+ Set<DistributedMember> dataMembers =
+ DiskStoreCommandsUtils.getNormalMembers((InternalCache) getCache());
- if (dataMembers.isEmpty()) {
- return ResultBuilder.createInfoResult(CliStrings.NO_CACHING_MEMBERS_FOUND_MESSAGE);
- }
- List<Object> results = getMissingDiskStoresList(dataMembers);
- return toMissingDiskStoresTabularResult(results);
- } catch (FunctionInvocationTargetException ignore) {
- return ResultBuilder.createGemFireErrorResult(CliStrings.format(
- CliStrings.COULD_NOT_EXECUTE_COMMAND_TRY_AGAIN, CliStrings.SHOW_MISSING_DISK_STORE));
- } catch (VirtualMachineError e) {
- SystemFailure.initiateFailure(e);
- throw e;
- } catch (Throwable t) {
- SystemFailure.checkFailure();
- if (t.getMessage() == null) {
- return ResultBuilder.createGemFireErrorResult(
- String.format(CliStrings.SHOW_MISSING_DISK_STORE__ERROR_MESSAGE, t));
- }
- return ResultBuilder.createGemFireErrorResult(
- String.format(CliStrings.SHOW_MISSING_DISK_STORE__ERROR_MESSAGE, t.getMessage()));
+ if (dataMembers.isEmpty()) {
+ return ResultModel.createInfo(CliStrings.NO_CACHING_MEMBERS_FOUND_MESSAGE);
}
+ List<?> results = getMissingDiskStoresList(dataMembers);
+
+ return toMissingDiskStoresTabularResult(results);
}
- private List<Object> getMissingDiskStoresList(Set<DistributedMember> members) {
+ private List<?> getMissingDiskStoresList(Set<DistributedMember> members) {
final Execution membersFunctionExecutor = getMembersFunctionExecutor(members);
if (membersFunctionExecutor instanceof AbstractExecution) {
((AbstractExecution) membersFunctionExecutor).setIgnoreDepartedMembers(true);
@@ -85,18 +69,18 @@ public class ShowMissingDiskStoreCommand extends InternalGfshCommand {
membersFunctionExecutor.execute(new ShowMissingDiskStoresFunction());
final List<?> results = (List<?>) resultCollector.getResult();
- final List<Object> distributedPersistentRecoveryDetails = new ArrayList<>(results.size());
+ final List<?> distributedPersistentRecoveryDetails = new ArrayList<>(results.size());
for (final Object result : results) {
if (result instanceof Set) {
- distributedPersistentRecoveryDetails.addAll((Set<Object>) result);
+ distributedPersistentRecoveryDetails.addAll((Set) result);
}
}
return distributedPersistentRecoveryDetails;
}
- private Result toMissingDiskStoresTabularResult(final List<Object> resultDetails)
+ private ResultModel toMissingDiskStoresTabularResult(final List<?> resultDetails)
throws ResultDataException {
- CompositeResultData crd = ResultBuilder.createCompositeResultData();
+ ResultModel result = new ResultModel();
List<PersistentMemberPattern> missingDiskStores = new ArrayList<>();
List<ColocatedRegionDetails> missingColocatedRegions = new ArrayList<>();
@@ -112,40 +96,36 @@ public class ShowMissingDiskStoreCommand extends InternalGfshCommand {
boolean hasMissingDiskStores = !missingDiskStores.isEmpty();
boolean hasMissingColocatedRegions = !missingColocatedRegions.isEmpty();
+ TabularResultModel missingDiskStoreSection = result.addTable(MISSING_DISK_STORES_SECTION);
+
if (hasMissingDiskStores) {
- CompositeResultData.SectionResultData missingDiskStoresSection = crd.addSection();
- missingDiskStoresSection.setHeader("Missing Disk Stores");
- TabularResultData missingDiskStoreData = missingDiskStoresSection.addTable();
+ missingDiskStoreSection.setHeader("Missing Disk Stores");
for (PersistentMemberPattern persistentMemberDetails : missingDiskStores) {
- missingDiskStoreData.accumulate("Disk Store ID", persistentMemberDetails.getUUID());
- missingDiskStoreData.accumulate("Host", persistentMemberDetails.getHost());
- missingDiskStoreData.accumulate("Directory", persistentMemberDetails.getDirectory());
+ missingDiskStoreSection.accumulate("Disk Store ID",
+ persistentMemberDetails.getUUID().toString());
+ missingDiskStoreSection.accumulate("Host", persistentMemberDetails.getHost().toString());
+ missingDiskStoreSection.accumulate("Directory", persistentMemberDetails.getDirectory());
}
} else {
- CompositeResultData.SectionResultData noMissingDiskStores = crd.addSection();
- noMissingDiskStores.setHeader("No missing disk store found");
- }
- if (hasMissingDiskStores || hasMissingColocatedRegions) {
- // For clarity, separate disk store and colocated region information
- crd.addSection().setHeader("\n");
+ missingDiskStoreSection.setHeader("No missing disk store found");
}
+ TabularResultModel missingRegionsSection = result.addTable(MISSING_COLOCATED_REGIONS_SECTION);
if (hasMissingColocatedRegions) {
- CompositeResultData.SectionResultData missingRegionsSection = crd.addSection();
missingRegionsSection.setHeader("Missing Colocated Regions");
- TabularResultData missingRegionData = missingRegionsSection.addTable();
for (ColocatedRegionDetails colocatedRegionDetails : missingColocatedRegions) {
- missingRegionData.accumulate("Host", colocatedRegionDetails.getHost());
- missingRegionData.accumulate("Distributed Member", colocatedRegionDetails.getMember());
- missingRegionData.accumulate("Parent Region", colocatedRegionDetails.getParent());
- missingRegionData.accumulate("Missing Colocated Region", colocatedRegionDetails.getChild());
+ missingRegionsSection.accumulate("Host", colocatedRegionDetails.getHost());
+ missingRegionsSection.accumulate("Distributed Member", colocatedRegionDetails.getMember());
+ missingRegionsSection.accumulate("Parent Region", colocatedRegionDetails.getParent());
+ missingRegionsSection.accumulate("Missing Colocated Region",
+ colocatedRegionDetails.getChild());
}
} else {
- CompositeResultData.SectionResultData noMissingColocatedRegions = crd.addSection();
- noMissingColocatedRegions.setHeader("No missing colocated region found");
+ missingRegionsSection.setHeader("No missing colocated region found");
}
- return ResultBuilder.buildResult(crd);
+
+ return result;
}
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/UpgradeOfflineDiskStoreCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/UpgradeOfflineDiskStoreCommand.java
index 3579dcc..dcf15a7 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/UpgradeOfflineDiskStoreCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/UpgradeOfflineDiskStoreCommand.java
@@ -17,32 +17,29 @@ package org.apache.geode.management.internal.cli.commands;
import java.io.BufferedReader;
import java.io.File;
-import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.concurrent.TimeUnit;
import org.springframework.shell.core.annotation.CliCommand;
import org.springframework.shell.core.annotation.CliOption;
-import org.apache.geode.GemFireIOException;
-import org.apache.geode.internal.lang.StringUtils;
import org.apache.geode.management.cli.CliMetaData;
import org.apache.geode.management.cli.Result;
-import org.apache.geode.management.internal.cli.GfshParser;
import org.apache.geode.management.internal.cli.LogWrapper;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.geode.management.internal.cli.result.ResultBuilder;
-import org.apache.geode.management.internal.cli.shell.Gfsh;
+import org.apache.geode.management.internal.cli.result.model.InfoResultModel;
+import org.apache.geode.management.internal.cli.result.model.ResultModel;
import org.apache.geode.management.internal.cli.util.DiskStoreUpgrader;
public class UpgradeOfflineDiskStoreCommand extends InternalGfshCommand {
@CliCommand(value = CliStrings.UPGRADE_OFFLINE_DISK_STORE,
help = CliStrings.UPGRADE_OFFLINE_DISK_STORE__HELP)
@CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GEODE_DISKSTORE})
- public Result upgradeOfflineDiskStore(
+ public ResultModel upgradeOfflineDiskStore(
@CliOption(key = CliStrings.UPGRADE_OFFLINE_DISK_STORE__NAME, mandatory = true,
help = CliStrings.UPGRADE_OFFLINE_DISK_STORE__NAME__HELP) String diskStoreName,
@CliOption(key = CliStrings.UPGRADE_OFFLINE_DISK_STORE__DISKDIRS, mandatory = true,
@@ -53,12 +50,10 @@ public class UpgradeOfflineDiskStoreCommand extends InternalGfshCommand {
@CliOption(key = CliStrings.UPGRADE_OFFLINE_DISK_STORE__J,
help = CliStrings.UPGRADE_OFFLINE_DISK_STORE__J__HELP) String[] jvmProps) {
- Result result;
+ ResultModel result = new ResultModel();
+ InfoResultModel infoResult = result.addInfo();
LogWrapper logWrapper = LogWrapper.getInstance(getCache());
- StringBuilder output = new StringBuilder();
- StringBuilder error = new StringBuilder();
- StringBuilder errorMessage = new StringBuilder();
Process upgraderProcess = null;
try {
@@ -103,62 +98,26 @@ public class UpgradeOfflineDiskStoreCommand extends InternalGfshCommand {
commandList.add(CliStrings.UPGRADE_OFFLINE_DISK_STORE__MAXOPLOGSIZE + "=" + maxOplogSize);
ProcessBuilder procBuilder = new ProcessBuilder(commandList);
- // procBuilder.redirectErrorStream(true);
+ procBuilder.redirectErrorStream(true);
upgraderProcess = procBuilder.start();
+
InputStream inputStream = upgraderProcess.getInputStream();
- InputStream errorStream = upgraderProcess.getErrorStream();
BufferedReader inputReader = new BufferedReader(new InputStreamReader(inputStream));
- BufferedReader errorReader = new BufferedReader(new InputStreamReader(errorStream));
String line;
while ((line = inputReader.readLine()) != null) {
- output.append(line).append(GfshParser.LINE_SEPARATOR);
- }
-
- boolean switchToStackTrace = false;
- while ((line = errorReader.readLine()) != null) {
- if (!switchToStackTrace && DiskStoreUpgrader.STACKTRACE_START.equals(line)) {
- switchToStackTrace = true;
- } else if (switchToStackTrace) {
- error.append(line).append(GfshParser.LINE_SEPARATOR);
- } else {
- errorMessage.append(line);
- }
- }
-
- if (errorMessage.length() > 0) {
- throw new GemFireIOException(errorMessage.toString());
+ infoResult.addLine(line);
}
- upgraderProcess.destroy();
- result = ResultBuilder.createInfoResult(output.toString());
- } catch (IOException e) {
- if (output.length() != 0) {
- Gfsh.println(output.toString());
+ upgraderProcess.waitFor(2, TimeUnit.SECONDS);
+ if (upgraderProcess.exitValue() != 0) {
+ result.setStatus(Result.Status.ERROR);
}
- String fieldsMessage = (maxOplogSize != -1
- ? CliStrings.UPGRADE_OFFLINE_DISK_STORE__MAXOPLOGSIZE + "=" + maxOplogSize + "," : "");
- fieldsMessage += StringUtils.arrayToString(diskDirs);
- String errorString = CliStrings.format(
- CliStrings.UPGRADE_OFFLINE_DISK_STORE__MSG__ERROR_WHILE_COMPACTING_DISKSTORE_0_WITH_1_REASON_2,
- diskStoreName, fieldsMessage);
- result = ResultBuilder.createUserErrorResult(errorString);
- if (logWrapper.fineEnabled()) {
- logWrapper.fine(e.getMessage(), e);
- }
- } catch (GemFireIOException e) {
- if (output.length() != 0) {
- Gfsh.println(output.toString());
- }
- result = ResultBuilder.createUserErrorResult(errorMessage.toString());
- if (logWrapper.fineEnabled()) {
- logWrapper.fine(error.toString());
- }
- } catch (IllegalArgumentException e) {
- if (output.length() != 0) {
- Gfsh.println(output.toString());
- }
- result = ResultBuilder.createUserErrorResult(e.getMessage());
+ } catch (Exception e) {
+ infoResult.addLine(
+ String.format("Error upgrading disk store %s: %s", diskStoreName, e.getMessage()));
+ result.setStatus(Result.Status.ERROR);
+ logWrapper.warning(e.getMessage(), e);
} finally {
if (upgraderProcess != null) {
try {
@@ -171,6 +130,7 @@ public class UpgradeOfflineDiskStoreCommand extends InternalGfshCommand {
}
}
}
+
return result;
}
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ValidateDiskStoreCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ValidateDiskStoreCommand.java
index c7b2044..d25326a 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ValidateDiskStoreCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ValidateDiskStoreCommand.java
@@ -17,33 +17,40 @@ package org.apache.geode.management.internal.cli.commands;
import java.io.BufferedReader;
import java.io.File;
-import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.concurrent.TimeUnit;
import org.springframework.shell.core.annotation.CliCommand;
import org.springframework.shell.core.annotation.CliOption;
import org.apache.geode.management.cli.CliMetaData;
import org.apache.geode.management.cli.Result;
-import org.apache.geode.management.internal.cli.GfshParser;
+import org.apache.geode.management.internal.cli.LogWrapper;
import org.apache.geode.management.internal.cli.i18n.CliStrings;
-import org.apache.geode.management.internal.cli.result.ResultBuilder;
+import org.apache.geode.management.internal.cli.result.model.InfoResultModel;
+import org.apache.geode.management.internal.cli.result.model.ResultModel;
import org.apache.geode.management.internal.cli.util.DiskStoreValidater;
public class ValidateDiskStoreCommand extends InternalGfshCommand {
@CliCommand(value = CliStrings.VALIDATE_DISK_STORE, help = CliStrings.VALIDATE_DISK_STORE__HELP)
@CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GEODE_DISKSTORE})
- public Result validateDiskStore(
+ public ResultModel validateDiskStore(
@CliOption(key = CliStrings.VALIDATE_DISK_STORE__NAME, mandatory = true,
help = CliStrings.VALIDATE_DISK_STORE__NAME__HELP) String diskStoreName,
@CliOption(key = CliStrings.VALIDATE_DISK_STORE__DISKDIRS, mandatory = true,
help = CliStrings.VALIDATE_DISK_STORE__DISKDIRS__HELP) String[] diskDirs,
@CliOption(key = CliStrings.VALIDATE_DISK_STORE__J,
help = CliStrings.VALIDATE_DISK_STORE__J__HELP) String[] jvmProps) {
+
+ ResultModel result = new ResultModel();
+ InfoResultModel infoResult = result.addInfo();
+ LogWrapper logWrapper = LogWrapper.getInstance(getCache());
+ Process validateDiskStoreProcess = null;
+
try {
// create a new process ...bug 46075
StringBuilder dirList = new StringBuilder();
@@ -74,31 +81,40 @@ public class ValidateDiskStoreCommand extends InternalGfshCommand {
commandList.add(dirList.toString());
ProcessBuilder procBuilder = new ProcessBuilder(commandList);
- StringBuilder output = new StringBuilder();
- String errorString = "";
+ procBuilder.redirectErrorStream(true);
- Process validateDiskStoreProcess = procBuilder.redirectErrorStream(true).start();
+ validateDiskStoreProcess = procBuilder.redirectErrorStream(true).start();
InputStream inputStream = validateDiskStoreProcess.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
- String line;
+ String line;
while ((line = br.readLine()) != null) {
- output.append(line).append(GfshParser.LINE_SEPARATOR);
+ infoResult.addLine(line);
+ }
+
+ validateDiskStoreProcess.waitFor(2, TimeUnit.SECONDS);
+ if (validateDiskStoreProcess.exitValue() != 0) {
+ result.setStatus(Result.Status.ERROR);
+ }
+ } catch (Exception e) {
+ infoResult.addLine(
+ String.format("Error compacting disk store %s: %s", diskStoreName, e.getMessage()));
+ result.setStatus(Result.Status.ERROR);
+ logWrapper.warning(e.getMessage(), e);
+ } finally {
+ if (validateDiskStoreProcess != null) {
+ try {
+ // just to check whether the process has exited
+ // Process.exitValue() throws IllegalThreadStateException if Process
+ // is alive
+ validateDiskStoreProcess.exitValue();
+ } catch (IllegalThreadStateException ise) {
+ // not yet terminated, destroy the process
+ validateDiskStoreProcess.destroy();
+ }
}
- validateDiskStoreProcess.destroy();
-
- output.append(errorString).append(GfshParser.LINE_SEPARATOR);
- String resultString =
- "Validating " + diskStoreName + GfshParser.LINE_SEPARATOR + output.toString();
- return ResultBuilder.createInfoResult(resultString);
- } catch (IOException ex) {
- return ResultBuilder.createGemFireErrorResult(CliStrings
- .format(CliStrings.VALIDATE_DISK_STORE__MSG__IO_ERROR, diskStoreName, ex.getMessage()));
- } catch (Exception ex) {
- // StringPrintWriter s = new StringPrintWriter();
- // ex.printStackTrace(s);
- return ResultBuilder.createGemFireErrorResult(CliStrings
- .format(CliStrings.VALIDATE_DISK_STORE__MSG__ERROR, diskStoreName, ex.getMessage()));
}
+
+ return result;
}
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateDiskStoreFunction.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateDiskStoreFunction.java
index 5a52d04..bce28c2 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateDiskStoreFunction.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/functions/CreateDiskStoreFunction.java
@@ -20,62 +20,29 @@ package org.apache.geode.management.internal.cli.functions;
* @since GemFire 8.0
*/
-import org.apache.logging.log4j.Logger;
-
-import org.apache.geode.SystemFailure;
-import org.apache.geode.cache.CacheClosedException;
import org.apache.geode.cache.DiskStoreFactory;
import org.apache.geode.cache.execute.FunctionContext;
-import org.apache.geode.distributed.DistributedMember;
import org.apache.geode.internal.cache.DiskStoreAttributes;
import org.apache.geode.internal.cache.InternalCache;
-import org.apache.geode.internal.cache.execute.InternalFunction;
-import org.apache.geode.internal.cache.xmlcache.CacheXml;
-import org.apache.geode.internal.logging.LogService;
-import org.apache.geode.management.internal.configuration.domain.XmlEntity;
+import org.apache.geode.management.cli.CliFunction;
+import org.apache.geode.management.cli.Result;
-public class CreateDiskStoreFunction implements InternalFunction {
- private static final Logger logger = LogService.getLogger();
+public class CreateDiskStoreFunction extends CliFunction {
private static final long serialVersionUID = 1L;
@Override
- public void execute(FunctionContext context) {
- // Declared here so that it's available when returning a Throwable
- String memberId = "";
- try {
- final Object[] args = (Object[]) context.getArguments();
- final String diskStoreName = (String) args[0];
- final DiskStoreAttributes diskStoreAttrs = (DiskStoreAttributes) args[01];
-
- InternalCache cache = (InternalCache) context.getCache();
-
- DistributedMember member = cache.getDistributedSystem().getDistributedMember();
-
- memberId = member.getId();
- // If they set a name use it instead
- if (!member.getName().equals("")) {
- memberId = member.getName();
- }
-
- DiskStoreFactory diskStoreFactory = cache.createDiskStoreFactory(diskStoreAttrs);
- diskStoreFactory.create(diskStoreName);
-
- XmlEntity xmlEntity = new XmlEntity(CacheXml.DISK_STORE, "name", diskStoreName);
- context.getResultSender().lastResult(new CliFunctionResult(memberId, xmlEntity, "Success"));
-
- } catch (CacheClosedException cce) {
- context.getResultSender().lastResult(new CliFunctionResult(memberId, false, null));
+ public CliFunctionResult executeFunction(FunctionContext context) {
+ final Object[] args = (Object[]) context.getArguments();
+ final String diskStoreName = (String) args[0];
+ final DiskStoreAttributes diskStoreAttrs = (DiskStoreAttributes) args[1];
- } catch (VirtualMachineError e) {
- SystemFailure.initiateFailure(e);
- throw e;
+ InternalCache cache = (InternalCache) context.getCache();
+ DiskStoreFactory diskStoreFactory = cache.createDiskStoreFactory(diskStoreAttrs);
+ diskStoreFactory.create(diskStoreName);
- } catch (Throwable th) {
- SystemFailure.checkFailure();
- logger.error("Could not create disk store: {}", th.getMessage(), th);
- context.getResultSender().lastResult(new CliFunctionResult(memberId, th, null));
- }
+ return new CliFunctionResult(context.getMemberName(), Result.Status.OK,
+ "Created disk store " + diskStoreName);
}
@Override
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/DiskStoreCompacter.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/DiskStoreCompacter.java
index 72e5d13..4221443 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/DiskStoreCompacter.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/DiskStoreCompacter.java
@@ -47,6 +47,7 @@ public class DiskStoreCompacter {
String[] diskDirs = null;;
String maxOpLogSize = null;;
long maxOplogSize = -1;
+ boolean errored = false;
try {
if (args.length < 3) {
throw new IllegalArgumentException(
@@ -70,6 +71,7 @@ public class DiskStoreCompacter {
compact(diskStoreName, diskDirs, maxOplogSize);
} catch (GemFireIOException e) {
+ errored = true;
Throwable cause = e.getCause();
if (cause instanceof IllegalStateException) {
String message = cause.getMessage();
@@ -104,6 +106,7 @@ public class DiskStoreCompacter {
}
stackTraceString = ExceptionUtils.getStackTrace(e);
} catch (IllegalArgumentException e) {
+ errored = true;
errorString = e.getMessage();
stackTraceString = ExceptionUtils.getStackTrace(e);
} finally {
@@ -114,6 +117,10 @@ public class DiskStoreCompacter {
System.err.println(STACKTRACE_START);
System.err.println(stackTraceString);
}
+
+ if (errored) {
+ System.exit(1);
+ }
}
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/DiskStoreUpgrader.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/DiskStoreUpgrader.java
index 75cd42c..110f528 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/DiskStoreUpgrader.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/DiskStoreUpgrader.java
@@ -58,6 +58,7 @@ public class DiskStoreUpgrader {
"Requires 3 arguments : <diskStoreName> <diskDirs> <maxOpLogSize>");
}
+ boolean errored = false;
try {
diskStoreName = prop.getProperty(CliStrings.UPGRADE_OFFLINE_DISK_STORE__NAME);
diskDirsStr = prop.getProperty(CliStrings.UPGRADE_OFFLINE_DISK_STORE__DISKDIRS);
@@ -67,6 +68,7 @@ public class DiskStoreUpgrader {
upgrade(diskStoreName, diskDirs, maxOplogSize);
} catch (GemFireIOException e) {
+ errored = true;
Throwable cause = e.getCause();
if (cause instanceof IllegalStateException) {
String message = cause.getMessage();
@@ -101,6 +103,7 @@ public class DiskStoreUpgrader {
}
stackTraceString = ExceptionUtils.getStackTrace(e);
} catch (IllegalArgumentException e) {
+ errored = true;
errorString = e.getMessage();
stackTraceString = ExceptionUtils.getStackTrace(e);
} finally {
@@ -111,6 +114,10 @@ public class DiskStoreUpgrader {
System.err.println(STACKTRACE_START);
System.err.println(stackTraceString);
}
+
+ if (errored) {
+ System.exit(1);
+ }
}
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/DiskStoreValidater.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/DiskStoreValidater.java
index 1fe6852..01b179a 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/DiskStoreValidater.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/util/DiskStoreValidater.java
@@ -27,29 +27,29 @@ import org.apache.geode.management.internal.cli.i18n.CliStrings;
public class DiskStoreValidater {
public static void main(String[] args) {
- if (args.length < 2 || args.length > 2) {
- throw new IllegalArgumentException("Requires only 2 arguments : <DiskStore> <Dirs>");
+ try {
+ if (args.length < 2 || args.length > 2) {
+ throw new IllegalArgumentException("Requires only 2 arguments : <DiskStore> <Dirs>");
+ }
+ validate(args[0], args[1]);
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ System.exit(1);
}
- validate((String) args[0], (String) args[1]);
}
- static void validate(String diskStoreName, String diskDirs) {
- try {
- File[] dirs = null;
- String[] dirList = null;
- dirList = diskDirs.split(";");
- if (dirList != null && dirList.length > 0) {
- dirs = new File[dirList.length];
- for (int i = 0; i < dirList.length; ++i) {
- dirs[i] = new File(dirList[i]);
- }
- } else {
- System.out.println(CliStrings.VALIDATE_DISK_STORE__MSG__NO_DIRS);
+ static void validate(String diskStoreName, String diskDirs) throws Exception {
+ File[] dirs = null;
+ String[] dirList = null;
+ dirList = diskDirs.split(";");
+ if (dirList != null && dirList.length > 0) {
+ dirs = new File[dirList.length];
+ for (int i = 0; i < dirList.length; ++i) {
+ dirs[i] = new File(dirList[i]);
}
- DiskStoreImpl.validate(diskStoreName, dirs);
- } catch (Exception e) {
- System.out.println(CliStrings.format(CliStrings.VALIDATE_DISK_STORE__MSG__ERROR,
- diskStoreName, e.getMessage()));
+ } else {
+ System.out.println(CliStrings.VALIDATE_DISK_STORE__MSG__NO_DIRS);
}
+ DiskStoreImpl.validate(diskStoreName, dirs);
}
}
diff --git a/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt b/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt
index 84e6546..929dbb1 100644
--- a/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt
+++ b/geode-core/src/main/resources/org/apache/geode/internal/sanctioned-geode-core-serializables.txt
@@ -123,6 +123,7 @@ org/apache/geode/cache/client/internal/pooling/ConnectionDestroyedException,true
org/apache/geode/cache/configuration/CacheConfig$AsyncEventQueue,false,asyncEventListener:org/apache/geode/cache/configuration/DeclarableType,batchSize:java/lang/String,batchTimeInterval:java/lang/String,diskStoreName:java/lang/String,diskSynchronous:java/lang/Boolean,dispatcherThreads:java/lang/String,enableBatchConflation:java/lang/Boolean,forwardExpirationDestroy:java/lang/Boolean,gatewayEventFilters:java/util/List,gatewayEventSubstitutionFilter:org/apache/geode/cache/configuration/De [...]
org/apache/geode/cache/configuration/ClassNameType,false,className:java/lang/String
org/apache/geode/cache/configuration/DeclarableType,false,parameters:java/util/List
+org/apache/geode/cache/configuration/DiskStoreType,false,allowForceCompaction:java/lang/Boolean,autoCompact:java/lang/Boolean,compactionThreshold:java/lang/String,diskDirs:org/apache/geode/cache/configuration/DiskDirsType,diskUsageCriticalPercentage:java/lang/String,diskUsageWarningPercentage:java/lang/String,maxOplogSize:java/lang/String,name:java/lang/String,queueSize:java/lang/String,timeInterval:java/lang/String,writeBufferSize:java/lang/String
org/apache/geode/cache/configuration/EnumActionDestroyOverflow,false,value:java/lang/String
org/apache/geode/cache/configuration/EnumReadableWritable,false,value:java/lang/String
org/apache/geode/cache/configuration/JndiBindingsType$JndiBinding,false,blockingTimeoutSeconds:java/lang/String,configProperties:java/util/List,connPooledDatasourceClass:java/lang/String,connectionUrl:java/lang/String,idleTimeoutSeconds:java/lang/String,initPoolSize:java/lang/String,jdbcDriverClass:java/lang/String,jndiName:java/lang/String,loginTimeoutSeconds:java/lang/String,managedConnFactoryClass:java/lang/String,maxPoolSize:java/lang/String,password:java/lang/String,transactionType: [...]