This is an automated email from the ASF dual-hosted git repository.

stevel pushed a commit to branch branch-3.4
in repository https://gitbox.apache.org/repos/asf/hadoop.git


The following commit(s) were added to refs/heads/branch-3.4 by this push:
     new 8194b823e92 HADOOP-19557. S3A: S3ABlockOutputStream to never 
log/reject hflush() calls (#7662)
8194b823e92 is described below

commit 8194b823e92445c962d89c1dcbb0837ff183a237
Author: Steve Loughran <ste...@cloudera.com>
AuthorDate: Thu May 1 11:52:58 2025 +0100

    HADOOP-19557. S3A: S3ABlockOutputStream to never log/reject hflush() calls 
(#7662)
    
    
    S3A output streams no longer logs warnings on use of hflush()
    or, if fs.s3a.downgrade.syncable.exceptions = false,
    raises an UnsupportedOperationException .
    
    hsync() is still reported with a warning or rejected.
    That method is absolutely unsupported when writing to S3.
    
    Contributed by Steve Loughran
---
 .../main/java/org/apache/hadoop/fs/s3a/S3ABlockOutputStream.java    | 5 +++--
 .../java/org/apache/hadoop/fs/s3a/TestS3ABlockOutputStream.java     | 6 +++---
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git 
a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3ABlockOutputStream.java
 
b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3ABlockOutputStream.java
index 9574485eb9d..b58070a7b09 100644
--- 
a/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3ABlockOutputStream.java
+++ 
b/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/S3ABlockOutputStream.java
@@ -829,7 +829,8 @@ public boolean hasCapability(String capability) {
   @Override
   public void hflush() throws IOException {
     statistics.hflushInvoked();
-    handleSyncableInvocation();
+    // do not reject these, but downgrade to a no-oop
+    LOG.debug("Hflush invoked");
   }
 
   @Override
@@ -839,7 +840,7 @@ public void hsync() throws IOException {
   }
 
   /**
-   * Shared processing of Syncable operation reporting/downgrade.
+   * Processing of Syncable operation reporting/downgrade.
    * @throws UnsupportedOperationException if required.
    */
   private void handleSyncableInvocation() {
diff --git 
a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestS3ABlockOutputStream.java
 
b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestS3ABlockOutputStream.java
index dc1cb2f54bf..73ce8f24ce6 100644
--- 
a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestS3ABlockOutputStream.java
+++ 
b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/TestS3ABlockOutputStream.java
@@ -148,7 +148,7 @@ public void testCallingCloseAfterCallingAbort() throws 
Exception {
 
   /**
    * Unless configured to downgrade, the stream will raise exceptions on
-   * Syncable API calls.
+   * Syncable.hsync() API calls.
    */
   @Test
   public void testSyncableUnsupported() throws Exception {
@@ -156,13 +156,13 @@ public void testSyncableUnsupported() throws Exception {
         builder = mockS3ABuilder();
     builder.withDowngradeSyncableExceptions(false);
     stream = spy(new S3ABlockOutputStream(builder));
-    intercept(UnsupportedOperationException.class, () -> stream.hflush());
+    stream.hflush();
     intercept(UnsupportedOperationException.class, () -> stream.hsync());
   }
 
   /**
    * When configured to downgrade, the stream downgrades on
-   * Syncable API calls.
+   * Syncable.hsync() API calls.
    */
   @Test
   public void testSyncableDowngrade() throws Exception {


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

Reply via email to