You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by bh...@apache.org on 2021/11/04 17:07:50 UTC
[ozone] branch master updated: HDDS-3369. Cleanup old write-path of
volume in OM. (#2780)
This is an automated email from the ASF dual-hosted git repository.
bharat pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new eb7136d HDDS-3369. Cleanup old write-path of volume in OM. (#2780)
eb7136d is described below
commit eb7136df7b53c77e239e82ff9d9d8063774fc717
Author: Bharat Viswanadham <bh...@apache.org>
AuthorDate: Thu Nov 4 10:07:29 2021 -0700
HDDS-3369. Cleanup old write-path of volume in OM. (#2780)
---
.../org/apache/hadoop/ozone/om/VolumeManager.java | 40 +--
.../apache/hadoop/ozone/om/VolumeManagerImpl.java | 300 ---------------------
.../ozone/genesis/BenchMarkOMKeyAllocation.java | 137 ----------
.../org/apache/hadoop/ozone/genesis/Genesis.java | 2 +-
4 files changed, 2 insertions(+), 477 deletions(-)
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/VolumeManager.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/VolumeManager.java
index 1dc370b..7375cab 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/VolumeManager.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/VolumeManager.java
@@ -17,35 +17,16 @@
package org.apache.hadoop.ozone.om;
import org.apache.hadoop.ozone.om.helpers.OmVolumeArgs;
-import org.apache.hadoop.ozone.protocol.proto
- .OzoneManagerProtocolProtos.OzoneAclInfo;
import java.io.IOException;
import java.util.List;
/**
- * OM volume manager interface.
+ * OM volume manager interface for read operations on a volume.
*/
public interface VolumeManager extends IOzoneAcl {
/**
- * Create a new volume.
- * @param args - Volume args to create a volume
- */
- void createVolume(OmVolumeArgs args)
- throws IOException;
-
- /**
- * Changes the owner of a volume.
- *
- * @param volume - Name of the volume.
- * @param owner - Name of the owner.
- * @throws IOException
- */
- void setOwner(String volume, String owner)
- throws IOException;
-
- /**
* Gets the volume information.
* @param volume - Volume name.
* @return VolumeArgs or exception is thrown.
@@ -54,25 +35,6 @@ public interface VolumeManager extends IOzoneAcl {
OmVolumeArgs getVolumeInfo(String volume) throws IOException;
/**
- * Deletes an existing empty volume.
- *
- * @param volume - Name of the volume.
- * @throws IOException
- */
- void deleteVolume(String volume) throws IOException;
-
- /**
- * Checks if the specified user with a role can access this volume.
- *
- * @param volume - volume
- * @param userAcl - user acl which needs to be checked for access
- * @return true if the user has access for the volume, false otherwise
- * @throws IOException
- */
- boolean checkVolumeAccess(String volume, OzoneAclInfo userAcl)
- throws IOException;
-
- /**
* Returns a list of volumes owned by a given user; if user is null,
* returns all volumes.
*
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 fe50a6c..7041d7b 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
@@ -17,31 +17,22 @@
package org.apache.hadoop.ozone.om;
import java.io.IOException;
-import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.ozone.OzoneAcl;
-import org.apache.hadoop.ozone.OzoneConfigKeys;
import org.apache.hadoop.ozone.om.exceptions.OMException;
import org.apache.hadoop.ozone.om.helpers.OmVolumeArgs;
import org.apache.hadoop.ozone.om.helpers.OzoneAclUtil;
-import org.apache.hadoop.ozone.protocol.proto
- .OzoneManagerProtocolProtos.OzoneAclInfo;
import org.apache.hadoop.ozone.security.acl.OzoneObj;
import org.apache.hadoop.ozone.security.acl.RequestContext;
-import org.apache.hadoop.hdds.utils.db.BatchOperation;
import com.google.common.base.Preconditions;
-import static org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_OM_USER_MAX_VOLUME;
-import static org.apache.hadoop.ozone.om.OMConfigKeys.OZONE_OM_USER_MAX_VOLUME_DEFAULT;
import static org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes;
-import static org.apache.hadoop.ozone.om.exceptions.OMException.ResultCodes.NOT_SUPPORTED_OPERATION;
import static org.apache.hadoop.ozone.om.lock.OzoneManagerLock.Resource.USER_LOCK;
import static org.apache.hadoop.ozone.om.lock.OzoneManagerLock.Resource.VOLUME_LOCK;
-import org.apache.hadoop.ozone.storage.proto.OzoneManagerStorageProtos.PersistedUserVolumeInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -53,9 +44,6 @@ public class VolumeManagerImpl implements VolumeManager {
LoggerFactory.getLogger(VolumeManagerImpl.class);
private final OMMetadataManager metadataManager;
- private final int maxUserVolumeCount;
- private final boolean aclEnabled;
-
/**
* Constructor.
@@ -65,209 +53,6 @@ public class VolumeManagerImpl implements VolumeManager {
public VolumeManagerImpl(OMMetadataManager metadataManager,
OzoneConfiguration conf) {
this.metadataManager = metadataManager;
- this.maxUserVolumeCount = conf.getInt(OZONE_OM_USER_MAX_VOLUME,
- OZONE_OM_USER_MAX_VOLUME_DEFAULT);
- aclEnabled = conf.getBoolean(OzoneConfigKeys.OZONE_ACL_ENABLED,
- OzoneConfigKeys.OZONE_ACL_ENABLED_DEFAULT);
- }
-
- // Helpers to add and delete volume from user list
- private PersistedUserVolumeInfo addVolumeToOwnerList(
- String volume, String owner) throws IOException {
- // Get the volume list
- String dbUserKey = metadataManager.getUserKey(owner);
- PersistedUserVolumeInfo volumeList =
- metadataManager.getUserTable().get(dbUserKey);
- List<String> prevVolList = new ArrayList<>();
- if (volumeList != null) {
- prevVolList.addAll(volumeList.getVolumeNamesList());
- }
-
- // Check the volume count
- if (prevVolList.size() >= maxUserVolumeCount) {
- LOG.debug("Too many volumes for user:{}", owner);
- throw new OMException("Too many volumes for user:" + owner,
- ResultCodes.USER_TOO_MANY_VOLUMES);
- }
-
- // Add the new volume to the list
- prevVolList.add(volume);
- PersistedUserVolumeInfo newVolList = PersistedUserVolumeInfo.newBuilder()
- .addAllVolumeNames(prevVolList).build();
-
- return newVolList;
- }
-
- private PersistedUserVolumeInfo delVolumeFromOwnerList(
- String volume, String owner) throws IOException {
- // Get the volume list
- PersistedUserVolumeInfo volumeList =
- metadataManager.getUserTable().get(owner);
- List<String> prevVolList = new ArrayList<>();
- if (volumeList != null) {
- prevVolList.addAll(volumeList.getVolumeNamesList());
- } else {
- LOG.debug("volume:{} not found for user:{}", volume, owner);
- throw new OMException(ResultCodes.USER_NOT_FOUND);
- }
-
- // Remove the volume from the list
- prevVolList.remove(volume);
- PersistedUserVolumeInfo newVolList = PersistedUserVolumeInfo.newBuilder()
- .addAllVolumeNames(prevVolList).build();
- return newVolList;
- }
-
- /**
- * Creates a volume.
- * @param omVolumeArgs - OmVolumeArgs.
- */
- @Override
- public void createVolume(OmVolumeArgs omVolumeArgs) throws IOException {
- Preconditions.checkNotNull(omVolumeArgs);
-
- boolean acquiredUserLock = false;
- metadataManager.getLock().acquireWriteLock(VOLUME_LOCK,
- omVolumeArgs.getVolume());
- try {
- acquiredUserLock = metadataManager.getLock().acquireWriteLock(USER_LOCK,
- omVolumeArgs.getOwnerName());
- String dbVolumeKey = metadataManager.getVolumeKey(
- omVolumeArgs.getVolume());
- String dbUserKey = metadataManager.getUserKey(
- omVolumeArgs.getOwnerName());
- OmVolumeArgs volumeInfo =
- metadataManager.getVolumeTable().get(dbVolumeKey);
-
- // Check of the volume already exists
- if (volumeInfo != null) {
- LOG.debug("volume:{} already exists", omVolumeArgs.getVolume());
- throw new OMException(ResultCodes.VOLUME_ALREADY_EXISTS);
- }
-
- PersistedUserVolumeInfo volumeList = addVolumeToOwnerList(
- omVolumeArgs.getVolume(), omVolumeArgs.getOwnerName());
-
- // Set creation time
- omVolumeArgs.setCreationTime(System.currentTimeMillis());
-
-
- createVolumeCommitToDB(omVolumeArgs, volumeList, dbVolumeKey,
- dbUserKey);
-
- LOG.debug("created volume:{} user:{}", omVolumeArgs.getVolume(),
- omVolumeArgs.getOwnerName());
- } catch (IOException ex) {
- if (!(ex instanceof OMException)) {
- LOG.error("Volume creation failed for user:{} volume:{}",
- omVolumeArgs.getOwnerName(), omVolumeArgs.getVolume(), ex);
- }
- throw ex;
- } finally {
- if (acquiredUserLock) {
- metadataManager.getLock().releaseWriteLock(USER_LOCK,
- omVolumeArgs.getOwnerName());
- }
- metadataManager.getLock().releaseWriteLock(VOLUME_LOCK,
- omVolumeArgs.getVolume());
- }
- }
-
- private void createVolumeCommitToDB(OmVolumeArgs omVolumeArgs,
- PersistedUserVolumeInfo volumeList, String dbVolumeKey, String dbUserKey)
- throws IOException {
- try (BatchOperation batch = metadataManager.getStore()
- .initBatchOperation()) {
- // Write the vol info
- metadataManager.getVolumeTable().putWithBatch(batch, dbVolumeKey,
- omVolumeArgs);
- metadataManager.getUserTable().putWithBatch(batch, dbUserKey,
- volumeList);
- // Add volume to user list
- metadataManager.getStore().commitBatchOperation(batch);
- } catch (IOException ex) {
- throw ex;
- }
- }
-
- /**
- * Changes the owner of a volume.
- *
- * @param volume - Name of the volume.
- * @param owner - Name of the owner.
- * @throws IOException
- */
- @Override
- public void setOwner(String volume, String owner)
- throws IOException {
- Preconditions.checkNotNull(volume);
- Preconditions.checkNotNull(owner);
- boolean acquiredUsersLock = false;
- String actualOwner = null;
- metadataManager.getLock().acquireWriteLock(VOLUME_LOCK, volume);
- try {
- String dbVolumeKey = metadataManager.getVolumeKey(volume);
- OmVolumeArgs volumeArgs = metadataManager
- .getVolumeTable().get(dbVolumeKey);
- if (volumeArgs == null) {
- LOG.debug("Changing volume ownership failed for user:{} volume:{}",
- owner, volume);
- throw new OMException("Volume " + volume + " is not found",
- ResultCodes.VOLUME_NOT_FOUND);
- }
-
- Preconditions.checkState(volume.equals(volumeArgs.getVolume()));
-
- actualOwner = volumeArgs.getOwnerName();
- String originalOwner = metadataManager.getUserKey(actualOwner);
-
- acquiredUsersLock = metadataManager.getLock().acquireMultiUserLock(owner,
- originalOwner);
- PersistedUserVolumeInfo oldOwnerVolumeList =
- delVolumeFromOwnerList(volume, originalOwner);
-
- String newOwner = metadataManager.getUserKey(owner);
- PersistedUserVolumeInfo newOwnerVolumeList = addVolumeToOwnerList(volume,
- newOwner);
-
- volumeArgs.setOwnerName(owner);
- setOwnerCommitToDB(oldOwnerVolumeList, newOwnerVolumeList,
- volumeArgs, owner);
- } catch (IOException ex) {
- if (!(ex instanceof OMException)) {
- LOG.error("Changing volume ownership failed for user:{} volume:{}",
- owner, volume, ex);
- }
- throw ex;
- } finally {
- if (acquiredUsersLock) {
- metadataManager.getLock().releaseMultiUserLock(owner, actualOwner);
- }
- metadataManager.getLock().releaseWriteLock(VOLUME_LOCK, volume);
- }
- }
-
- private void setOwnerCommitToDB(PersistedUserVolumeInfo oldOwnerVolumeList,
- PersistedUserVolumeInfo newOwnerVolumeList,
- OmVolumeArgs newOwnerVolumeArgs, String oldOwner) throws IOException {
- try (BatchOperation batch = metadataManager.getStore()
- .initBatchOperation()) {
- if (oldOwnerVolumeList.getVolumeNamesList().size() == 0) {
- metadataManager.getUserTable().deleteWithBatch(batch, oldOwner);
- } else {
- metadataManager.getUserTable().putWithBatch(batch, oldOwner,
- oldOwnerVolumeList);
- }
- metadataManager.getUserTable().putWithBatch(batch,
- newOwnerVolumeArgs.getOwnerName(),
- newOwnerVolumeList);
-
- String dbVolumeKey =
- metadataManager.getVolumeKey(newOwnerVolumeArgs.getVolume());
- metadataManager.getVolumeTable().putWithBatch(batch,
- dbVolumeKey, newOwnerVolumeArgs);
- metadataManager.getStore().commitBatchOperation(batch);
- }
}
/**
@@ -302,91 +87,6 @@ public class VolumeManagerImpl implements VolumeManager {
}
/**
- * Deletes an existing empty volume.
- *
- * @param volume - Name of the volume.
- * @throws IOException
- */
- @Override
- public void deleteVolume(String volume) throws IOException {
- Preconditions.checkNotNull(volume);
- String owner = null;
- boolean acquiredUserLock = false;
- metadataManager.getLock().acquireWriteLock(VOLUME_LOCK, volume);
- try {
- owner = getVolumeInfo(volume).getOwnerName();
- acquiredUserLock = metadataManager.getLock().acquireWriteLock(USER_LOCK,
- owner);
- String dbVolumeKey = metadataManager.getVolumeKey(volume);
- OmVolumeArgs volumeArgs =
- metadataManager.getVolumeTable().get(dbVolumeKey);
- if (volumeArgs == null) {
- LOG.debug("volume:{} does not exist", volume);
- throw new OMException("Volume " + volume + " is not found",
- ResultCodes.VOLUME_NOT_FOUND);
- }
-
- if (!metadataManager.isVolumeEmpty(volume)) {
- LOG.debug("volume:{} is not empty", volume);
- throw new OMException(ResultCodes.VOLUME_NOT_EMPTY);
- }
- Preconditions.checkState(volume.equals(volumeArgs.getVolume()));
- // delete the volume from the owner list
- // as well as delete the volume entry
- PersistedUserVolumeInfo newVolumeList = delVolumeFromOwnerList(volume,
- volumeArgs.getOwnerName());
-
-
- deleteVolumeCommitToDB(newVolumeList, volume, owner);
- } catch (IOException ex) {
- if (!(ex instanceof OMException)) {
- LOG.error("Delete volume failed for volume:{}", volume, ex);
- }
- throw ex;
- } finally {
- if (acquiredUserLock) {
- metadataManager.getLock().releaseWriteLock(USER_LOCK, owner);
- }
- metadataManager.getLock().releaseWriteLock(VOLUME_LOCK, volume);
-
- }
- }
-
-
- private void deleteVolumeCommitToDB(PersistedUserVolumeInfo newVolumeList,
- String volume, String owner) throws IOException {
- try (BatchOperation batch = metadataManager.getStore()
- .initBatchOperation()) {
- String dbUserKey = metadataManager.getUserKey(owner);
- if (newVolumeList.getVolumeNamesList().size() == 0) {
- metadataManager.getUserTable().deleteWithBatch(batch, dbUserKey);
- } else {
- metadataManager.getUserTable().putWithBatch(batch, dbUserKey,
- newVolumeList);
- }
- metadataManager.getVolumeTable().deleteWithBatch(batch,
- metadataManager.getVolumeKey(volume));
- metadataManager.getStore().commitBatchOperation(batch);
- }
- }
-
- /**
- * Checks if the specified user with a role can access this volume.
- *
- * @param volume - volume
- * @param userAcl - user acl which needs to be checked for access
- * @return true if the user has access for the volume, false otherwise
- * @throws IOException
- */
- @Override
- public boolean checkVolumeAccess(String volume, OzoneAclInfo userAcl)
- throws IOException {
- Preconditions.checkNotNull(volume);
- Preconditions.checkNotNull(userAcl);
- throw new OMException(NOT_SUPPORTED_OPERATION);
- }
-
- /**
* {@inheritDoc}
*/
@Override
diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/genesis/BenchMarkOMKeyAllocation.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/genesis/BenchMarkOMKeyAllocation.java
deleted file mode 100644
index f45b959..0000000
--- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/genesis/BenchMarkOMKeyAllocation.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hadoop.ozone.genesis;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.commons.lang3.RandomUtils;
-import org.apache.hadoop.hdds.client.BlockID;
-import org.apache.hadoop.hdds.client.RatisReplicationConfig;
-import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
-import org.apache.hadoop.ozone.om.BucketManager;
-import org.apache.hadoop.ozone.om.BucketManagerImpl;
-import org.apache.hadoop.ozone.om.KeyManager;
-import org.apache.hadoop.ozone.om.KeyManagerImpl;
-import org.apache.hadoop.ozone.om.OMConfigKeys;
-import org.apache.hadoop.ozone.om.OmMetadataManagerImpl;
-import org.apache.hadoop.ozone.om.VolumeManager;
-import org.apache.hadoop.ozone.om.VolumeManagerImpl;
-import org.apache.hadoop.ozone.om.helpers.OmBucketInfo;
-import org.apache.hadoop.ozone.om.helpers.OmKeyArgs;
-import org.apache.hadoop.ozone.om.helpers.OmKeyLocationInfo;
-import org.apache.hadoop.ozone.om.helpers.OmVolumeArgs;
-import org.apache.hadoop.ozone.om.helpers.OpenKeySession;
-import org.apache.hadoop.security.UserGroupInformation;
-import org.openjdk.jmh.annotations.Benchmark;
-import org.openjdk.jmh.annotations.Level;
-import org.openjdk.jmh.annotations.Scope;
-import org.openjdk.jmh.annotations.Setup;
-import org.openjdk.jmh.annotations.State;
-import org.openjdk.jmh.annotations.TearDown;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
-/**
- * Benchmark key creation in a bucket in OM.
- */
-@State(Scope.Thread)
-public class BenchMarkOMKeyAllocation {
-
- private static final String TMP_DIR = "java.io.tmpdir";
- private String volumeName = UUID.randomUUID().toString();
- private String bucketName = UUID.randomUUID().toString();
- private KeyManager keyManager;
- private VolumeManager volumeManager;
- private BucketManager bucketManager;
- private String path = Paths.get(System.getProperty(TMP_DIR)).resolve(
- RandomStringUtils.randomNumeric(6)).toFile()
- .getAbsolutePath();
-
- @Setup(Level.Trial)
- public void setup() throws IOException {
- OzoneConfiguration configuration = new OzoneConfiguration();
- configuration.set(OMConfigKeys.OZONE_OM_DB_DIRS, path);
-
- OmMetadataManagerImpl omMetadataManager =
- new OmMetadataManagerImpl(configuration);
- volumeManager = new VolumeManagerImpl(omMetadataManager, configuration);
- bucketManager = new BucketManagerImpl(omMetadataManager);
-
- volumeManager.createVolume(new OmVolumeArgs.Builder().setVolume(volumeName)
- .setAdminName(UserGroupInformation.getLoginUser().getUserName())
- .setOwnerName(UserGroupInformation.getLoginUser().getUserName())
- .build());
-
- bucketManager.createBucket(new OmBucketInfo.Builder()
- .setBucketName(bucketName)
- .setVolumeName(volumeName).build());
-
- keyManager = new KeyManagerImpl(null, omMetadataManager, configuration,
- UUID.randomUUID().toString(), null);
- }
-
- @TearDown(Level.Trial)
- public void cleanup() throws IOException {
- FileUtils.deleteDirectory(new File(path));
- keyManager.stop();
- }
-
- @Benchmark
- public void keyCreation() throws IOException {
- OzoneConfiguration configuration = new OzoneConfiguration();
- configuration.set(OMConfigKeys.OZONE_OM_DB_DIRS, path);
-
- List<OmKeyLocationInfo> keyLocationInfos = getKeyInfoList();
-
- OmKeyArgs omKeyArgs = new OmKeyArgs.Builder().setVolumeName(volumeName)
- .setBucketName(bucketName)
- .setKeyName(UUID.randomUUID().toString())
- .setDataSize(0)
- .setReplicationConfig(
- new RatisReplicationConfig(HddsProtos.ReplicationFactor.THREE))
- .build();
- OpenKeySession openKeySession = keyManager.openKey(omKeyArgs);
- // setting location info list
- omKeyArgs.setLocationInfoList(keyLocationInfos);
- keyManager.commitKey(omKeyArgs, openKeySession.getId());
- }
-
- public List<OmKeyLocationInfo> getKeyInfoList() {
- List<OmKeyLocationInfo> omKeyLocationInfoList = new ArrayList<>();
-
- omKeyLocationInfoList.add(getKeyInfo());
- omKeyLocationInfoList.add(getKeyInfo());
-
- return omKeyLocationInfoList;
- }
-
- public OmKeyLocationInfo getKeyInfo() {
- return new OmKeyLocationInfo.Builder().setBlockID(
- new BlockID(RandomUtils.nextLong(0, 100000000),
- RandomUtils.nextLong(0, 10000000)))
- .setLength(RandomUtils.nextLong(0, 10000000))
- .setOffset(0).build();
- }
-}
diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/genesis/Genesis.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/genesis/Genesis.java
index ddc2f87..605cc42 100644
--- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/genesis/Genesis.java
+++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/genesis/Genesis.java
@@ -50,7 +50,7 @@ public final class Genesis {
+ "Ex. ozone genesis -benchmark BenchMarkContainerStateMap,"
+ "BenchMarkOMKeyAllocation.\n"
+ "Possible benchmarks which can be used are "
- + "{BenchMarkContainerStateMap, BenchMarkOMKeyAllocation, "
+ + "{BenchMarkContainerStateMap, "
+ "BenchMarkOzoneManager, BenchMarkOMClient, "
+ "BenchMarkSCM, BenchMarkMetadataStoreReads, "
+ "BenchMarkMetadataStoreWrites, BenchMarkDatanodeDispatcher, "
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org