This is an automated email from the ASF dual-hosted git repository.
adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 11cc4520e77 HDDS-13423. Log reason for triggering on-demand container
scan (#8854)
11cc4520e77 is described below
commit 11cc4520e77527be1a91f119de82c7f4167273c9
Author: sreejasahithi <[email protected]>
AuthorDate: Mon Aug 4 16:04:24 2025 +0530
HDDS-13423. Log reason for triggering on-demand container scan (#8854)
---
.../ozone/container/common/impl/ContainerSet.java | 8 +++---
.../container/common/impl/HddsDispatcher.java | 2 +-
.../ozone/container/keyvalue/KeyValueHandler.java | 3 ++-
.../ozoneimpl/OnDemandContainerScanner.java | 23 +++++++++++------
.../container/replication/ContainerImporter.java | 2 +-
.../container/common/impl/TestContainerSet.java | 19 ++++++++------
...stContainerReconciliationWithMockDatanodes.java | 5 +++-
.../ozoneimpl/TestOnDemandContainerScanner.java | 29 +++++++++++-----------
.../replication/TestContainerImporter.java | 2 +-
.../TestContainerCommandReconciliation.java | 7 +++---
10 files changed, 59 insertions(+), 41 deletions(-)
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/ContainerSet.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/ContainerSet.java
index 420076506d9..758bf594299 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/ContainerSet.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/ContainerSet.java
@@ -144,11 +144,11 @@ public void
registerOnDemandScanner(OnDemandContainerScanner scanner) {
* exist in the set.
* @param containerID The container in this set to scan.
*/
- public void scanContainer(long containerID) {
+ public void scanContainer(long containerID, String reasonForScan) {
if (containerScanner != null) {
Container<?> container = getContainer(containerID);
if (container != null) {
- containerScanner.scanContainer(container);
+ containerScanner.scanContainer(container, reasonForScan);
} else {
LOG.warn("Request to scan container {} which was not found in the
container set", containerID);
}
@@ -160,11 +160,11 @@ public void scanContainer(long containerID) {
* This is a no-op if no scanner is registered or the container does not
exist in the set.
* @param containerID The container in this set to scan.
*/
- public void scanContainerWithoutGap(long containerID) {
+ public void scanContainerWithoutGap(long containerID, String reasonForScan) {
if (containerScanner != null) {
Container<?> container = getContainer(containerID);
if (container != null) {
- containerScanner.scanContainerWithoutGap(container);
+ containerScanner.scanContainerWithoutGap(container, reasonForScan);
} else {
LOG.warn("Request to scan container {} which was not found in the
container set", containerID);
}
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/HddsDispatcher.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/HddsDispatcher.java
index 3c4b39de50e..ff6e199db29 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/HddsDispatcher.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/impl/HddsDispatcher.java
@@ -434,7 +434,7 @@ && getMissingContainerSet().contains(containerID)) {
// Create a specific exception that signals for on demand scanning
// and move this general scan to where it is more appropriate.
// Add integration tests to test the full functionality.
- containerSet.scanContainer(containerID);
+ containerSet.scanContainer(containerID, result.name());
audit(action, eventType, msg, dispatcherContext,
AuditEventStatus.FAILURE,
new Exception(responseProto.getMessage()));
}
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java
index b79c0b78050..b9c80ce213b 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/keyvalue/KeyValueHandler.java
@@ -1709,7 +1709,8 @@ containerID, peer,
checksumToString(previousDataChecksum), checksumToString(late
}
// Trigger on demand scanner, which will build the merkle tree based on
the newly ingested data.
- containerSet.scanContainerWithoutGap(containerID);
+ containerSet.scanContainerWithoutGap(containerID,
+ "Container reconciliation");
sendICR(container);
}
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/ozoneimpl/OnDemandContainerScanner.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/ozoneimpl/OnDemandContainerScanner.java
index 62f0c08d71e..99dad8f2e1f 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/ozoneimpl/OnDemandContainerScanner.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/ozoneimpl/OnDemandContainerScanner.java
@@ -65,8 +65,8 @@ public OnDemandContainerScanner(
* @return An Optional containing a Future representing the pending scan
task if the task is queued.
* The optional is empty if the task is not queued due to an ongoing scan.
*/
- public Optional<Future<?>> scanContainer(Container<?> container) {
- return scanContainer(container, scannerHelper);
+ public Optional<Future<?>> scanContainer(Container<?> container, String
reasonForScan) {
+ return scanContainer(container, scannerHelper, reasonForScan);
}
/**
@@ -74,11 +74,11 @@ public Optional<Future<?>> scanContainer(Container<?>
container) {
* @return An Optional containing a Future representing the pending scan
task if the task is queued.
* The optional is empty if the task is not queued due to an ongoing scan.
*/
- public Optional<Future<?>> scanContainerWithoutGap(Container<?> container) {
- return scanContainer(container, scannerHelperWithoutGap);
+ public Optional<Future<?>> scanContainerWithoutGap(Container<?> container,
String reasonForScan) {
+ return scanContainer(container, scannerHelperWithoutGap, reasonForScan);
}
- private Optional<Future<?>> scanContainer(Container<?> container,
ContainerScanHelper helper) {
+ private Optional<Future<?>> scanContainer(Container<?> container,
ContainerScanHelper helper, String reasonForScan) {
if (!helper.shouldScanMetadata(container)) {
return Optional.empty();
}
@@ -87,9 +87,14 @@ private Optional<Future<?>> scanContainer(Container<?>
container, ContainerScanH
long containerId = container.getContainerData().getContainerID();
if (addContainerToScheduledContainers(containerId)) {
resultFuture = scanExecutor.submit(() -> {
- performOnDemandScan(container, helper);
+ performOnDemandScan(container, helper, reasonForScan);
removeContainerFromScheduledContainers(containerId);
});
+ } else {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Skipping OnDemandScan for Container {} triggered due to
'{}'. Reason: Already scheduled.",
+ containerId, reasonForScan);
+ }
}
return Optional.ofNullable(resultFuture);
}
@@ -103,7 +108,11 @@ private void removeContainerFromScheduledContainers(
containerRescheduleCheckSet.remove(containerId);
}
- private void performOnDemandScan(Container<?> container, ContainerScanHelper
helper) {
+ private void performOnDemandScan(Container<?> container, ContainerScanHelper
helper, String reasonForScan) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Scheduling OnDemandScan for Container {}, Reason: {}",
+ container.getContainerData().getContainerID(), reasonForScan);
+ }
try {
if (helper.shouldScanData(container)) {
helper.scanData(container, throttler, canceler);
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/replication/ContainerImporter.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/replication/ContainerImporter.java
index a0fee26b9b7..0786ccf0c24 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/replication/ContainerImporter.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/replication/ContainerImporter.java
@@ -125,7 +125,7 @@ public void importContainer(long containerID, Path
tarFilePath,
// After container import is successful, increase used space for the
volume and schedule an OnDemand scan for it
targetVolume.incrementUsedSpace(container.getContainerData().getBytesUsed());
containerSet.addContainerByOverwriteMissingContainer(container);
- containerSet.scanContainer(containerID);
+ containerSet.scanContainer(containerID, "Imported container");
}
} finally {
importContainerProgress.remove(containerID);
diff --git
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/impl/TestContainerSet.java
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/impl/TestContainerSet.java
index ad12e1be8ed..8c54dd848af 100644
---
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/impl/TestContainerSet.java
+++
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/common/impl/TestContainerSet.java
@@ -27,6 +27,7 @@
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -62,6 +63,8 @@ public class TestContainerSet {
private ContainerLayoutVersion layoutVersion;
+ private static final String TEST_SCAN = "Test Scan";
+
private void setLayoutVersion(ContainerLayoutVersion layoutVersion) {
this.layoutVersion = layoutVersion;
}
@@ -293,11 +296,11 @@ public void
testContainerScanHandler(ContainerLayoutVersion layout) throws Excep
setLayoutVersion(layout);
ContainerSet containerSet = createContainerSet();
// Scan when no handler is registered should not throw an exception.
- containerSet.scanContainer(FIRST_ID);
+ containerSet.scanContainer(FIRST_ID, TEST_SCAN);
AtomicLong invocationCount = new AtomicLong();
OnDemandContainerScanner mockScanner =
mock(OnDemandContainerScanner.class);
- when(mockScanner.scanContainer(any())).then(inv -> {
+ when(mockScanner.scanContainer(any(), anyString())).then(inv -> {
KeyValueContainer c = inv.getArgument(0);
// If the handler was incorrectly triggered for a non-existent
container, this assert would fail.
assertEquals(FIRST_ID, c.getContainerData().getContainerID());
@@ -307,11 +310,11 @@ public void
testContainerScanHandler(ContainerLayoutVersion layout) throws Excep
containerSet.registerOnDemandScanner(mockScanner);
// Scan of an existing container when a handler is registered should
trigger a scan.
- containerSet.scanContainer(FIRST_ID);
+ containerSet.scanContainer(FIRST_ID, TEST_SCAN);
assertEquals(1, invocationCount.get());
// Scan of non-existent container should not throw exception or trigger an
additional invocation.
- containerSet.scanContainer(FIRST_ID - 1);
+ containerSet.scanContainer(FIRST_ID - 1, TEST_SCAN);
assertEquals(1, invocationCount.get());
}
@@ -320,11 +323,11 @@ public void
testContainerScanHandlerWithoutGap(ContainerLayoutVersion layout) th
setLayoutVersion(layout);
ContainerSet containerSet = createContainerSet();
// Scan when no handler is registered should not throw an exception.
- containerSet.scanContainer(FIRST_ID);
+ containerSet.scanContainer(FIRST_ID, TEST_SCAN);
AtomicLong invocationCount = new AtomicLong();
OnDemandContainerScanner mockScanner =
mock(OnDemandContainerScanner.class);
- when(mockScanner.scanContainerWithoutGap(any())).then(inv -> {
+ when(mockScanner.scanContainerWithoutGap(any(), anyString())).then(inv -> {
KeyValueContainer c = inv.getArgument(0);
// If the handler was incorrectly triggered for a non-existent
container, this assert would fail.
assertEquals(FIRST_ID, c.getContainerData().getContainerID());
@@ -334,11 +337,11 @@ public void
testContainerScanHandlerWithoutGap(ContainerLayoutVersion layout) th
containerSet.registerOnDemandScanner(mockScanner);
// Scan of an existing container when a handler is registered should
trigger a scan.
- containerSet.scanContainerWithoutGap(FIRST_ID);
+ containerSet.scanContainerWithoutGap(FIRST_ID, TEST_SCAN);
assertEquals(1, invocationCount.get());
// Scan of non-existent container should not throw exception or trigger an
additional invocation.
- containerSet.scanContainerWithoutGap(FIRST_ID - 1);
+ containerSet.scanContainerWithoutGap(FIRST_ID - 1, TEST_SCAN);
assertEquals(1, invocationCount.get());
}
diff --git
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestContainerReconciliationWithMockDatanodes.java
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestContainerReconciliationWithMockDatanodes.java
index 68b144d97b2..d567e209d42 100644
---
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestContainerReconciliationWithMockDatanodes.java
+++
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/keyvalue/TestContainerReconciliationWithMockDatanodes.java
@@ -122,6 +122,8 @@ public class TestContainerReconciliationWithMockDatanodes {
private static final int CHUNKS_PER_BLOCK = 4;
private static final int NUM_DATANODES = 3;
+ private static final String TEST_SCAN = "Test Scan";
+
/**
* Number of corrupt blocks and chunks.
*
@@ -424,7 +426,8 @@ public KeyValueContainer getContainer(long containerID) {
* Triggers a synchronous scan of the container. This method will block
until the scan completes.
*/
public void scanContainer(long containerID) {
- Optional<Future<?>> scanFuture =
onDemandScanner.scanContainerWithoutGap(containerSet.getContainer(containerID));
+ Optional<Future<?>> scanFuture =
onDemandScanner.scanContainerWithoutGap(containerSet.getContainer(containerID),
+ TEST_SCAN);
assertTrue(scanFuture.isPresent());
try {
diff --git
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestOnDemandContainerScanner.java
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestOnDemandContainerScanner.java
index e14ca07aaa1..69b117db123 100644
---
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestOnDemandContainerScanner.java
+++
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/ozoneimpl/TestOnDemandContainerScanner.java
@@ -68,6 +68,7 @@ public class TestOnDemandContainerScanner extends
TestContainerScannersAbstract {
private OnDemandContainerScanner onDemandScanner;
+ private static final String TEST_SCAN = "Test Scan";
@Override
@BeforeEach
@@ -88,7 +89,7 @@ public void testRecentlyScannedContainerIsSkipped() throws
Exception {
public void testBypassScanGap() throws Exception {
setScannedTimestampRecent(healthy);
- Optional<Future<?>> scanFutureOptional =
onDemandScanner.scanContainerWithoutGap(healthy);
+ Optional<Future<?>> scanFutureOptional =
onDemandScanner.scanContainerWithoutGap(healthy, TEST_SCAN);
assertTrue(scanFutureOptional.isPresent());
Future<?> scanFuture = scanFutureOptional.get();
scanFuture.get();
@@ -122,7 +123,7 @@ public void tearDown() {
@Test
public void testScanTimestampUpdated() throws Exception {
- Optional<Future<?>> scanFuture = onDemandScanner.scanContainer(healthy);
+ Optional<Future<?>> scanFuture = onDemandScanner.scanContainer(healthy,
TEST_SCAN);
assertTrue(scanFuture.isPresent());
scanFuture.get().get();
verify(controller, atLeastOnce())
@@ -130,7 +131,7 @@ public void testScanTimestampUpdated() throws Exception {
eq(healthy.getContainerData().getContainerID()), any());
// Metrics for deleted container should not be updated.
- scanFuture = onDemandScanner.scanContainer(healthy);
+ scanFuture = onDemandScanner.scanContainer(healthy, TEST_SCAN);
assertTrue(scanFuture.isPresent());
scanFuture.get().get();
verify(controller, never())
@@ -156,11 +157,11 @@ public void testSameContainerQueuedMultipleTimes() throws
Exception {
latch.await();
return getUnhealthyDataScanResult();
});
- Optional<Future<?>> onGoingScan =
onDemandScanner.scanContainer(corruptData);
+ Optional<Future<?>> onGoingScan =
onDemandScanner.scanContainer(corruptData, TEST_SCAN);
assertTrue(onGoingScan.isPresent());
assertFalse(onGoingScan.get().isDone());
//When scheduling the same container again
- Optional<Future<?>> secondScan =
onDemandScanner.scanContainer(corruptData);
+ Optional<Future<?>> secondScan =
onDemandScanner.scanContainer(corruptData, TEST_SCAN);
//Then the second scan is not scheduled and the first scan can still finish
assertFalse(secondScan.isPresent());
latch.countDown();
@@ -178,11 +179,11 @@ public void testSameOpenContainerQueuedMultipleTimes()
throws Exception {
latch.await();
return getUnhealthyDataScanResult();
});
- Optional<Future<?>> onGoingScan =
onDemandScanner.scanContainer(openCorruptMetadata);
+ Optional<Future<?>> onGoingScan =
onDemandScanner.scanContainer(openCorruptMetadata, TEST_SCAN);
assertTrue(onGoingScan.isPresent());
assertFalse(onGoingScan.get().isDone());
//When scheduling the same container again
- Optional<Future<?>> secondScan =
onDemandScanner.scanContainer(openCorruptMetadata);
+ Optional<Future<?>> secondScan =
onDemandScanner.scanContainer(openCorruptMetadata, TEST_SCAN);
//Then the second scan is not scheduled and the first scan can still finish
assertFalse(secondScan.isPresent());
latch.countDown();
@@ -195,12 +196,12 @@ public void testSameOpenContainerQueuedMultipleTimes()
throws Exception {
@Override
public void testScannerMetrics() throws Exception {
ArrayList<Optional<Future<?>>> resultFutureList = Lists.newArrayList();
- resultFutureList.add(onDemandScanner.scanContainer(corruptData));
- resultFutureList.add(onDemandScanner.scanContainer(openContainer));
- resultFutureList.add(onDemandScanner.scanContainer(openCorruptMetadata));
- resultFutureList.add(onDemandScanner.scanContainer(healthy));
+ resultFutureList.add(onDemandScanner.scanContainer(corruptData,
TEST_SCAN));
+ resultFutureList.add(onDemandScanner.scanContainer(openContainer,
TEST_SCAN));
+ resultFutureList.add(onDemandScanner.scanContainer(openCorruptMetadata,
TEST_SCAN));
+ resultFutureList.add(onDemandScanner.scanContainer(healthy, TEST_SCAN));
// Deleted containers will not count towards the scan count metric.
- resultFutureList.add(onDemandScanner.scanContainer(deletedContainer));
+ resultFutureList.add(onDemandScanner.scanContainer(deletedContainer,
TEST_SCAN));
waitOnScannerToFinish(resultFutureList);
OnDemandScannerMetrics metrics = onDemandScanner.getMetrics();
//Containers with shouldScanData = false shouldn't increase
@@ -269,7 +270,7 @@ public void testShutdownDuringScan() throws Exception {
});
// Start the blocking scan.
- onDemandScanner.scanContainer(healthy);
+ onDemandScanner.scanContainer(healthy, TEST_SCAN);
// Shut down the on demand scanner. This will interrupt the blocked scan
// on the healthy container.
onDemandScanner.shutdown();
@@ -353,7 +354,7 @@ public void testUnhealthyContainersTriggersVolumeScan()
throws Exception {
}
private void scanContainer(Container<?> container) throws Exception {
- Optional<Future<?>> scanFuture = onDemandScanner.scanContainer(container);
+ Optional<Future<?>> scanFuture = onDemandScanner.scanContainer(container,
TEST_SCAN);
if (scanFuture.isPresent()) {
scanFuture.get().get();
}
diff --git
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/replication/TestContainerImporter.java
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/replication/TestContainerImporter.java
index 6bf5fb6bc74..52f184d3e38 100644
---
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/replication/TestContainerImporter.java
+++
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/replication/TestContainerImporter.java
@@ -198,7 +198,7 @@ public void testImportContainerTriggersOnDemandScanner()
throws Exception {
containerImporter.importContainer(containerId, tarFile.toPath(),
targetVolume, NO_COMPRESSION);
- verify(containerSet, atLeastOnce()).scanContainer(containerId);
+ verify(containerSet, atLeastOnce()).scanContainer(containerId, "Imported
container");
}
@Test
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/dn/checksum/TestContainerCommandReconciliation.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/dn/checksum/TestContainerCommandReconciliation.java
index e4e25566bf4..17e70128181 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/dn/checksum/TestContainerCommandReconciliation.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/dn/checksum/TestContainerCommandReconciliation.java
@@ -137,6 +137,7 @@ public class TestContainerCommandReconciliation {
private static DNContainerOperationClient dnClient;
private static final String KEY_NAME = "testkey";
private static final Logger LOG =
LoggerFactory.getLogger(TestContainerCommandReconciliation.class);
+ private static final String TEST_SCAN = "Test Scan";
@TempDir
private static File testDir;
@@ -389,7 +390,7 @@ public void testContainerChecksumWithBlockMissing() throws
Exception {
db.getStore().flushDB();
}
-
datanodeStateMachine.getContainer().getContainerSet().scanContainerWithoutGap(containerID);
+
datanodeStateMachine.getContainer().getContainerSet().scanContainerWithoutGap(containerID,
TEST_SCAN);
waitForDataChecksumsAtSCM(containerID, 2);
ContainerProtos.ContainerChecksumInfo containerChecksumAfterBlockDelete =
readChecksumFile(container.getContainerData());
@@ -438,7 +439,7 @@ public void testContainerChecksumChunkCorruption() throws
Exception {
TestContainerCorruptions.CORRUPT_BLOCK.applyTo(container, blockID);
}
-
datanodeStateMachine.getContainer().getContainerSet().scanContainerWithoutGap(containerID);
+
datanodeStateMachine.getContainer().getContainerSet().scanContainerWithoutGap(containerID,
TEST_SCAN);
waitForDataChecksumsAtSCM(containerID, 2);
ContainerProtos.ContainerChecksumInfo
containerChecksumAfterChunkCorruption =
readChecksumFile(container.getContainerData());
@@ -509,7 +510,7 @@ public void testDataChecksumReportedAtSCM() throws
Exception {
db.getStore().flushDB();
}
-
datanodeStateMachine.getContainer().getContainerSet().scanContainerWithoutGap(containerID);
+
datanodeStateMachine.getContainer().getContainerSet().scanContainerWithoutGap(containerID,
TEST_SCAN);
waitForDataChecksumsAtSCM(containerID, 2);
ContainerProtos.ContainerChecksumInfo containerChecksumAfterBlockDelete =
readChecksumFile(container.getContainerData());
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]