You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by si...@apache.org on 2020/04/15 02:57:44 UTC

[hadoop-ozone] branch master updated: HDDS-3374. Addendum: OMVolumeSetOwnerRequest doesn't check if user is already the owner (#821)

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/hadoop-ozone.git


The following commit(s) were added to refs/heads/master by this push:
     new 8287c72  HDDS-3374. Addendum: OMVolumeSetOwnerRequest doesn't check if user is already the owner (#821)
8287c72 is described below

commit 8287c72c6282a0c6627a68192642303caf12ba81
Author: Siyao Meng <50...@users.noreply.github.com>
AuthorDate: Tue Apr 14 19:57:36 2020 -0700

    HDDS-3374. Addendum: OMVolumeSetOwnerRequest doesn't check if user is already the owner (#821)
---
 .../ozone/client/rpc/TestOzoneRpcClientAbstract.java       | 14 ++++++++++++++
 .../ozone/om/request/volume/OMVolumeSetOwnerRequest.java   | 11 +++++------
 2 files changed, 19 insertions(+), 6 deletions(-)

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 030527a..e993c5b 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
@@ -69,6 +69,7 @@ import org.apache.hadoop.ozone.client.OzoneVolume;
 import org.apache.hadoop.ozone.client.VolumeArgs;
 import org.apache.hadoop.ozone.client.io.OzoneInputStream;
 import org.apache.hadoop.ozone.client.io.OzoneOutputStream;
+import org.apache.hadoop.ozone.client.protocol.ClientProtocol;
 import org.apache.hadoop.ozone.common.OzoneChecksumException;
 import org.apache.hadoop.ozone.container.common.helpers.BlockData;
 import org.apache.hadoop.ozone.container.common.interfaces.Container;
@@ -242,6 +243,19 @@ public abstract class TestOzoneRpcClientAbstract {
   }
 
   @Test
+  public void testVolumeSetOwner() throws IOException {
+    String volumeName = UUID.randomUUID().toString();
+    store.createVolume(volumeName);
+
+    String ownerName = "someRandomUser1";
+
+    ClientProtocol proxy = store.getClientProxy();
+    proxy.setVolumeOwner(volumeName, ownerName);
+    // Set owner again
+    proxy.setVolumeOwner(volumeName, ownerName);
+  }
+
+  @Test
   public void testSetVolumeQuota()
       throws IOException {
     String volumeName = UUID.randomUUID().toString();
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/OMVolumeSetOwnerRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/OMVolumeSetOwnerRequest.java
index fd0898d..36dcf64 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/OMVolumeSetOwnerRequest.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/volume/OMVolumeSetOwnerRequest.java
@@ -112,7 +112,6 @@ public class OMVolumeSetOwnerRequest extends OMVolumeRequest {
 
       long maxUserVolumeCount = ozoneManager.getMaxUserVolumeCount();
       String dbVolumeKey = omMetadataManager.getVolumeKey(volume);
-
       OzoneManagerProtocolProtos.UserVolumeInfo oldOwnerVolumeList = null;
       OzoneManagerProtocolProtos.UserVolumeInfo newOwnerVolumeList = null;
       OmVolumeArgs omVolumeArgs = null;
@@ -120,7 +119,6 @@ public class OMVolumeSetOwnerRequest extends OMVolumeRequest {
       acquiredVolumeLock = omMetadataManager.getLock().acquireWriteLock(
           VOLUME_LOCK, volume);
       omVolumeArgs = omMetadataManager.getVolumeTable().get(dbVolumeKey);
-
       if (omVolumeArgs == null) {
         LOG.debug("Changing volume ownership failed for user:{} volume:{}",
             newOwner, volume);
@@ -147,18 +145,19 @@ public class OMVolumeSetOwnerRequest extends OMVolumeRequest {
           .setMessage(
             "Volume '" + volume + "' owner is already '" + newOwner + "'.")
           .setSuccess(false);
-        return new OMVolumeSetOwnerResponse(omResponse.build());
+        omResponse.setSetVolumePropertyResponse(
+            SetVolumePropertyResponse.newBuilder().build());
+        omClientResponse = new OMVolumeSetOwnerResponse(omResponse.build());
+        // Note: addResponseToDoubleBuffer would be executed in finally block.
+        return omClientResponse;
       }
 
       acquiredUserLocks =
           omMetadataManager.getLock().acquireMultiUserLock(newOwner, oldOwner);
-
       oldOwnerVolumeList =
           omMetadataManager.getUserTable().get(oldOwner);
-
       oldOwnerVolumeList = delVolumeFromOwnerList(
           oldOwnerVolumeList, volume, oldOwner, transactionLogIndex);
-
       newOwnerVolumeList = omMetadataManager.getUserTable().get(newOwner);
       newOwnerVolumeList = addVolumeToOwnerList(
           newOwnerVolumeList, volume, newOwner,


---------------------------------------------------------------------
To unsubscribe, e-mail: ozone-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: ozone-commits-help@hadoop.apache.org