bharatviswa504 commented on a change in pull request #448: HDDS-2870. Handle 
replay of KeyCreate requests.
URL: https://github.com/apache/hadoop-ozone/pull/448#discussion_r370836754
 
 

 ##########
 File path: 
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyRequest.java
 ##########
 @@ -250,91 +249,113 @@ public EncryptedKeyVersion run() throws IOException {
    * @return OMClientResponse
    */
   @SuppressWarnings("parameternumber")
-  protected OMClientResponse prepareCreateKeyResponse(@Nonnull KeyArgs keyArgs,
+  protected OMClientResponse prepareCreateKeyResponse(
+      @Nonnull OMResponse.Builder omResponse, @Nonnull KeyArgs keyArgs,
       OmKeyInfo omKeyInfo, @Nonnull List<OmKeyLocationInfo> locations,
-      FileEncryptionInfo encryptionInfo, @Nullable IOException exception,
+      FileEncryptionInfo encryptionInfo,
       long clientID, long transactionLogIndex, @Nonnull String volumeName,
       @Nonnull String bucketName, @Nonnull String keyName,
       @Nonnull OzoneManager ozoneManager, @Nonnull OMAction omAction,
       @Nonnull PrefixManager prefixManager,
       @Nullable OmBucketInfo omBucketInfo) {
 
-    OMResponse.Builder omResponse = OMResponse.newBuilder()
-        .setStatus(OzoneManagerProtocolProtos.Status.OK);
     OMMetadataManager omMetadataManager = ozoneManager.getMetadataManager();
-
-    Map<String, String> auditMap = buildKeyArgsAuditMap(keyArgs);
-
     OMClientResponse omClientResponse = null;
-    if (exception == null) {
-      if (omKeyInfo == null) {
-        // the key does not exist, create a new object, the new blocks are the
-        // version 0
-        omKeyInfo = createKeyInfo(keyArgs, locations, keyArgs.getFactor(),
-            keyArgs.getType(), keyArgs.getDataSize(), encryptionInfo,
-            prefixManager, omBucketInfo, transactionLogIndex);
-      }
+    IOException exception = null;
 
-      long openVersion = omKeyInfo.getLatestVersionLocations().getVersion();
+    Map<String, String> auditMap = buildKeyArgsAuditMap(keyArgs);
 
-      // Append blocks
-      try {
-        omKeyInfo.appendNewBlocks(keyArgs.getKeyLocationsList().stream()
-            .map(OmKeyLocationInfo::getFromProtobuf)
-            .collect(Collectors.toList()), false);
+    if (omKeyInfo == null) {
+      // the key does not exist, create a new object, the new blocks are the
+      // version 0
+      omKeyInfo = createKeyInfo(keyArgs, locations, keyArgs.getFactor(),
+          keyArgs.getType(), keyArgs.getDataSize(), encryptionInfo,
+          prefixManager, omBucketInfo, transactionLogIndex);
+    }
 
-      } catch (IOException ex) {
-        exception = ex;
-      }
+    long openVersion = omKeyInfo.getLatestVersionLocations().getVersion();
 
-      if (exception != null) {
-        LOG.error("{} failed for Key: {} in volume/bucket:{}/{}",
-            omAction.getAction(), keyName, bucketName, volumeName, exception);
-        omClientResponse = createKeyErrorResponse(ozoneManager.getMetrics(),
-            omAction, exception, omResponse);
+    // Append blocks
 
 Review comment:
   I think we are adding blocks only once. But still, if we consolidate the 
logic it will be good. Okay with doing that in a new Jira also.

----------------------------------------------------------------
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.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

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

Reply via email to