This is an automated email from the ASF dual-hosted git repository.
siyao 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 e76f312183 HDDS-7772. Enable snapshot feature with Layout Upgrade in
new version (#4634)
e76f312183 is described below
commit e76f312183ca29cda8abcf963963d32223388b77
Author: DaveTeng0 <[email protected]>
AuthorDate: Tue May 30 17:24:00 2023 -0700
HDDS-7772. Enable snapshot feature with Layout Upgrade in new version
(#4634)
---
hadoop-ozone/dist/src/main/compose/ozone/test.sh | 2 +-
.../callbacks/1.4.0/callback.sh | 32 ++++++++
.../snapshot/upgrade-snapshot-check.robot | 87 ++++++++++++++++++++++
.../org/apache/hadoop/ozone/om/TestOmSnapshot.java | 74 ++++++++++++++++++
.../request/snapshot/OMSnapshotCreateRequest.java | 3 +
.../request/snapshot/OMSnapshotDeleteRequest.java | 3 +
.../snapshot/OMSnapshotMoveDeletedKeysRequest.java | 3 +
.../hadoop/ozone/om/upgrade/OMLayoutFeature.java | 4 +-
.../protocolPB/OzoneManagerRequestHandler.java | 3 +
.../ozone/om/request/key/TestOMKeyRequest.java | 2 +-
.../snapshot/TestOMSnapshotCreateRequest.java | 3 +-
.../snapshot/TestOMSnapshotDeleteRequest.java | 3 +-
.../TestOMSnapshotPurgeRequestAndResponse.java | 3 +-
13 files changed, 216 insertions(+), 6 deletions(-)
diff --git a/hadoop-ozone/dist/src/main/compose/ozone/test.sh
b/hadoop-ozone/dist/src/main/compose/ozone/test.sh
index 30a53e3714..2958f90b56 100755
--- a/hadoop-ozone/dist/src/main/compose/ozone/test.sh
+++ b/hadoop-ozone/dist/src/main/compose/ozone/test.sh
@@ -69,7 +69,7 @@ execute_robot_test scm -v PREFIX:${prefix} ec/read.robot
execute_robot_test s3g grpc/grpc-om-s3-metrics.robot
-execute_robot_test scm snapshot
+execute_robot_test scm --exclude pre-finalized-snapshot-tests snapshot
stop_docker_env
diff --git
a/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/non-rolling-upgrade/callbacks/1.4.0/callback.sh
b/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/non-rolling-upgrade/callbacks/1.4.0/callback.sh
new file mode 100644
index 0000000000..a0c9aa02b9
--- /dev/null
+++
b/hadoop-ozone/dist/src/main/compose/upgrade/upgrades/non-rolling-upgrade/callbacks/1.4.0/callback.sh
@@ -0,0 +1,32 @@
+#!/usr/bin/env bash
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+source "$TEST_DIR"/testlib.sh
+
+
+### CALLBACKS ###
+
+with_this_version_pre_finalized() {
+ execute_robot_test "$SCM" --include pre-finalized
upgrade/check-finalization.robot
+ execute_robot_test "$SCM" --include pre-finalized-snapshot-tests
snapshot/upgrade-snapshot-check.robot
+}
+
+with_this_version_finalized() {
+ execute_robot_test "$SCM" --include finalized
upgrade/check-finalization.robot
+ execute_robot_test "$SCM" --include finalized-snapshot-tests
snapshot/upgrade-snapshot-check.robot
+}
+
diff --git
a/hadoop-ozone/dist/src/main/smoketest/snapshot/upgrade-snapshot-check.robot
b/hadoop-ozone/dist/src/main/smoketest/snapshot/upgrade-snapshot-check.robot
new file mode 100644
index 0000000000..c4091f9771
--- /dev/null
+++ b/hadoop-ozone/dist/src/main/smoketest/snapshot/upgrade-snapshot-check.robot
@@ -0,0 +1,87 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+Documentation Smoketest ozone cluster snapshot feature
+Library OperatingSystem
+Library BuiltIn
+Resource ../commonlib.robot
+Test Timeout 5 minutes
+
+*** Variables ***
+
+
+*** Test Cases ***
+Create snapshots
+ [Tags] finalized-snapshot-tests
+ ${output} = Execute ozone sh volume create
snapvolume-1
+ Should not contain ${output} Failed
+ ${output} = Execute ozone sh bucket create
/snapvolume-1/snapbucket-1
+ Should not contain ${output} Failed
+ ${output} = Execute ozone sh snapshot create
/snapvolume-1/snapbucket-1 snapshot1
+ Should not contain ${output} Failed
+ Execute and checkrc echo "key created using Ozone
Shell" > /tmp/sourcekey 0
+ Execute ozone sh key put
/snapvolume-1/snapbucket-1/key1 /tmp/sourcekey
+ Execute ozone sh snapshot create
/snapvolume-1/snapbucket-1 snapshot2
+
+Attempt to create snapshot when snapshot feature is disabled
+ [Tags] pre-finalized-snapshot-tests
+ ${output} = Execute And Ignore Error ozone sh volume create
snapvolume-2
+ Should not contain ${output} Failed
+ ${output} = Execute And Ignore Error ozone sh bucket create
/snapvolume-2/snapbucket-1
+ Should not contain ${output} Failed
+ ${output} = Execute and checkrc ozone sh snapshot create
/snapvolume-2/snapbucket-1 snapshot1 255
+ Should contain ${output} NOT_SUPPORTED_OPERATION
+
+List snapshots
+ [Tags] finalized-snapshot-tests
+ ${output} = Execute ozone sh snapshot ls
/snapvolume-1/snapbucket-1
+ Should contain ${output} snapshot1
+ Should contain ${output} snapshot2
+ Should contain ${output} SNAPSHOT_ACTIVE
+
+Attempt to list snapshot when snapshot feature is disabled
+ [Tags] pre-finalized-snapshot-tests
+ ${output} = Execute and checkrc ozone sh snapshot ls
/snapvolume-2/snapbucket-1 255
+ Should contain ${output} NOT_SUPPORTED_OPERATION
+
+Snapshot Diff
+ [Tags] finalized-snapshot-tests
+ WHILE True
+ ${output} = Execute ozone sh snapshot snapshotDiff
/snapvolume-1/snapbucket-1 snapshot1 snapshot2
+ IF "Snapshot diff job is IN_PROGRESS" in """${output}"""
+ Sleep 10s
+ ELSE
+ BREAK
+ END
+ END
+ Should contain ${output} + key1
+
+Attempt to snapshotDiff when snapshot feature is disabled
+ [Tags] pre-finalized-snapshot-tests
+ ${output} = Execute and checkrc ozone sh snapshot
snapshotDiff /snapvolume-2/snapbucket-1 snapshot1 snapshot2 255
+ Should contain ${output} NOT_SUPPORTED_OPERATION
+
+Delete snapshot
+ [Tags] finalized-snapshot-tests
+ ${output} = Execute ozone sh snapshot delete
/snapvolume-1/snapbucket-1 snapshot1
+ Should not contain ${output} Failed
+ ${output} = Execute ozone sh snapshot ls
/snapvolume-1/snapbucket-1
+ Should contain ${output}
SNAPSHOT_DELETED
+
+Attempt to delete when snapshot feature is disabled
+ [Tags] pre-finalized-snapshot-tests
+ ${output} = Execute and checkrc ozone sh snapshot delete
/snapvolume-2/snapbucket-1 snapshot1 255
+ Should contain ${output} NOT_SUPPORTED_OPERATION
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOmSnapshot.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOmSnapshot.java
index 256e903f14..a052e4bb16 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOmSnapshot.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOmSnapshot.java
@@ -45,8 +45,10 @@ import org.apache.hadoop.ozone.om.helpers.OmKeyInfo;
import org.apache.hadoop.ozone.om.helpers.OzoneFileStatus;
import org.apache.hadoop.ozone.om.helpers.SnapshotInfo;
import org.apache.hadoop.ozone.om.protocol.OzoneManagerProtocol;
+import org.apache.hadoop.ozone.om.upgrade.OMLayoutFeature;
import org.apache.hadoop.ozone.snapshot.SnapshotDiffReportOzone;
import org.apache.hadoop.ozone.snapshot.SnapshotDiffResponse;
+import org.apache.hadoop.ozone.upgrade.UpgradeFinalizer;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.ozone.test.GenericTestUtils;
@@ -77,15 +79,19 @@ import java.util.concurrent.TimeoutException;
import java.util.stream.Collectors;
import static org.apache.hadoop.hdds.HddsConfigKeys.HDDS_DB_PROFILE;
+import static
org.apache.hadoop.ozone.admin.scm.FinalizeUpgradeCommandUtil.isDone;
+import static
org.apache.hadoop.ozone.admin.scm.FinalizeUpgradeCommandUtil.isStarting;
import static org.apache.hadoop.ozone.OzoneConsts.OM_KEY_PREFIX;
import static
org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_DEFAULT_BUCKET_LAYOUT;
import static
org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_OM_ENABLE_FILESYSTEM_PATHS;
import static
org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_OM_SNAPSHOT_FORCE_FULL_DIFF;
import static
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.CONTAINS_SNAPSHOT;
import static
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.KEY_NOT_FOUND;
+import static
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.NOT_SUPPORTED_OPERATION_PRIOR_FINALIZATION;
import static
org.apache.hadoop.ozone.om.helpers.BucketLayout.FILE_SYSTEM_OPTIMIZED;
import static org.apache.hadoop.ozone.om.helpers.BucketLayout.OBJECT_STORE;
import static
org.apache.hadoop.ozone.snapshot.SnapshotDiffResponse.JobStatus.DONE;
+import static org.awaitility.Awaitility.with;
import static
org.apache.hadoop.ozone.snapshot.SnapshotDiffResponse.JobStatus.IN_PROGRESS;
import static org.awaitility.Awaitility.await;
import static org.junit.Assert.assertEquals;
@@ -118,6 +124,8 @@ public class TestOmSnapshot {
private static OzoneManager ozoneManager;
private static RDBStore rdbStore;
private static OzoneBucket ozoneBucket;
+ private static final Duration POLL_INTERVAL_DURATION =
Duration.ofMillis(500);
+ private static final Duration POLL_MAX_DURATION = Duration.ofSeconds(10);
@Rule
public Timeout timeout = new Timeout(180, TimeUnit.SECONDS);
@@ -173,6 +181,9 @@ public class TestOmSnapshot {
cluster = MiniOzoneCluster.newBuilder(conf)
.setClusterId(clusterId)
.setScmId(scmId)
+ .setNumOfOzoneManagers(3)
+ .setOmLayoutVersion(OMLayoutFeature.
+ BUCKET_LAYOUT_SUPPORT.layoutVersion())
.setOmId(omId)
.build();
@@ -194,6 +205,69 @@ public class TestOmSnapshot {
// stop the deletion services so that keys can still be read
keyManager.stop();
+ preFinalizationChecks();
+ finalizeOMUpgrade();
+ }
+
+ private static void expectFailurePreFinalization(LambdaTestUtils.
+ VoidCallable eval) throws Exception {
+ OMException ex = Assert.assertThrows(OMException.class,
+ () -> eval.call());
+ Assert.assertEquals(ex.getResult(),
+ NOT_SUPPORTED_OPERATION_PRIOR_FINALIZATION);
+ Assert.assertTrue(ex.getMessage().contains(
+ "cannot be invoked before finalization."));
+ }
+
+ private static void preFinalizationChecks() throws Exception {
+ // None of the snapshot APIs is usable before the upgrade finalization step
+ expectFailurePreFinalization(() ->
+ store.createSnapshot(volumeName, bucketName,
+ UUID.randomUUID().toString()));
+ expectFailurePreFinalization(() ->
+ store.listSnapshot(volumeName, bucketName));
+ expectFailurePreFinalization(() ->
+ store.snapshotDiff(volumeName, bucketName,
+ UUID.randomUUID().toString(),
+ UUID.randomUUID().toString(),
+ "", 1000, false));
+ expectFailurePreFinalization(() ->
+ store.deleteSnapshot(volumeName, bucketName,
+ UUID.randomUUID().toString()));
+ }
+
+ /**
+ * Trigger OM upgrade finalization from the client and block until completion
+ * (status FINALIZATION_DONE).
+ */
+ private static void finalizeOMUpgrade() throws IOException {
+
+ // Trigger OM upgrade finalization. Ref: FinalizeUpgradeSubCommand#call
+ final OzoneManagerProtocol omclient =
+ client.getObjectStore()
+ .getClientProxy().getOzoneManagerClient();
+ final String upgradeClientID = "Test-Upgrade-Client-" + UUID.randomUUID();
+ UpgradeFinalizer.StatusAndMessages finalizationResponse =
+ omclient.finalizeUpgrade(upgradeClientID);
+
+ // The status should transition as soon as the client call above returns
+ Assert.assertTrue(isStarting(finalizationResponse.status()));
+ // Wait for the finalization to be marked as done.
+ // 10s timeout should be plenty.
+ try {
+ with().atMost(POLL_MAX_DURATION)
+ .pollInterval(POLL_INTERVAL_DURATION)
+ .await()
+ .until(() -> {
+ final UpgradeFinalizer.StatusAndMessages progress =
+ omclient.queryUpgradeFinalizationProgress(
+ upgradeClientID, false, false);
+ return isDone(progress.status());
+ });
+ } catch (Exception e) {
+ Assert.fail("Unexpected exception while waiting for "
+ + "the OM upgrade to finalize: " + e.getMessage());
+ }
}
@AfterClass
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/snapshot/OMSnapshotCreateRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/snapshot/OMSnapshotCreateRequest.java
index b84ed60198..1bb1ce2d04 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/snapshot/OMSnapshotCreateRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/snapshot/OMSnapshotCreateRequest.java
@@ -37,6 +37,7 @@ import org.apache.hadoop.ozone.om.request.util.OmResponseUtil;
import org.apache.hadoop.ozone.om.response.OMClientResponse;
import org.apache.hadoop.ozone.om.response.snapshot.OMSnapshotCreateResponse;
import org.apache.hadoop.ozone.om.snapshot.RequireSnapshotFeatureState;
+import org.apache.hadoop.ozone.om.upgrade.DisallowedUntilLayoutVersion;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
import
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.CreateSnapshotRequest;
import
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.CreateSnapshotResponse;
@@ -56,6 +57,7 @@ import java.util.UUID;
import static
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.FILE_ALREADY_EXISTS;
import static
org.apache.hadoop.ozone.om.lock.OzoneManagerLock.Resource.BUCKET_LOCK;
import static
org.apache.hadoop.ozone.om.lock.OzoneManagerLock.Resource.SNAPSHOT_LOCK;
+import static
org.apache.hadoop.ozone.om.upgrade.OMLayoutFeature.FILESYSTEM_SNAPSHOT;
/**
* Handles CreateSnapshot Request.
@@ -90,6 +92,7 @@ public class OMSnapshotCreateRequest extends OMClientRequest {
}
@Override
+ @DisallowedUntilLayoutVersion(FILESYSTEM_SNAPSHOT)
@RequireSnapshotFeatureState(true)
public OMRequest preExecute(OzoneManager ozoneManager) throws IOException {
final OMRequest omRequest = super.preExecute(ozoneManager);
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/snapshot/OMSnapshotDeleteRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/snapshot/OMSnapshotDeleteRequest.java
index 67aa098ca3..3a13339a40 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/snapshot/OMSnapshotDeleteRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/snapshot/OMSnapshotDeleteRequest.java
@@ -34,6 +34,7 @@ import org.apache.hadoop.ozone.om.request.util.OmResponseUtil;
import org.apache.hadoop.ozone.om.response.OMClientResponse;
import org.apache.hadoop.ozone.om.response.snapshot.OMSnapshotDeleteResponse;
import org.apache.hadoop.ozone.om.snapshot.RequireSnapshotFeatureState;
+import org.apache.hadoop.ozone.om.upgrade.DisallowedUntilLayoutVersion;
import
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.DeleteSnapshotRequest;
import
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.DeleteSnapshotResponse;
import
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest;
@@ -51,6 +52,7 @@ import java.io.IOException;
import static
org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.FILE_NOT_FOUND;
import static
org.apache.hadoop.ozone.om.lock.OzoneManagerLock.Resource.BUCKET_LOCK;
import static
org.apache.hadoop.ozone.om.lock.OzoneManagerLock.Resource.SNAPSHOT_LOCK;
+import static
org.apache.hadoop.ozone.om.upgrade.OMLayoutFeature.FILESYSTEM_SNAPSHOT;
/**
* Handles DeleteSnapshot Request.
@@ -64,6 +66,7 @@ public class OMSnapshotDeleteRequest extends OMClientRequest {
}
@Override
+ @DisallowedUntilLayoutVersion(FILESYSTEM_SNAPSHOT)
@RequireSnapshotFeatureState(true)
public OMRequest preExecute(OzoneManager ozoneManager) throws IOException {
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/snapshot/OMSnapshotMoveDeletedKeysRequest.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/snapshot/OMSnapshotMoveDeletedKeysRequest.java
index d930e82149..dc6a24370d 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/snapshot/OMSnapshotMoveDeletedKeysRequest.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/snapshot/OMSnapshotMoveDeletedKeysRequest.java
@@ -31,6 +31,7 @@ import org.apache.hadoop.ozone.om.request.OMClientRequest;
import org.apache.hadoop.ozone.om.request.util.OmResponseUtil;
import org.apache.hadoop.ozone.om.response.OMClientResponse;
import
org.apache.hadoop.ozone.om.response.snapshot.OMSnapshotMoveDeletedKeysResponse;
+import org.apache.hadoop.ozone.om.upgrade.DisallowedUntilLayoutVersion;
import org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos;
import
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.SnapshotMoveKeyInfos;
import
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.OMRequest;
@@ -42,6 +43,7 @@ import java.io.IOException;
import java.util.List;
import static org.apache.hadoop.ozone.om.OmSnapshotManager.getSnapshotPrefix;
+import static
org.apache.hadoop.ozone.om.upgrade.OMLayoutFeature.FILESYSTEM_SNAPSHOT;
/**
* Handles OMSnapshotMoveDeletedKeys Request.
@@ -57,6 +59,7 @@ public class OMSnapshotMoveDeletedKeysRequest extends
OMClientRequest {
}
@Override
+ @DisallowedUntilLayoutVersion(FILESYSTEM_SNAPSHOT)
public OMClientResponse validateAndUpdateCache(OzoneManager ozoneManager,
long trxnLogIndex, OzoneManagerDoubleBufferHelper omDoubleBufferHelper) {
OmSnapshotManager omSnapshotManager = ozoneManager.getOmSnapshotManager();
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeature.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeature.java
index 92512071e5..74160b88a1 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeature.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/upgrade/OMLayoutFeature.java
@@ -40,7 +40,9 @@ public enum OMLayoutFeature implements LayoutFeature {
MULTITENANCY_SCHEMA(3, "Multi-Tenancy Schema"),
- HSYNC(4, "Support hsync");
+ HSYNC(4, "Support hsync"),
+
+ FILESYSTEM_SNAPSHOT(5, "Ozone version supporting snapshot");
/////////////////////////////// /////////////////////////////
// Example OM Layout Feature with Actions
diff --git
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java
index 3fee515a3c..6dbe04e364 100644
---
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java
+++
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/protocolPB/OzoneManagerRequestHandler.java
@@ -121,6 +121,7 @@ import org.apache.hadoop.ozone.security.acl.OzoneObjInfo;
import com.google.common.collect.Lists;
import static
org.apache.hadoop.ozone.om.upgrade.OMLayoutFeature.MULTITENANCY_SCHEMA;
+import static
org.apache.hadoop.ozone.om.upgrade.OMLayoutFeature.FILESYSTEM_SNAPSHOT;
import static
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.DBUpdatesRequest;
import static
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.DBUpdatesResponse;
import static
org.apache.hadoop.ozone.protocol.proto.OzoneManagerProtocolProtos.GetAclRequest;
@@ -1219,6 +1220,7 @@ public class OzoneManagerRequestHandler implements
RequestHandler {
return impl.getS3VolumeContext().getProtobuf();
}
+ @DisallowedUntilLayoutVersion(FILESYSTEM_SNAPSHOT)
private SnapshotDiffResponse snapshotDiff(
SnapshotDiffRequest snapshotDiffRequest) throws IOException {
org.apache.hadoop.ozone.snapshot.SnapshotDiffResponse response =
@@ -1263,6 +1265,7 @@ public class OzoneManagerRequestHandler implements
RequestHandler {
return builder.build();
}
+ @DisallowedUntilLayoutVersion(FILESYSTEM_SNAPSHOT)
private OzoneManagerProtocolProtos.ListSnapshotResponse getSnapshots(
OzoneManagerProtocolProtos.ListSnapshotRequest request)
throws IOException {
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java
index 083c64db4b..d76872e3b9 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/key/TestOMKeyRequest.java
@@ -134,7 +134,7 @@ public class TestOMKeyRequest {
when(ozoneManager.getMetadataManager()).thenReturn(omMetadataManager);
when(ozoneManager.getConfiguration()).thenReturn(ozoneConfiguration);
OMLayoutVersionManager lvm = mock(OMLayoutVersionManager.class);
- when(lvm.getMetadataLayoutVersion()).thenReturn(0);
+ when(lvm.isAllowed(anyString())).thenReturn(true);
when(ozoneManager.getVersionManager()).thenReturn(lvm);
when(ozoneManager.isRatisEnabled()).thenReturn(true);
when(ozoneManager.isFilesystemSnapshotEnabled()).thenReturn(true);
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/snapshot/TestOMSnapshotCreateRequest.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/snapshot/TestOMSnapshotCreateRequest.java
index d901300a70..864d1003c4 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/snapshot/TestOMSnapshotCreateRequest.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/snapshot/TestOMSnapshotCreateRequest.java
@@ -64,6 +64,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -105,7 +106,7 @@ public class TestOMSnapshotCreateRequest {
when(ozoneManager.getBucketOwner(any(), any(),
any(), any())).thenReturn("dummyBucketOwner");
OMLayoutVersionManager lvm = mock(OMLayoutVersionManager.class);
- when(lvm.getMetadataLayoutVersion()).thenReturn(0);
+ when(lvm.isAllowed(anyString())).thenReturn(true);
when(ozoneManager.getVersionManager()).thenReturn(lvm);
AuditLogger auditLogger = mock(AuditLogger.class);
when(ozoneManager.getAuditLogger()).thenReturn(auditLogger);
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/snapshot/TestOMSnapshotDeleteRequest.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/snapshot/TestOMSnapshotDeleteRequest.java
index 6b3ce22ef2..9bd230a34b 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/snapshot/TestOMSnapshotDeleteRequest.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/snapshot/TestOMSnapshotDeleteRequest.java
@@ -63,6 +63,7 @@ import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -104,7 +105,7 @@ public class TestOMSnapshotDeleteRequest {
when(ozoneManager.getBucketOwner(any(), any(),
any(), any())).thenReturn("dummyBucketOwner");
OMLayoutVersionManager lvm = mock(OMLayoutVersionManager.class);
- when(lvm.getMetadataLayoutVersion()).thenReturn(0);
+ when(lvm.isAllowed(anyString())).thenReturn(true);
when(ozoneManager.getVersionManager()).thenReturn(lvm);
AuditLogger auditLogger = mock(AuditLogger.class);
when(ozoneManager.getAuditLogger()).thenReturn(auditLogger);
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/snapshot/TestOMSnapshotPurgeRequestAndResponse.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/snapshot/TestOMSnapshotPurgeRequestAndResponse.java
index 648e62ad13..1a04916ea4 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/snapshot/TestOMSnapshotPurgeRequestAndResponse.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/snapshot/TestOMSnapshotPurgeRequestAndResponse.java
@@ -61,6 +61,7 @@ import java.util.Random;
import java.util.UUID;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -93,7 +94,7 @@ public class TestOMSnapshotPurgeRequestAndResponse {
File testDir = GenericTestUtils.getRandomizedTestDir();
ozoneManager = Mockito.mock(OzoneManager.class);
OMLayoutVersionManager lvm = mock(OMLayoutVersionManager.class);
- when(lvm.getMetadataLayoutVersion()).thenReturn(0);
+ when(lvm.isAllowed(anyString())).thenReturn(true);
when(ozoneManager.getVersionManager()).thenReturn(lvm);
when(ozoneManager.isRatisEnabled()).thenReturn(true);
auditLogger = Mockito.mock(AuditLogger.class);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]