Repository: hadoop
Updated Branches:
  refs/heads/HDFS-7240 087c69ba2 -> f6d656642


HDFS-12205. Ozone: List Key on an empty ozone bucket fails with command failed 
error. Contributed by Lokesh Jain.


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/f6d65664
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/f6d65664
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/f6d65664

Branch: refs/heads/HDFS-7240
Commit: f6d656642c27494d556588ab46dba67884e2b1b9
Parents: 087c69b
Author: Yiqun Lin <yq...@apache.org>
Authored: Tue Sep 26 14:43:52 2017 +0800
Committer: Yiqun Lin <yq...@apache.org>
Committed: Tue Sep 26 14:43:52 2017 +0800

----------------------------------------------------------------------
 .../web/localstorage/OzoneMetadataManager.java  | 11 ++--
 .../hadoop/ozone/web/TestLocalOzoneVolumes.java |  4 ++
 .../hadoop/ozone/web/TestOzoneHelper.java       | 60 ++++++++++++++++++++
 3 files changed, 69 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/f6d65664/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/localstorage/OzoneMetadataManager.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/localstorage/OzoneMetadataManager.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/localstorage/OzoneMetadataManager.java
index c0f9630..69692df 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/localstorage/OzoneMetadataManager.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/web/localstorage/OzoneMetadataManager.java
@@ -634,6 +634,10 @@ public final class OzoneMetadataManager {
       userDB.put(args.getParentName().getBytes(encoding),
           bucketList.toDBString().getBytes(encoding));
 
+      // Update userDB with volume/bucket -> empty key list
+      userDB.put(args.getResourceName().getBytes(encoding),
+          new ListKeys().toDBString().getBytes(encoding));
+
       // and update the metadataDB with volume/bucket->BucketInfo
       metadataDB.put(args.getResourceName().getBytes(encoding),
           bucketInfo.toDBString().getBytes(encoding));
@@ -916,12 +920,7 @@ public final class OzoneMetadataManager {
       ListKeys keyList;
       byte[] bucketListBytes = userDB.get(args.getParentName()
           .getBytes(encoding));
-      if (bucketListBytes == null) {
-        keyList = new ListKeys();
-      } else {
-        keyList = ListKeys.parse(new String(bucketListBytes, encoding));
-      }
-
+      keyList = ListKeys.parse(new String(bucketListBytes, encoding));
       KeyInfo keyInfo;
 
       byte[] objectBytes = metadataDB.get(args.getResourceName()

http://git-wip-us.apache.org/repos/asf/hadoop/blob/f6d65664/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/ozone/web/TestLocalOzoneVolumes.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/ozone/web/TestLocalOzoneVolumes.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/ozone/web/TestLocalOzoneVolumes.java
index 561eaf3..d78bc66 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/ozone/web/TestLocalOzoneVolumes.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/ozone/web/TestLocalOzoneVolumes.java
@@ -178,4 +178,8 @@ public class TestLocalOzoneVolumes extends TestOzoneHelper {
     super.testGetVolumesOfAnotherUserShouldFail(port);
   }
 
+  @Test
+  public void testListKeyOnEmptyBucket() throws IOException {
+    super.testListKeyOnEmptyBucket(port);
+  }
 }

http://git-wip-us.apache.org/repos/asf/hadoop/blob/f6d65664/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/ozone/web/TestOzoneHelper.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/ozone/web/TestOzoneHelper.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/ozone/web/TestOzoneHelper.java
index 5393f33..eb23ac2 100644
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/ozone/web/TestOzoneHelper.java
+++ 
b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/ozone/web/TestOzoneHelper.java
@@ -351,4 +351,64 @@ public class TestOzoneHelper {
     }
   }
 
+  public void testListKeyOnEmptyBucket(int port) throws IOException {
+    SimpleDateFormat format =
+        new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss ZZZ", Locale.US);
+    CloseableHttpClient client = createHttpClient();
+    String volumeName = OzoneUtils.getRequestID().toLowerCase();
+    String bucketName = OzoneUtils.getRequestID().toLowerCase() + "bucket";
+    try {
+
+      HttpPost httppost = new HttpPost(
+          String.format("http://localhost:%d/%s";, port, volumeName));
+      httppost.addHeader(Header.OZONE_VERSION_HEADER,
+          Header.OZONE_V1_VERSION_HEADER);
+      httppost.addHeader(HttpHeaders.DATE,
+          format.format(new Date(Time.monotonicNow())));
+      httppost.addHeader(HttpHeaders.AUTHORIZATION,
+          Header.OZONE_SIMPLE_AUTHENTICATION_SCHEME + " "
+              + OzoneConsts.OZONE_SIMPLE_HDFS_USER);
+      httppost.addHeader(Header.OZONE_USER, 
OzoneConsts.OZONE_SIMPLE_HDFS_USER);
+      HttpResponse response = client.execute(httppost);
+      assertEquals(response.toString(), HTTP_CREATED,
+          response.getStatusLine().getStatusCode());
+      client.close();
+
+      client = createHttpClient();
+      httppost = new HttpPost(String
+          .format("http://localhost:%d/%s/%s";, port, volumeName, bucketName));
+      httppost.addHeader(Header.OZONE_VERSION_HEADER,
+          Header.OZONE_V1_VERSION_HEADER);
+      httppost.addHeader(HttpHeaders.DATE,
+          format.format(new Date(Time.monotonicNow())));
+      httppost.addHeader(HttpHeaders.AUTHORIZATION,
+          Header.OZONE_SIMPLE_AUTHENTICATION_SCHEME + " "
+              + OzoneConsts.OZONE_SIMPLE_HDFS_USER);
+      httppost.addHeader(Header.OZONE_USER, 
OzoneConsts.OZONE_SIMPLE_HDFS_USER);
+      response = client.execute(httppost);
+      assertEquals(response.toString(), HTTP_CREATED,
+          response.getStatusLine().getStatusCode());
+      client.close();
+
+      client = createHttpClient();
+      HttpGet httpget = new HttpGet(String
+          .format("http://localhost:%d/%s/%s";, port, volumeName, bucketName));
+      httpget.addHeader(Header.OZONE_VERSION_HEADER,
+          Header.OZONE_V1_VERSION_HEADER);
+      httpget.addHeader(HttpHeaders.DATE,
+          format.format(new Date(Time.monotonicNow())));
+      httpget.addHeader(HttpHeaders.AUTHORIZATION,
+          Header.OZONE_SIMPLE_AUTHENTICATION_SCHEME + " "
+              + OzoneConsts.OZONE_SIMPLE_HDFS_USER);
+      httpget.addHeader(Header.OZONE_USER, OzoneConsts.OZONE_SIMPLE_HDFS_USER);
+      response = client.execute(httpget);
+      assertEquals(response.toString() + " " + response.getStatusLine()
+              .getReasonPhrase(), HTTP_OK,
+          response.getStatusLine().getStatusCode());
+
+    } finally {
+      client.close();
+    }
+  }
+
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-commits-h...@hadoop.apache.org

Reply via email to