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 cfb94a39503d..c34987090f2c 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 @@ -1421,7 +1421,6 @@ public OzoneOutputStream rewriteKey(String volumeName, String bucketName, String } createKeyPreChecks(volumeName, bucketName, keyName, replicationConfig); - String ownerName = getRealUserInfo().getShortUserName(); OmKeyArgs.Builder builder = new OmKeyArgs.Builder() .setVolumeName(volumeName) @@ -1431,7 +1430,6 @@ public OzoneOutputStream rewriteKey(String volumeName, String bucketName, String .setReplicationConfig(replicationConfig) .addAllMetadataGdpr(metadata) .setLatestVersionLocation(getLatestVersionLocation) - .setOwnerName(ownerName) .setExpectedDataGeneration(existingKeyGeneration); OpenKeySession openKey = ozoneManagerClient.openKey(builder.build()); diff --git a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java index 42bef989053c..cbe1cb76a3ff 100644 --- a/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java +++ b/hadoop-ozone/common/src/main/java/org/apache/hadoop/ozone/om/protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java @@ -686,8 +686,13 @@ public OpenKeySession openKey(OmKeyArgs args) throws IOException { KeyArgs.Builder keyArgs = KeyArgs.newBuilder() .setVolumeName(args.getVolumeName()) .setBucketName(args.getBucketName()) - .setKeyName(args.getKeyName()) - .setOwnerName(args.getOwner()); + .setKeyName(args.getKeyName()); + + // When rewriting a key, the owner does not need to be passed, as it is inherited + // from the existing key. Hence it can be null. + if (args.getOwner() != null) { + keyArgs.setOwnerName(args.getOwner()); + } if (args.getAcls() != null) { keyArgs.addAllAcls(args.getAcls().stream().distinct().map(a -> diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClientAbstract.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClientAbstract.java index e3b0c4a7a717..7e9abf44e93a 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClientAbstract.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClientAbstract.java @@ -1133,6 +1133,8 @@ public void testRewriteKey() throws IOException { is.read(fileContent); assertEquals(rewriteValue, new String(fileContent, UTF_8)); } + OzoneKeyDetails rewrittenKeyDetails = bucket.getKey(keyName); + assertEquals(keyDetails.getOwner(), rewrittenKeyDetails.getOwner()); // Delete the key bucket.deleteKey(keyName);