Skip to content

Commit d1e8b90

Browse files
authored
HDDS-12210. Use correct BootstrapStateHandler.Lock in SnapshotDeletingService (apache#7991)
1 parent b769a26 commit d1e8b90

2 files changed

Lines changed: 16 additions & 8 deletions

File tree

hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OMDBCheckpointServlet.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -649,8 +649,9 @@ static class Lock extends BootstrapStateHandler.Lock {
649649
locks = Stream.of(
650650
om.getKeyManager().getDeletingService(),
651651
om.getKeyManager().getSnapshotSstFilteringService(),
652-
om.getMetadataManager().getStore().getRocksDBCheckpointDiffer(),
653-
om.getKeyManager().getSnapshotDeletingService()
652+
om.getKeyManager().getSnapshotDeletingService(),
653+
om.getKeyManager().getSnapshotDirectoryService(),
654+
om.getMetadataManager().getStore().getRocksDBCheckpointDiffer()
654655
)
655656
.filter(Objects::nonNull)
656657
.map(BootstrapStateHandler::getBootstrapStateLock)

hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/service/SnapshotDeletingService.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import java.util.ArrayList;
3030
import java.util.Iterator;
3131
import java.util.List;
32+
import java.util.Objects;
3233
import java.util.UUID;
3334
import java.util.concurrent.TimeUnit;
3435
import java.util.concurrent.atomic.AtomicBoolean;
@@ -61,6 +62,7 @@
6162
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.SnapshotMoveKeyInfos;
6263
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.SnapshotMoveTableKeysRequest;
6364
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.SnapshotPurgeRequest;
65+
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Status;
6466
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.Type;
6567
import org.apache.ratis.protocol.ClientId;
6668
import org.slf4j.Logger;
@@ -238,7 +240,7 @@ public BackgroundTaskResult call() throws InterruptedException {
238240
return BackgroundTaskResult.EmptyTaskResult.newResult();
239241
}
240242

241-
private void submitSnapshotPurgeRequest(List<String> purgeSnapshotKeys) {
243+
private void submitSnapshotPurgeRequest(List<String> purgeSnapshotKeys) throws InterruptedException {
242244
if (!purgeSnapshotKeys.isEmpty()) {
243245
SnapshotPurgeRequest snapshotPurgeRequest = SnapshotPurgeRequest
244246
.newBuilder()
@@ -251,14 +253,16 @@ private void submitSnapshotPurgeRequest(List<String> purgeSnapshotKeys) {
251253
.setClientId(clientId.toString())
252254
.build();
253255

254-
submitRequest(omRequest);
256+
try (BootstrapStateHandler.Lock lock = getBootstrapStateLock().lock()) {
257+
submitRequest(omRequest);
258+
}
255259
}
256260
}
257261

258262
private void submitSnapshotMoveDeletedKeys(SnapshotInfo snapInfo,
259263
List<SnapshotMoveKeyInfos> deletedKeys,
260264
List<HddsProtos.KeyValue> renamedList,
261-
List<SnapshotMoveKeyInfos> dirsToMove) {
265+
List<SnapshotMoveKeyInfos> dirsToMove) throws InterruptedException {
262266

263267
SnapshotMoveTableKeysRequest.Builder moveDeletedKeysBuilder = SnapshotMoveTableKeysRequest.newBuilder()
264268
.setFromSnapshotID(toProtobuf(snapInfo.getSnapshotId()));
@@ -287,15 +291,18 @@ private void submitSnapshotMoveDeletedKeys(SnapshotInfo snapInfo,
287291
.setSnapshotMoveTableKeysRequest(moveDeletedKeys)
288292
.setClientId(clientId.toString())
289293
.build();
290-
291-
try (BootstrapStateHandler.Lock lock = new BootstrapStateHandler.Lock()) {
294+
try (BootstrapStateHandler.Lock lock = getBootstrapStateLock().lock()) {
292295
submitRequest(omRequest);
293296
}
294297
}
295298

296299
private void submitRequest(OMRequest omRequest) {
297300
try {
298-
OzoneManagerRatisUtils.submitRequest(ozoneManager, omRequest, clientId, getRunCount().get());
301+
Status status =
302+
OzoneManagerRatisUtils.submitRequest(ozoneManager, omRequest, clientId, getRunCount().get()).getStatus();
303+
if (!Objects.equals(status, Status.OK)) {
304+
LOG.error("Request: {} failed with an status: {}. Will retry in the next run.", omRequest, status);
305+
}
299306
} catch (ServiceException e) {
300307
LOG.error("Request: {} fired by SnapshotDeletingService failed. Will retry in the next run", omRequest, e);
301308
}

0 commit comments

Comments
 (0)