You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ud...@apache.org on 2020/07/02 18:10:43 UTC
[geode] 07/29: GEODE-8095 Further rework of the RestoreRedundancy
data objects for serialization (#5281)
This is an automated email from the ASF dual-hosted git repository.
udo pushed a commit to branch feature/GEODE-8294
in repository https://gitbox.apache.org/repos/asf/geode.git
commit 0163bca9fafe7b43bad47890e87e3b62facc99f9
Author: mhansonp <ha...@vmware.com>
AuthorDate: Wed Jun 24 14:25:34 2020 -0700
GEODE-8095 Further rework of the RestoreRedundancy data objects for serialization (#5281)
* Converting a Duration to a Long because of Serialization
* Changes for per requests
---
.../RestoreRedundancyOperationDUnitTest.java | 4 +-
.../codeAnalysis/sanctionedDataSerializables.txt | 4 +-
.../SerializableRestoreRedundancyResultsImpl.java | 16 +--
...rializableRestoreRedundancyResultsImplTest.java | 98 ++++++++++++-------
.../internal/cli/commands/RedundancyCommand.java | 2 +-
.../operation/RegionRedundancyStatusImpl.java | 16 +++
.../operation/RestoreRedundancyResultsImpl.java | 108 +++++++++++++--------
.../operation/RestoreRedundancyRequest.java | 2 +-
.../management/runtime/RegionRedundancyStatus.java | 6 +-
.../runtime/RestoreRedundancyResults.java | 9 +-
.../sanctioned-geode-management-serializables.txt | 3 +-
11 files changed, 178 insertions(+), 90 deletions(-)
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/control/RestoreRedundancyOperationDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/control/RestoreRedundancyOperationDUnitTest.java
index d7c1d4b..9722461 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/control/RestoreRedundancyOperationDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/internal/cache/control/RestoreRedundancyOperationDUnitTest.java
@@ -123,7 +123,7 @@ public class RestoreRedundancyOperationDUnitTest {
RestoreRedundancyResults results = restoreRedundancyAndGetResults(null, null, true);
assertThat(results.getRegionOperationStatus(), is(SUCCESS));
assertThat(results.getTotalPrimaryTransfersCompleted() > 0, is(true));
- assertThat(results.getTotalPrimaryTransferTime().toMillis() > 0, is(true));
+ assertThat(results.getTotalPrimaryTransferTime() > 0, is(true));
assertThat(results.getRegionResult(PARENT_REGION_NAME).getStatus(), is(SATISFIED));
assertThat(results.getRegionResult(CHILD_REGION_NAME).getStatus(), is(SATISFIED));
assertThat(results.getRegionResult(LOW_REDUNDANCY_REGION_NAME).getStatus(), is(SATISFIED));
@@ -146,7 +146,7 @@ public class RestoreRedundancyOperationDUnitTest {
assertThat(results.getRegionOperationStatus(), is(SUCCESS));
assertThat(results.getTotalPrimaryTransfersCompleted(), is(0));
- assertThat(results.getTotalPrimaryTransferTime().toMillis(), is(0L));
+ assertThat(results.getTotalPrimaryTransferTime(), is(0L));
assertThat(results.getRegionResult(PARENT_REGION_NAME).getStatus(), is(SATISFIED));
assertThat(results.getRegionResult(CHILD_REGION_NAME).getStatus(), is(SATISFIED));
assertThat(results.getRegionResult(LOW_REDUNDANCY_REGION_NAME).getStatus(), is(SATISFIED));
diff --git a/geode-core/src/integrationTest/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt b/geode-core/src/integrationTest/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
index b613fa18..1494988 100644
--- a/geode-core/src/integrationTest/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
+++ b/geode-core/src/integrationTest/resources/org/apache/geode/codeAnalysis/sanctionedDataSerializables.txt
@@ -1368,8 +1368,8 @@ fromData,42
toData,37
org/apache/geode/internal/cache/control/SerializableRestoreRedundancyResultsImpl,2
-fromData,65
-toData,61
+fromData,68
+toData,64
org/apache/geode/internal/cache/event/EventSequenceNumberHolder,2
fromData,22
diff --git a/geode-core/src/main/java/org/apache/geode/internal/cache/control/SerializableRestoreRedundancyResultsImpl.java b/geode-core/src/main/java/org/apache/geode/internal/cache/control/SerializableRestoreRedundancyResultsImpl.java
index e02d8a4..c9f80f0 100644
--- a/geode-core/src/main/java/org/apache/geode/internal/cache/control/SerializableRestoreRedundancyResultsImpl.java
+++ b/geode-core/src/main/java/org/apache/geode/internal/cache/control/SerializableRestoreRedundancyResultsImpl.java
@@ -38,8 +38,8 @@ public class SerializableRestoreRedundancyResultsImpl
public void addPrimaryReassignmentDetails(PartitionRebalanceInfo details) {
totalPrimaryTransfersCompleted += details.getPrimaryTransfersCompleted();
- totalPrimaryTransferTime =
- totalPrimaryTransferTime.plusMillis(details.getPrimaryTransferTime());
+ totalPrimaryTransferTime += details.getPrimaryTransferTime();
+
}
@Override
@@ -49,9 +49,9 @@ public class SerializableRestoreRedundancyResultsImpl
@Override
public void toData(DataOutput out, SerializationContext context) throws IOException {
- DataSerializer.writeHashMap(satisfiedRedundancyRegions, out);
- DataSerializer.writeHashMap(underRedundancyRegions, out);
- DataSerializer.writeHashMap(zeroRedundancyRegions, out);
+ DataSerializer.writeHashMap(satisfiedRedundancyRegionsResults, out);
+ DataSerializer.writeHashMap(underRedundancyRegionsResults, out);
+ DataSerializer.writeHashMap(zeroRedundancyRegionsResults, out);
out.writeInt(totalPrimaryTransfersCompleted);
DataSerializer.writeObject(totalPrimaryTransferTime, out);
out.writeBoolean(success);
@@ -61,9 +61,9 @@ public class SerializableRestoreRedundancyResultsImpl
@Override
public void fromData(DataInput in, DeserializationContext context)
throws IOException, ClassNotFoundException {
- satisfiedRedundancyRegions = DataSerializer.readHashMap(in);
- underRedundancyRegions = DataSerializer.readHashMap(in);
- zeroRedundancyRegions = DataSerializer.readHashMap(in);
+ satisfiedRedundancyRegionsResults = DataSerializer.readHashMap(in);
+ underRedundancyRegionsResults = DataSerializer.readHashMap(in);
+ zeroRedundancyRegionsResults = DataSerializer.readHashMap(in);
totalPrimaryTransfersCompleted = in.readInt();
totalPrimaryTransferTime = DataSerializer.readObject(in);
success = DataSerializer.readBoolean(in);
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/control/SerializableRestoreRedundancyResultsImplTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/control/SerializableRestoreRedundancyResultsImplTest.java
index 7d7088f..473ee30 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/control/SerializableRestoreRedundancyResultsImplTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/control/SerializableRestoreRedundancyResultsImplTest.java
@@ -24,26 +24,29 @@ import static org.apache.geode.management.runtime.RegionRedundancyStatus.Redunda
import static org.apache.geode.management.runtime.RegionRedundancyStatus.RedundancyStatus.SATISFIED;
import static org.apache.geode.management.runtime.RestoreRedundancyResults.Status.FAILURE;
import static org.apache.geode.management.runtime.RestoreRedundancyResults.Status.SUCCESS;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.collection.IsIterableContainingInOrder.contains;
-import static org.junit.Assert.assertThat;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import java.time.Duration;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Before;
import org.junit.Test;
import org.apache.geode.cache.partition.PartitionRebalanceInfo;
+import org.apache.geode.management.internal.operation.RegionRedundancyStatusImpl;
+import org.apache.geode.management.internal.operation.RestoreRedundancyResultsImpl;
import org.apache.geode.management.runtime.RegionRedundancyStatus;
import org.apache.geode.management.runtime.RestoreRedundancyResults;
+import org.apache.geode.util.internal.GeodeJsonMapper;
public class SerializableRestoreRedundancyResultsImplTest {
+ public static final String TEST_STRING = "Test";
private final RegionRedundancyStatus successfulRegionResult =
mock(SerializableRegionRedundancyStatusImpl.class);
private final String successfulRegionName = "successfulRegion";
@@ -57,6 +60,7 @@ public class SerializableRestoreRedundancyResultsImplTest {
private final int transfersCompleted = 5;
private final long transferTime = 1234;
private SerializableRestoreRedundancyResultsImpl results;
+ private final ObjectMapper geodeMapper = GeodeJsonMapper.getMapper();
@Before
public void setUp() {
@@ -74,14 +78,14 @@ public class SerializableRestoreRedundancyResultsImplTest {
@Test
public void initialStateIsSuccess() {
results = new SerializableRestoreRedundancyResultsImpl();
- assertThat(results.getRegionOperationStatus(), is(SUCCESS));
+ assertThat(results.getRegionOperationStatus()).isEqualTo(SUCCESS);
}
@Test
public void getStatusReturnsSuccessWhenAllRegionsHaveFullySatisfiedRedundancy() {
results.addRegionResult(successfulRegionResult);
- assertThat(results.getRegionOperationStatus(), is(SUCCESS));
+ assertThat(results.getRegionOperationStatus()).isEqualTo(SUCCESS);
}
@Test
@@ -89,7 +93,7 @@ public class SerializableRestoreRedundancyResultsImplTest {
results.addRegionResult(successfulRegionResult);
results.addRegionResult(underRedundancyRegionResult);
- assertThat(results.getRegionOperationStatus(), is(FAILURE));
+ assertThat(results.getRegionOperationStatus()).isEqualTo(FAILURE);
}
@Test
@@ -97,7 +101,7 @@ public class SerializableRestoreRedundancyResultsImplTest {
results.addRegionResult(successfulRegionResult);
results.addRegionResult(zeroRedundancyRegionResult);
- assertThat(results.getRegionOperationStatus(), is(FAILURE));
+ assertThat(results.getRegionOperationStatus()).isEqualTo(FAILURE);
}
@Test
@@ -110,14 +114,14 @@ public class SerializableRestoreRedundancyResultsImplTest {
String message = results.getRegionOperationMessage();
List<String> messageLines = Arrays.asList(message.split(System.lineSeparator()));
- assertThat(messageLines, contains(NO_REDUNDANT_COPIES_FOR_REGIONS,
+ assertThat(messageLines).contains(NO_REDUNDANT_COPIES_FOR_REGIONS,
zeroRedundancyRegionResult.toString(),
REDUNDANCY_NOT_SATISFIED_FOR_REGIONS,
underRedundancyRegionResult.toString(),
REDUNDANCY_SATISFIED_FOR_REGIONS,
successfulRegionResult.toString(),
PRIMARY_TRANSFERS_COMPLETED + transfersCompleted,
- PRIMARY_TRANSFER_TIME + transferTime));
+ PRIMARY_TRANSFER_TIME + transferTime);
}
@Test
@@ -128,19 +132,20 @@ public class SerializableRestoreRedundancyResultsImplTest {
Map<String, RegionRedundancyStatus> zeroRedundancyResults =
results.getZeroRedundancyRegionResults();
- assertThat(zeroRedundancyResults.size(), is(1));
- assertThat(zeroRedundancyResults.get(zeroRedundancyRegionName), is(zeroRedundancyRegionResult));
+ assertThat(zeroRedundancyResults.size()).isEqualTo(1);
+ assertThat(zeroRedundancyResults.get(zeroRedundancyRegionName))
+ .isEqualTo(zeroRedundancyRegionResult);
Map<String, RegionRedundancyStatus> underRedundancyResults =
results.getUnderRedundancyRegionResults();
- assertThat(underRedundancyResults.size(), is(1));
- assertThat(underRedundancyResults.get(underRedundancyRegionName),
- is(underRedundancyRegionResult));
+ assertThat(underRedundancyResults.size()).isEqualTo(1);
+ assertThat(underRedundancyResults.get(underRedundancyRegionName))
+ .isEqualTo(underRedundancyRegionResult);
Map<String, RegionRedundancyStatus> successfulRegionResults =
results.getSatisfiedRedundancyRegionResults();
- assertThat(successfulRegionResults.size(), is(1));
- assertThat(successfulRegionResults.get(successfulRegionName), is(successfulRegionResult));
+ assertThat(successfulRegionResults.size()).isEqualTo(1);
+ assertThat(successfulRegionResults.get(successfulRegionName)).isEqualTo(successfulRegionResult);
}
@Test
@@ -153,39 +158,66 @@ public class SerializableRestoreRedundancyResultsImplTest {
when(regionResults.getSatisfiedRedundancyRegionResults())
.thenReturn(Collections.singletonMap(successfulRegionName, successfulRegionResult));
when(regionResults.getTotalPrimaryTransfersCompleted()).thenReturn(transfersCompleted);
- when(regionResults.getTotalPrimaryTransferTime()).thenReturn(Duration.ofMillis(transferTime));
+ when(regionResults.getTotalPrimaryTransferTime()).thenReturn(transferTime);
results.addRegionResults(regionResults);
Map<String, RegionRedundancyStatus> zeroRedundancyResults =
results.getZeroRedundancyRegionResults();
- assertThat(zeroRedundancyResults.size(), is(1));
- assertThat(zeroRedundancyResults.get(zeroRedundancyRegionName), is(zeroRedundancyRegionResult));
+ assertThat(zeroRedundancyResults.size()).isEqualTo(1);
+ assertThat(zeroRedundancyResults.get(zeroRedundancyRegionName))
+ .isEqualTo(zeroRedundancyRegionResult);
Map<String, RegionRedundancyStatus> underRedundancyResults =
results.getUnderRedundancyRegionResults();
- assertThat(underRedundancyResults.size(), is(1));
- assertThat(underRedundancyResults.get(underRedundancyRegionName),
- is(underRedundancyRegionResult));
+ assertThat(underRedundancyResults.size()).isEqualTo(1);
+ assertThat(underRedundancyResults.get(underRedundancyRegionName))
+ .isEqualTo(underRedundancyRegionResult);
Map<String, RegionRedundancyStatus> successfulRegionResults =
results.getSatisfiedRedundancyRegionResults();
- assertThat(successfulRegionResults.size(), is(1));
- assertThat(successfulRegionResults.get(successfulRegionName), is(successfulRegionResult));
+ assertThat(successfulRegionResults.size()).isEqualTo(1);
+ assertThat(successfulRegionResults.get(successfulRegionName)).isEqualTo(successfulRegionResult);
- assertThat(results.getTotalPrimaryTransfersCompleted(), is(transfersCompleted));
- assertThat(results.getTotalPrimaryTransferTime().toMillis(), is(transferTime));
+ assertThat(results.getTotalPrimaryTransfersCompleted()).isEqualTo(transfersCompleted);
+ assertThat(results.getTotalPrimaryTransferTime()).isEqualTo(transferTime);
}
@Test
public void addPrimaryDetailsUpdatesValue() {
- assertThat(results.getTotalPrimaryTransfersCompleted(), is(0));
- assertThat(results.getTotalPrimaryTransferTime().toMillis(), is(0L));
+ assertThat(results.getTotalPrimaryTransfersCompleted()).isEqualTo(0);
+ assertThat(results.getTotalPrimaryTransferTime()).isEqualTo(0L);
results.addPrimaryReassignmentDetails(details);
- assertThat(results.getTotalPrimaryTransfersCompleted(), is(transfersCompleted));
- assertThat(results.getTotalPrimaryTransferTime().toMillis(), is(transferTime));
+ assertThat(results.getTotalPrimaryTransfersCompleted()).isEqualTo(transfersCompleted);
+ assertThat(results.getTotalPrimaryTransferTime()).isEqualTo(transferTime);
results.addPrimaryReassignmentDetails(details);
- assertThat(results.getTotalPrimaryTransfersCompleted(), is(transfersCompleted * 2));
- assertThat(results.getTotalPrimaryTransferTime().toMillis(), is(transferTime * 2));
+ assertThat(results.getTotalPrimaryTransfersCompleted()).isEqualTo(transfersCompleted * 2);
+ assertThat(results.getTotalPrimaryTransferTime()).isEqualTo(transferTime * 2);
+ }
+
+ @Test
+ public void testSerializable() throws JsonProcessingException {
+
+ RestoreRedundancyResultsImpl restoreRedundancyResults = new RestoreRedundancyResultsImpl();
+ restoreRedundancyResults.setStatusMessage(TEST_STRING);
+ restoreRedundancyResults.setSuccess(true);
+ restoreRedundancyResults.setTotalPrimaryTransfersCompleted(150);
+ restoreRedundancyResults.setTotalPrimaryTransferTime(250);
+ RegionRedundancyStatusImpl regionRedundancyStatus = new RegionRedundancyStatusImpl();
+ regionRedundancyStatus.setActualRedundancy(1);
+ regionRedundancyStatus.setConfiguredRedundancy(1);
+ regionRedundancyStatus.setRegionName("/foo");
+ regionRedundancyStatus.setStatus(SATISFIED);
+ restoreRedundancyResults.addRegionResult(regionRedundancyStatus);
+ String jsonString = geodeMapper.writeValueAsString(restoreRedundancyResults);
+ // deserialize the class
+
+
+ RestoreRedundancyResultsImpl value =
+ geodeMapper.readValue(jsonString, RestoreRedundancyResultsImpl.class);
+
+ assertThat(value).usingRecursiveComparison().isEqualTo(restoreRedundancyResults);
+
+
}
}
diff --git a/geode-gfsh/src/main/java/org/apache/geode/management/internal/cli/commands/RedundancyCommand.java b/geode-gfsh/src/main/java/org/apache/geode/management/internal/cli/commands/RedundancyCommand.java
index cc14e12..edfd115 100644
--- a/geode-gfsh/src/main/java/org/apache/geode/management/internal/cli/commands/RedundancyCommand.java
+++ b/geode-gfsh/src/main/java/org/apache/geode/management/internal/cli/commands/RedundancyCommand.java
@@ -238,7 +238,7 @@ public class RedundancyCommand extends GfshCommand {
primaries
.addLine(PRIMARY_TRANSFERS_COMPLETED + resultCollector.getTotalPrimaryTransfersCompleted());
primaries
- .addLine(PRIMARY_TRANSFER_TIME + resultCollector.getTotalPrimaryTransferTime().toMillis());
+ .addLine(PRIMARY_TRANSFER_TIME + resultCollector.getTotalPrimaryTransferTime());
}
// Extracted for testing
diff --git a/geode-management/src/main/java/org/apache/geode/management/internal/operation/RegionRedundancyStatusImpl.java b/geode-management/src/main/java/org/apache/geode/management/internal/operation/RegionRedundancyStatusImpl.java
index 7295fa8..0f0c2c40 100644
--- a/geode-management/src/main/java/org/apache/geode/management/internal/operation/RegionRedundancyStatusImpl.java
+++ b/geode-management/src/main/java/org/apache/geode/management/internal/operation/RegionRedundancyStatusImpl.java
@@ -45,6 +45,22 @@ public class RegionRedundancyStatusImpl implements RegionRedundancyStatus {
*/
protected RedundancyStatus status;
+ public void setRegionName(String regionName) {
+ this.regionName = regionName;
+ }
+
+ public void setConfiguredRedundancy(int configuredRedundancy) {
+ this.configuredRedundancy = configuredRedundancy;
+ }
+
+ public void setActualRedundancy(int actualRedundancy) {
+ this.actualRedundancy = actualRedundancy;
+ }
+
+ public void setStatus(RedundancyStatus status) {
+ this.status = status;
+ }
+
/**
* Default constructor used for serialization
*/
diff --git a/geode-management/src/main/java/org/apache/geode/management/internal/operation/RestoreRedundancyResultsImpl.java b/geode-management/src/main/java/org/apache/geode/management/internal/operation/RestoreRedundancyResultsImpl.java
index da49afc..a744f4d 100644
--- a/geode-management/src/main/java/org/apache/geode/management/internal/operation/RestoreRedundancyResultsImpl.java
+++ b/geode-management/src/main/java/org/apache/geode/management/internal/operation/RestoreRedundancyResultsImpl.java
@@ -14,7 +14,6 @@
*/
package org.apache.geode.management.internal.operation;
-import java.time.Duration;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -38,24 +37,54 @@ public class RestoreRedundancyResultsImpl implements RestoreRedundancyResults {
public static final String PRIMARY_TRANSFER_TIME = "Total primary transfer time (ms) = ";
private static final long serialVersionUID = -1174735246756963521L;
- protected Map<String, RegionRedundancyStatus> zeroRedundancyRegions = new HashMap<>();
- protected Map<String, RegionRedundancyStatus> underRedundancyRegions = new HashMap<>();
- protected Map<String, RegionRedundancyStatus> satisfiedRedundancyRegions = new HashMap<>();
+ protected Map<String, RegionRedundancyStatus> zeroRedundancyRegionsResults = new HashMap<>();
+ protected Map<String, RegionRedundancyStatus> underRedundancyRegionsResults = new HashMap<>();
+ protected Map<String, RegionRedundancyStatus> satisfiedRedundancyRegionsResults = new HashMap<>();
protected int totalPrimaryTransfersCompleted;
- protected Duration totalPrimaryTransferTime = Duration.ZERO;
+ protected long totalPrimaryTransferTime = 0;
protected boolean success = true;
protected String statusMessage;
protected final List<String> includedRegionsWithNoMembers = new ArrayList<>();
+ private RegionRedundancyStatus regionResult;
+
+ public void setZeroRedundancyRegionsResults(
+ Map<String, RegionRedundancyStatus> zeroRedundancyRegionsResults) {
+ this.zeroRedundancyRegionsResults = zeroRedundancyRegionsResults;
+ }
+
+ public void setUnderRedundancyRegionsResults(
+ Map<String, RegionRedundancyStatus> underRedundancyRegionsResults) {
+ this.underRedundancyRegionsResults = underRedundancyRegionsResults;
+ }
+
+ public void setSatisfiedRedundancyRegionsResults(
+ Map<String, RegionRedundancyStatus> satisfiedRedundancyRegionsResults) {
+ this.satisfiedRedundancyRegionsResults = satisfiedRedundancyRegionsResults;
+ }
+
+ public void setTotalPrimaryTransfersCompleted(int totalPrimaryTransfersCompleted) {
+ this.totalPrimaryTransfersCompleted = totalPrimaryTransfersCompleted;
+ }
+
+ public void setTotalPrimaryTransferTime(long totalPrimaryTransferTime) {
+ this.totalPrimaryTransferTime = totalPrimaryTransferTime;
+ }
+
+ public void setRegionResult(RegionRedundancyStatus regionResult) {
+ this.regionResult = regionResult;
+ }
+
+
+ public RestoreRedundancyResultsImpl() {}
public void addRegionResults(RestoreRedundancyResults results) {
- satisfiedRedundancyRegions.putAll(results.getSatisfiedRedundancyRegionResults());
- underRedundancyRegions.putAll(results.getUnderRedundancyRegionResults());
- zeroRedundancyRegions.putAll(results.getZeroRedundancyRegionResults());
+ satisfiedRedundancyRegionsResults.putAll(results.getSatisfiedRedundancyRegionResults());
+ underRedundancyRegionsResults.putAll(results.getUnderRedundancyRegionResults());
+ zeroRedundancyRegionsResults.putAll(results.getZeroRedundancyRegionResults());
totalPrimaryTransfersCompleted += results.getTotalPrimaryTransfersCompleted();
- totalPrimaryTransferTime =
- totalPrimaryTransferTime.plus(results.getTotalPrimaryTransferTime());
+ totalPrimaryTransferTime += results.getTotalPrimaryTransferTime();
}
public void addRegionResult(RegionRedundancyStatus regionResult) {
@@ -66,21 +95,21 @@ public class RestoreRedundancyResultsImpl implements RestoreRedundancyResults {
private void addToFilteredMaps(RegionRedundancyStatus regionResult) {
switch (regionResult.getStatus()) {
case NO_REDUNDANT_COPIES:
- zeroRedundancyRegions.put(regionResult.getRegionName(), regionResult);
+ zeroRedundancyRegionsResults.put(regionResult.getRegionName(), regionResult);
break;
case NOT_SATISFIED:
- underRedundancyRegions.put(regionResult.getRegionName(), regionResult);
+ underRedundancyRegionsResults.put(regionResult.getRegionName(), regionResult);
break;
case SATISFIED:
- satisfiedRedundancyRegions.put(regionResult.getRegionName(), regionResult);
+ satisfiedRedundancyRegionsResults.put(regionResult.getRegionName(), regionResult);
break;
}
}
@Override
public Status getRegionOperationStatus() {
- boolean fullySatisfied = zeroRedundancyRegions.isEmpty() && underRedundancyRegions.isEmpty();
-
+ boolean fullySatisfied =
+ zeroRedundancyRegionsResults.isEmpty() && underRedundancyRegionsResults.isEmpty();
return fullySatisfied ? Status.SUCCESS : Status.FAILURE;
}
@@ -89,23 +118,26 @@ public class RestoreRedundancyResultsImpl implements RestoreRedundancyResults {
List<String> messages = new ArrayList<>();
// List regions with redundancy configured but no redundant copies first
- if (!zeroRedundancyRegions.isEmpty()) {
- messages.add(getResultsMessage(zeroRedundancyRegions, NO_REDUNDANT_COPIES_FOR_REGIONS));
+ if (!zeroRedundancyRegionsResults.isEmpty()) {
+ messages
+ .add(getResultsMessage(zeroRedundancyRegionsResults, NO_REDUNDANT_COPIES_FOR_REGIONS));
}
// List failures
- if (!underRedundancyRegions.isEmpty()) {
- messages.add(getResultsMessage(underRedundancyRegions, REDUNDANCY_NOT_SATISFIED_FOR_REGIONS));
+ if (!underRedundancyRegionsResults.isEmpty()) {
+ messages.add(
+ getResultsMessage(underRedundancyRegionsResults, REDUNDANCY_NOT_SATISFIED_FOR_REGIONS));
}
// List successes
- if (!satisfiedRedundancyRegions.isEmpty()) {
- messages.add(getResultsMessage(satisfiedRedundancyRegions, REDUNDANCY_SATISFIED_FOR_REGIONS));
+ if (!satisfiedRedundancyRegionsResults.isEmpty()) {
+ messages.add(
+ getResultsMessage(satisfiedRedundancyRegionsResults, REDUNDANCY_SATISFIED_FOR_REGIONS));
}
// Add info about primaries
messages.add(PRIMARY_TRANSFERS_COMPLETED + totalPrimaryTransfersCompleted);
- messages.add(PRIMARY_TRANSFER_TIME + totalPrimaryTransferTime.toMillis());
+ messages.add(PRIMARY_TRANSFER_TIME + totalPrimaryTransferTime);
return String.join(System.lineSeparator(), messages);
}
@@ -120,37 +152,37 @@ public class RestoreRedundancyResultsImpl implements RestoreRedundancyResults {
@Override
public RegionRedundancyStatus getRegionResult(String regionName) {
- RegionRedundancyStatus result = satisfiedRedundancyRegions.get(regionName);
- if (result == null) {
- result = underRedundancyRegions.get(regionName);
+ regionResult = satisfiedRedundancyRegionsResults.get(regionName);
+ if (regionResult == null) {
+ regionResult = underRedundancyRegionsResults.get(regionName);
}
- if (result == null) {
- result = zeroRedundancyRegions.get(regionName);
+ if (regionResult == null) {
+ regionResult = zeroRedundancyRegionsResults.get(regionName);
}
- return result;
+ return regionResult;
}
@Override
public Map<String, RegionRedundancyStatus> getZeroRedundancyRegionResults() {
- return zeroRedundancyRegions;
+ return zeroRedundancyRegionsResults;
}
@Override
public Map<String, RegionRedundancyStatus> getUnderRedundancyRegionResults() {
- return underRedundancyRegions;
+ return underRedundancyRegionsResults;
}
@Override
public Map<String, RegionRedundancyStatus> getSatisfiedRedundancyRegionResults() {
- return satisfiedRedundancyRegions;
+ return satisfiedRedundancyRegionsResults;
}
@Override
public Map<String, RegionRedundancyStatus> getRegionResults() {
Map<String, RegionRedundancyStatus> combinedResults =
- new HashMap<>(satisfiedRedundancyRegions);
- combinedResults.putAll(underRedundancyRegions);
- combinedResults.putAll(zeroRedundancyRegions);
+ new HashMap<>(satisfiedRedundancyRegionsResults);
+ combinedResults.putAll(underRedundancyRegionsResults);
+ combinedResults.putAll(zeroRedundancyRegionsResults);
return combinedResults;
}
@@ -161,7 +193,7 @@ public class RestoreRedundancyResultsImpl implements RestoreRedundancyResults {
}
@Override
- public Duration getTotalPrimaryTransferTime() {
+ public long getTotalPrimaryTransferTime() {
return totalPrimaryTransferTime;
}
@@ -195,9 +227,9 @@ public class RestoreRedundancyResultsImpl implements RestoreRedundancyResults {
@Override
public String toString() {
return "RestoreRedundancyResultsImpl{" +
- "zeroRedundancyRegions=" + zeroRedundancyRegions +
- ", underRedundancyRegions=" + underRedundancyRegions +
- ", satisfiedRedundancyRegions=" + satisfiedRedundancyRegions +
+ "zeroRedundancyRegions=" + zeroRedundancyRegionsResults +
+ ", underRedundancyRegions=" + underRedundancyRegionsResults +
+ ", satisfiedRedundancyRegions=" + satisfiedRedundancyRegionsResults +
", totalPrimaryTransfersCompleted=" + totalPrimaryTransfersCompleted +
", totalPrimaryTransferTime=" + totalPrimaryTransferTime +
", success=" + success +
diff --git a/geode-management/src/main/java/org/apache/geode/management/operation/RestoreRedundancyRequest.java b/geode-management/src/main/java/org/apache/geode/management/operation/RestoreRedundancyRequest.java
index 2ec36d6..e0b2d1c 100644
--- a/geode-management/src/main/java/org/apache/geode/management/operation/RestoreRedundancyRequest.java
+++ b/geode-management/src/main/java/org/apache/geode/management/operation/RestoreRedundancyRequest.java
@@ -36,7 +36,7 @@ public class RestoreRedundancyRequest
/**
* see {@link #getEndpoint()}
*/
- private static final String RESTORE_REDUNDANCY_ENDPOINT = "/operations/restoreRedundancy";
+ public static final String RESTORE_REDUNDANCY_ENDPOINT = "/operations/restoreRedundancy";
private static final long serialVersionUID = -3896185413062876188L;
/** null means all regions included */
private List<String> includeRegions;
diff --git a/geode-management/src/main/java/org/apache/geode/management/runtime/RegionRedundancyStatus.java b/geode-management/src/main/java/org/apache/geode/management/runtime/RegionRedundancyStatus.java
index 74c6e62..e25bbec 100644
--- a/geode-management/src/main/java/org/apache/geode/management/runtime/RegionRedundancyStatus.java
+++ b/geode-management/src/main/java/org/apache/geode/management/runtime/RegionRedundancyStatus.java
@@ -14,13 +14,17 @@
*/
package org.apache.geode.management.runtime;
+import java.io.Serializable;
+
import org.apache.geode.annotations.Experimental;
+import org.apache.geode.management.api.JsonSerializable;
+
/**
* Used to calculate and store a snapshot of the redundancy status for a partitioned region.
*/
@Experimental
-public interface RegionRedundancyStatus {
+public interface RegionRedundancyStatus extends JsonSerializable, Serializable {
/**
* The redundancy status of the region used to create this object at time of creation.
diff --git a/geode-management/src/main/java/org/apache/geode/management/runtime/RestoreRedundancyResults.java b/geode-management/src/main/java/org/apache/geode/management/runtime/RestoreRedundancyResults.java
index 4d6882a..f932192 100644
--- a/geode-management/src/main/java/org/apache/geode/management/runtime/RestoreRedundancyResults.java
+++ b/geode-management/src/main/java/org/apache/geode/management/runtime/RestoreRedundancyResults.java
@@ -14,10 +14,11 @@
*/
package org.apache.geode.management.runtime;
-import java.time.Duration;
import java.util.List;
import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
import org.apache.geode.annotations.Experimental;
/**
@@ -43,6 +44,7 @@ public interface RestoreRedundancyResults extends OperationResult {
*
* @return The {@link Status} of this restore redundancy operation.
*/
+ @JsonIgnore
Status getRegionOperationStatus();
/**
@@ -50,6 +52,7 @@ public interface RestoreRedundancyResults extends OperationResult {
*
* @return A {@link String} describing the results of this restore redundancy operation.
*/
+ @JsonIgnore
String getRegionOperationMessage();
/**
@@ -114,9 +117,9 @@ public interface RestoreRedundancyResults extends OperationResult {
* Returns the total time spent transferring primaries as part of the restore redundancy
* operations.
*
- * @return A {@link Duration} representing the total time spent transferring primaries
+ * @return A {@link long} representing the total time in milliseconds spent transferring primaries
*/
- Duration getTotalPrimaryTransferTime();
+ long getTotalPrimaryTransferTime();
/**
* If user specified "includedRegion" list, but some of the regions in the list are not found in
diff --git a/geode-management/src/main/resources/org/apache/geode/internal/sanctioned-geode-management-serializables.txt b/geode-management/src/main/resources/org/apache/geode/internal/sanctioned-geode-management-serializables.txt
index 6712b56..8e13504 100644
--- a/geode-management/src/main/resources/org/apache/geode/internal/sanctioned-geode-management-serializables.txt
+++ b/geode-management/src/main/resources/org/apache/geode/internal/sanctioned-geode-management-serializables.txt
@@ -23,7 +23,8 @@ org/apache/geode/management/configuration/Region$ExpirationType,false
org/apache/geode/management/configuration/RegionType,false
org/apache/geode/management/internal/operation/RebalanceRegionResultImpl,false,bucketCreateBytes:long,bucketCreateTimeInMilliseconds:long,bucketCreatesCompleted:int,bucketTransferBytes:long,bucketTransferTimeInMilliseconds:long,bucketTransfersCompleted:int,numOfMembers:int,primaryTransferTimeInMilliseconds:long,primaryTransfersCompleted:int,regionName:java/lang/String,timeInMilliseconds:long
org/apache/geode/management/internal/operation/RebalanceResultImpl,false,rebalanceSummary:java/util/List,statusMessage:java/lang/String,success:boolean
-org/apache/geode/management/internal/operation/RestoreRedundancyResultsImpl,true,-1174735246756963521,includedRegionsWithNoMembers:java/util/List,satisfiedRedundancyRegions:java/util/Map,statusMessage:java/lang/String,success:boolean,totalPrimaryTransferTime:java/time/Duration,totalPrimaryTransfersCompleted:int,underRedundancyRegions:java/util/Map,zeroRedundancyRegions:java/util/Map
+org/apache/geode/management/internal/operation/RegionRedundancyStatusImpl,false,actualRedundancy:int,configuredRedundancy:int,regionName:java/lang/String,status:org/apache/geode/management/runtime/RegionRedundancyStatus$RedundancyStatus
+org/apache/geode/management/internal/operation/RestoreRedundancyResultsImpl,true,-1174735246756963521,includedRegionsWithNoMembers:java/util/List,regionResult:org/apache/geode/management/runtime/RegionRedundancyStatus,satisfiedRedundancyRegionsResults:java/util/Map,statusMessage:java/lang/String,success:boolean,totalPrimaryTransferTime:long,totalPrimaryTransfersCompleted:int,underRedundancyRegionsResults:java/util/Map,zeroRedundancyRegionsResults:java/util/Map
org/apache/geode/management/operation/RebalanceOperation,false,excludeRegions:java/util/List,includeRegions:java/util/List,operator:java/lang/String,simulate:boolean
org/apache/geode/management/operation/RestoreRedundancyRequest,true,-3896185413062876188,excludeRegions:java/util/List,includeRegions:java/util/List,operator:java/lang/String,reassignPrimaries:boolean
org/apache/geode/management/runtime/CacheServerInfo,true,1,bindAddress:java/lang/String,isRunning:boolean,maxConnections:int,maxThreads:int,port:int