diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMDBCheckpointServlet.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMDBCheckpointServlet.java index 1bd739c730dd..7c02df4bebff 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMDBCheckpointServlet.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMDBCheckpointServlet.java @@ -649,8 +649,9 @@ static class Lock extends BootstrapStateHandler.Lock { locks = Stream.of( om.getKeyManager().getDeletingService(), om.getKeyManager().getSnapshotSstFilteringService(), - om.getMetadataManager().getStore().getRocksDBCheckpointDiffer(), - om.getKeyManager().getSnapshotDeletingService() + om.getKeyManager().getSnapshotDeletingService(), + om.getKeyManager().getSnapshotDirectoryService(), + om.getMetadataManager().getStore().getRocksDBCheckpointDiffer() ) .filter(Objects::nonNull) .map(BootstrapStateHandler::getBootstrapStateLock) diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/service/SnapshotDeletingService.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/service/SnapshotDeletingService.java index a567e08d696e..7fabe79a2af2 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/service/SnapshotDeletingService.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/service/SnapshotDeletingService.java @@ -29,6 +29,7 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Objects; import java.util.UUID; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; @@ -61,6 +62,7 @@ import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.SnapshotMoveKeyInfos; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.SnapshotMoveTableKeysRequest; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.SnapshotPurgeRequest; +import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Status; import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Type; import org.apache.ratis.protocol.ClientId; import org.slf4j.Logger; @@ -238,7 +240,7 @@ public BackgroundTaskResult call() throws InterruptedException { return BackgroundTaskResult.EmptyTaskResult.newResult(); } - private void submitSnapshotPurgeRequest(List purgeSnapshotKeys) { + private void submitSnapshotPurgeRequest(List purgeSnapshotKeys) throws InterruptedException { if (!purgeSnapshotKeys.isEmpty()) { SnapshotPurgeRequest snapshotPurgeRequest = SnapshotPurgeRequest .newBuilder() @@ -251,14 +253,16 @@ private void submitSnapshotPurgeRequest(List purgeSnapshotKeys) { .setClientId(clientId.toString()) .build(); - submitRequest(omRequest); + try (BootstrapStateHandler.Lock lock = getBootstrapStateLock().lock()) { + submitRequest(omRequest); + } } } private void submitSnapshotMoveDeletedKeys(SnapshotInfo snapInfo, List deletedKeys, List renamedList, - List dirsToMove) { + List dirsToMove) throws InterruptedException { SnapshotMoveTableKeysRequest.Builder moveDeletedKeysBuilder = SnapshotMoveTableKeysRequest.newBuilder() .setFromSnapshotID(toProtobuf(snapInfo.getSnapshotId())); @@ -287,15 +291,18 @@ private void submitSnapshotMoveDeletedKeys(SnapshotInfo snapInfo, .setSnapshotMoveTableKeysRequest(moveDeletedKeys) .setClientId(clientId.toString()) .build(); - - try (BootstrapStateHandler.Lock lock = new BootstrapStateHandler.Lock()) { + try (BootstrapStateHandler.Lock lock = getBootstrapStateLock().lock()) { submitRequest(omRequest); } } private void submitRequest(OMRequest omRequest) { try { - OzoneManagerRatisUtils.submitRequest(ozoneManager, omRequest, clientId, getRunCount().get()); + Status status = + OzoneManagerRatisUtils.submitRequest(ozoneManager, omRequest, clientId, getRunCount().get()).getStatus(); + if (!Objects.equals(status, Status.OK)) { + LOG.error("Request: {} failed with an status: {}. Will retry in the next run.", omRequest, status); + } } catch (ServiceException e) { LOG.error("Request: {} fired by SnapshotDeletingService failed. Will retry in the next run", omRequest, e); }