ivandika3 commented on code in PR #10023:
URL: https://github.com/apache/ozone/pull/10023#discussion_r3032764055


##########
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCreateRequest.java:
##########
@@ -497,20 +498,34 @@ protected void validateAtomicRewrite(OmKeyInfo dbKeyInfo, 
KeyArgs keyArgs)
       }
     }
 
-    if (keyArgs.hasExpectedETag()) {
-      String expectedETag = keyArgs.getExpectedETag();
-      if (dbKeyInfo == null) {
-        throw new OMException("Key not found for If-Match",
-            OMException.ResultCodes.KEY_NOT_FOUND);
-      }
-      if (!dbKeyInfo.hasEtag()) {
-        throw new OMException("Key does not have an ETag",
-            OMException.ResultCodes.ETAG_NOT_AVAILABLE);
-      }
-      if (!dbKeyInfo.isEtagEquals(expectedETag)) {
-        throw new OMException("ETag mismatch",
-            OMException.ResultCodes.ETAG_MISMATCH);
-      }
+  }

Review Comment:
   Good point on the ABA problem although it might be fine since the latest 
object is still back to the original content (i.e. A). 
   
   My current worry if a single client sends a PutObject, but retries it again 
(e.g. due to some network restriction, etc), the retry might fail. We can try 
to look into when checking our AWS S3 spec. Saw your 
https://github.com/peterxcli/ozone-s3-compatibility, great initiative!



##########
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCreateRequest.java:
##########
@@ -497,20 +498,34 @@ protected void validateAtomicRewrite(OmKeyInfo dbKeyInfo, 
KeyArgs keyArgs)
       }
     }
 
-    if (keyArgs.hasExpectedETag()) {
-      String expectedETag = keyArgs.getExpectedETag();
-      if (dbKeyInfo == null) {
-        throw new OMException("Key not found for If-Match",
-            OMException.ResultCodes.KEY_NOT_FOUND);
-      }
-      if (!dbKeyInfo.hasEtag()) {
-        throw new OMException("Key does not have an ETag",
-            OMException.ResultCodes.ETAG_NOT_AVAILABLE);
-      }
-      if (!dbKeyInfo.isEtagEquals(expectedETag)) {
-        throw new OMException("ETag mismatch",
-            OMException.ResultCodes.ETAG_MISMATCH);
-      }
+  }

Review Comment:
   Good point on the ABA problem although it might be fine since the latest 
object is still back to the original content (i.e. A). 
   
   My current worry if a single client sends a PutObject, but retries it again 
(e.g. due to some network restriction, etc), the retry might fail. We can try 
to look into when checking our AWS S3 spec compatibility. Saw your 
https://github.com/peterxcli/ozone-s3-compatibility, great initiative!



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to