You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ozone.apache.org by GitBox <gi...@apache.org> on 2021/08/20 11:36:24 UTC

[GitHub] [ozone] bharatviswa504 commented on a change in pull request #2533: HDDS-5370. [FSO] Handle OMClientRequest based on the bucket layout.

bharatviswa504 commented on a change in pull request #2533:
URL: https://github.com/apache/ozone/pull/2533#discussion_r689105915



##########
File path: hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java
##########
@@ -437,4 +450,117 @@ private static ServiceException createLeaderNotReadyException(
     return new ServiceException(leaderNotReadyException);
   }
 
+  public static boolean isBucketFSOptimized(OMRequest omRequest,
+      OzoneManager ozoneManager) {
+    Type cmdType = omRequest.getCmdType();
+    BucketLayout bucketLayout = null;
+    OmBucketInfo buckInfo = null;
+    switch (cmdType) {
+    case AllocateBlock:
+      String volName =
+          omRequest.getAllocateBlockRequest().getKeyArgs().getVolumeName();
+      String buckName =
+          omRequest.getAllocateBlockRequest().getKeyArgs().getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    case CreateKey:
+      volName = omRequest.getCreateKeyRequest().getKeyArgs().getVolumeName();
+      buckName = omRequest.getCreateKeyRequest().getKeyArgs().getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    case CommitKey:
+      volName = omRequest.getCommitKeyRequest().getKeyArgs().getVolumeName();
+      buckName = omRequest.getCommitKeyRequest().getKeyArgs().getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    case DeleteKey:
+      volName = omRequest.getDeleteKeyRequest().getKeyArgs().getVolumeName();
+      buckName = omRequest.getDeleteKeyRequest().getKeyArgs().getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    case CreateFile:
+      volName = omRequest.getCreateFileRequest().getKeyArgs().getVolumeName();
+      buckName = omRequest.getCreateFileRequest().getKeyArgs().getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    case CreateDirectory:
+      volName =
+          omRequest.getCreateDirectoryRequest().getKeyArgs().getVolumeName();
+      buckName =
+          omRequest.getCreateDirectoryRequest().getKeyArgs().getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    case RenameKey:
+      volName = omRequest.getRenameKeyRequest().getKeyArgs().getVolumeName();
+      buckName = omRequest.getRenameKeyRequest().getKeyArgs().getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    case InitiateMultiPartUpload:
+      volName = omRequest.getInitiateMultiPartUploadRequest().getKeyArgs()
+          .getVolumeName();
+      buckName = omRequest.getInitiateMultiPartUploadRequest().getKeyArgs()
+          .getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    case CommitMultiPartUpload:
+      volName = omRequest.getCommitMultiPartUploadRequest().getKeyArgs()
+          .getVolumeName();
+      buckName = omRequest.getCommitMultiPartUploadRequest().getKeyArgs()
+          .getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    case AbortMultiPartUpload:
+      volName = omRequest.getAbortMultiPartUploadRequest().getKeyArgs()
+          .getVolumeName();
+      buckName = omRequest.getAbortMultiPartUploadRequest().getKeyArgs()
+          .getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    case CompleteMultiPartUpload:
+      volName = omRequest.getCompleteMultiPartUploadRequest().getKeyArgs()
+          .getVolumeName();
+      buckName = omRequest.getCompleteMultiPartUploadRequest().getKeyArgs()
+          .getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    default:
+      break;
+    }
+    return BucketLayout.FILE_SYSTEM_OPTIMIZED.equals(bucketLayout);
+  }
+
+  private static OmBucketInfo getOmBucketInfo(OzoneManager ozoneManager,
+      OmBucketInfo buckInfo, String volName, String buckName) {
+    String buckKey =
+        ozoneManager.getMetadataManager().getBucketKey(volName, buckName);
+    try {
+      buckInfo =
+          ozoneManager.getMetadataManager().getBucketTable().get(buckKey);
+    } catch (IOException e) {
+      e.printStackTrace();

Review comment:
       Throw exception here?

##########
File path: hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/ratis/utils/OzoneManagerRatisUtils.java
##########
@@ -437,4 +450,117 @@ private static ServiceException createLeaderNotReadyException(
     return new ServiceException(leaderNotReadyException);
   }
 
+  public static boolean isBucketFSOptimized(OMRequest omRequest,
+      OzoneManager ozoneManager) {
+    Type cmdType = omRequest.getCmdType();
+    BucketLayout bucketLayout = null;
+    OmBucketInfo buckInfo = null;
+    switch (cmdType) {
+    case AllocateBlock:
+      String volName =
+          omRequest.getAllocateBlockRequest().getKeyArgs().getVolumeName();
+      String buckName =
+          omRequest.getAllocateBlockRequest().getKeyArgs().getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    case CreateKey:
+      volName = omRequest.getCreateKeyRequest().getKeyArgs().getVolumeName();
+      buckName = omRequest.getCreateKeyRequest().getKeyArgs().getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    case CommitKey:
+      volName = omRequest.getCommitKeyRequest().getKeyArgs().getVolumeName();
+      buckName = omRequest.getCommitKeyRequest().getKeyArgs().getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    case DeleteKey:
+      volName = omRequest.getDeleteKeyRequest().getKeyArgs().getVolumeName();
+      buckName = omRequest.getDeleteKeyRequest().getKeyArgs().getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    case CreateFile:
+      volName = omRequest.getCreateFileRequest().getKeyArgs().getVolumeName();
+      buckName = omRequest.getCreateFileRequest().getKeyArgs().getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    case CreateDirectory:
+      volName =
+          omRequest.getCreateDirectoryRequest().getKeyArgs().getVolumeName();
+      buckName =
+          omRequest.getCreateDirectoryRequest().getKeyArgs().getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    case RenameKey:
+      volName = omRequest.getRenameKeyRequest().getKeyArgs().getVolumeName();
+      buckName = omRequest.getRenameKeyRequest().getKeyArgs().getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    case InitiateMultiPartUpload:
+      volName = omRequest.getInitiateMultiPartUploadRequest().getKeyArgs()
+          .getVolumeName();
+      buckName = omRequest.getInitiateMultiPartUploadRequest().getKeyArgs()
+          .getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    case CommitMultiPartUpload:
+      volName = omRequest.getCommitMultiPartUploadRequest().getKeyArgs()
+          .getVolumeName();
+      buckName = omRequest.getCommitMultiPartUploadRequest().getKeyArgs()
+          .getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    case AbortMultiPartUpload:
+      volName = omRequest.getAbortMultiPartUploadRequest().getKeyArgs()
+          .getVolumeName();
+      buckName = omRequest.getAbortMultiPartUploadRequest().getKeyArgs()
+          .getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    case CompleteMultiPartUpload:
+      volName = omRequest.getCompleteMultiPartUploadRequest().getKeyArgs()
+          .getVolumeName();
+      buckName = omRequest.getCompleteMultiPartUploadRequest().getKeyArgs()
+          .getBucketName();
+      buckInfo = getOmBucketInfo(ozoneManager, buckInfo, volName, buckName);
+      bucketLayout = getBucketLayout(buckInfo);
+      break;
+    default:
+      break;
+    }
+    return BucketLayout.FILE_SYSTEM_OPTIMIZED.equals(bucketLayout);
+  }
+
+  private static OmBucketInfo getOmBucketInfo(OzoneManager ozoneManager,
+      OmBucketInfo buckInfo, String volName, String buckName) {
+    String buckKey =

Review comment:
       Lock held is missing here?




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



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