diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneManagerVersion.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneManagerVersion.java index 985c238fd77b..f5031a126511 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneManagerVersion.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ozone/OzoneManagerVersion.java @@ -40,6 +40,8 @@ public enum OzoneManagerVersion implements ComponentVersion { LIGHTWEIGHT_LIST_KEYS(4, "OzoneManager version that supports lightweight" + " listKeys API."), + ATOMIC_REWRITE_KEY(5, "OzoneManager version that supports rewriting key as atomic operation"), + FUTURE_VERSION(-1, "Used internally in the client when the server side is " + " newer and an unknown server version has arrived to the client."); diff --git a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java index 000a19415010..45f6e238e3df 100644 --- a/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java +++ b/hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java @@ -1416,6 +1416,10 @@ public OzoneOutputStream createKey( public OzoneOutputStream rewriteKey(String volumeName, String bucketName, String keyName, long size, long existingKeyGeneration, ReplicationConfig replicationConfig, Map metadata) throws IOException { + if (omVersion.compareTo(OzoneManagerVersion.ATOMIC_REWRITE_KEY) < 0) { + throw new IOException("OzoneManager does not support atomic key rewrite."); + } + createKeyPreChecks(volumeName, bucketName, keyName, replicationConfig); String ownerName = getRealUserInfo().getShortUserName();