This is an automated email from the ASF dual-hosted git repository.

adoroszlai pushed a commit to branch HDDS-10656-atomic-key-overwrite
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to 
refs/heads/HDDS-10656-atomic-key-overwrite by this push:
     new 3b282c774a HDDS-10840. Do not pass owner in KeyArgs when rewriting a 
key (#6710)
3b282c774a is described below

commit 3b282c774aa0c254f97c15bd0b3cbb0749d3cb04
Author: Stephen O'Donnell <[email protected]>
AuthorDate: Tue May 21 16:40:28 2024 +0100

    HDDS-10840. Do not pass owner in KeyArgs when rewriting a key (#6710)
---
 .../main/java/org/apache/hadoop/ozone/client/rpc/RpcClient.java  | 2 --
 .../protocolPB/OzoneManagerProtocolClientSideTranslatorPB.java   | 9 +++++++--
 .../hadoop/ozone/client/rpc/TestOzoneRpcClientAbstract.java      | 2 ++
 3 files changed, 9 insertions(+), 4 deletions(-)

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 cfb94a3950..c34987090f 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 class RpcClient implements ClientProtocol {
     }
 
     createKeyPreChecks(volumeName, bucketName, keyName, replicationConfig);
-    String ownerName = getRealUserInfo().getShortUserName();
 
     OmKeyArgs.Builder builder = new OmKeyArgs.Builder()
         .setVolumeName(volumeName)
@@ -1431,7 +1430,6 @@ public class RpcClient implements ClientProtocol {
         .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 42bef98905..cbe1cb76a3 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 final class 
OzoneManagerProtocolClientSideTranslatorPB
     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 e3b0c4a7a7..7e9abf44e9 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 abstract class TestOzoneRpcClientAbstract {
       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);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to