Repository: hadoop Updated Branches: refs/heads/trunk eb0b5a844 -> fa2945e7a
HDDS-405. User/volume mapping is not cleaned up during the deletion of the last volume. Contributed by Elek, Marton. Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/fa2945e7 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/fa2945e7 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/fa2945e7 Branch: refs/heads/trunk Commit: fa2945e7a9d9cccb0c6ccaf531c6a34d9d09b489 Parents: eb0b5a8 Author: Anu Engineer <[email protected]> Authored: Thu Sep 6 12:44:08 2018 -0700 Committer: Anu Engineer <[email protected]> Committed: Thu Sep 6 12:44:08 2018 -0700 ---------------------------------------------------------------------- .../hadoop/ozone/om/TestOzoneManager.java | 26 +++++++++++++++++--- .../hadoop/ozone/om/VolumeManagerImpl.java | 2 +- 2 files changed, 23 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/fa2945e7/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManager.java ---------------------------------------------------------------------- diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManager.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManager.java index b6ade60..f309715 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManager.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManager.java @@ -276,10 +276,28 @@ public class TestOzoneManager { Assert.assertTrue(volumeInfo.getVolumeName().equals(volumeName2)); // Make sure volume with _A suffix is successfully deleted. - exception.expect(IOException.class); - exception.expectMessage("Info Volume failed, error:VOLUME_NOT_FOUND"); - volumeArgs = new VolumeArgs(volumeName1, userArgs); - storageHandler.getVolumeInfo(volumeArgs); + try { + volumeArgs = new VolumeArgs(volumeName1, userArgs); + storageHandler.getVolumeInfo(volumeArgs); + Assert.fail("Volume is not deleted"); + } catch (IOException ex) { + Assert.assertEquals("Info Volume failed, error:VOLUME_NOT_FOUND", + ex.getMessage()); + } + //delete the _AA volume, too + storageHandler.deleteVolume(new VolumeArgs(volumeName2, userArgs)); + + //Make sure there is no volume information for the specific user + OMMetadataManager metadataManager = + cluster.getOzoneManager().getMetadataManager(); + + byte[] userKey = metadataManager.getUserKey(userName); + byte[] volumes = metadataManager.getUserTable().get(userKey); + + //that was the last volume of the user, shouldn't be any record here + Assert.assertNull(volumes); + + } // Create a volume and a bucket inside the volume, http://git-wip-us.apache.org/repos/asf/hadoop/blob/fa2945e7/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/VolumeManagerImpl.java ---------------------------------------------------------------------- diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/VolumeManagerImpl.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/VolumeManagerImpl.java index 419b0aa..cf25215 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/VolumeManagerImpl.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/VolumeManagerImpl.java @@ -110,7 +110,7 @@ public class VolumeManagerImpl implements VolumeManager { // Remove the volume from the list prevVolList.remove(volume); if (prevVolList.size() == 0) { - batch.delete(dbUserKey); + batch.delete(metadataManager.getUserTable().getHandle(), dbUserKey); } else { VolumeList newVolList = VolumeList.newBuilder() .addAllVolumeNames(prevVolList).build(); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
