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

tilman pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tika.git

commit af0990ae3d8f94153d791a40f9b3c19e318f625e
Author: Tilman Hausherr <[email protected]>
AuthorDate: Mon Oct 20 15:32:06 2025 +0200

    TIKA-4525: restore exception handling (should have read the comment!)
---
 .../apache/tika/pipes/emitter/s3/S3Emitter.java    | 31 ++++++++++++---------
 .../apache/tika/pipes/fetcher/s3/S3Fetcher.java    | 32 ++++++++++++----------
 2 files changed, 36 insertions(+), 27 deletions(-)

diff --git 
a/tika-pipes/tika-emitters/tika-emitter-s3/src/main/java/org/apache/tika/pipes/emitter/s3/S3Emitter.java
 
b/tika-pipes/tika-emitters/tika-emitter-s3/src/main/java/org/apache/tika/pipes/emitter/s3/S3Emitter.java
index 5cbec2acd..edb7fff1f 100644
--- 
a/tika-pipes/tika-emitters/tika-emitter-s3/src/main/java/org/apache/tika/pipes/emitter/s3/S3Emitter.java
+++ 
b/tika-pipes/tika-emitters/tika-emitter-s3/src/main/java/org/apache/tika/pipes/emitter/s3/S3Emitter.java
@@ -42,6 +42,7 @@ import 
software.amazon.awssdk.auth.credentials.InstanceProfileCredentialsProvide
 import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
 import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
 import software.amazon.awssdk.core.checksums.RequestChecksumCalculation;
+import software.amazon.awssdk.core.exception.SdkClientException;
 import software.amazon.awssdk.core.sync.RequestBody;
 import software.amazon.awssdk.http.SdkHttpClient;
 import software.amazon.awssdk.http.SdkHttpConfigurationOption;
@@ -299,7 +300,7 @@ public class S3Emitter extends AbstractEmitter implements 
Initializable, StreamE
 
     /**
      * This initializes the s3 client. Note, we wrap S3's RuntimeExceptions,
-     * e.g. AmazonClientException in a TikaConfigException.
+     * e.g. SdkClientException in a TikaConfigException.
      *
      * @param params params to use for initialization
      * @throws TikaConfigException
@@ -324,20 +325,24 @@ public class S3Emitter extends AbstractEmitter implements 
Initializable, StreamE
         }
         SdkHttpClient httpClient = 
ApacheHttpClient.builder().maxConnections(maxConnections).build();
         S3Configuration clientConfig = 
S3Configuration.builder().pathStyleAccessEnabled(pathStyleAccessEnabled).build();
-        S3ClientBuilder s3ClientBuilder = 
S3Client.builder().httpClient(httpClient).
-                
requestChecksumCalculation(RequestChecksumCalculation.WHEN_REQUIRED). // 
https://stackoverflow.com/a/79488850/535646
-                
serviceConfiguration(clientConfig).credentialsProvider(provider);
-        if (!StringUtils.isBlank(endpointConfigurationService)) {
-            try {
-                s3ClientBuilder.endpointOverride(new 
URI(endpointConfigurationService)).region(Region.of(region));
-            }
-            catch (URISyntaxException ex) {
-                throw new TikaConfigException("bad 
endpointConfigurationService: " + endpointConfigurationService, ex);
+        try {
+            S3ClientBuilder s3ClientBuilder = 
S3Client.builder().httpClient(httpClient).
+                    
requestChecksumCalculation(RequestChecksumCalculation.WHEN_REQUIRED). // 
https://stackoverflow.com/a/79488850/535646
+                    
serviceConfiguration(clientConfig).credentialsProvider(provider);
+            if (!StringUtils.isBlank(endpointConfigurationService)) {
+                try {
+                    s3ClientBuilder.endpointOverride(new 
URI(endpointConfigurationService)).region(Region.of(region));
+                }
+                catch (URISyntaxException ex) {
+                    throw new TikaConfigException("bad 
endpointConfigurationService: " + endpointConfigurationService, ex);
+                }
+            } else {
+                s3ClientBuilder.region(Region.of(region));
             }
-        } else {
-            s3ClientBuilder.region(Region.of(region));
+            s3Client = s3ClientBuilder.build();
+        } catch (SdkClientException e) {
+            throw new TikaConfigException("can't initialize s3 emitter", e);
         }
-        s3Client = s3ClientBuilder.build();
     }
 
     @Override
diff --git 
a/tika-pipes/tika-fetchers/tika-fetcher-s3/src/main/java/org/apache/tika/pipes/fetcher/s3/S3Fetcher.java
 
b/tika-pipes/tika-fetchers/tika-fetcher-s3/src/main/java/org/apache/tika/pipes/fetcher/s3/S3Fetcher.java
index 8bb0b67a9..178472ddc 100644
--- 
a/tika-pipes/tika-fetchers/tika-fetcher-s3/src/main/java/org/apache/tika/pipes/fetcher/s3/S3Fetcher.java
+++ 
b/tika-pipes/tika-fetchers/tika-fetcher-s3/src/main/java/org/apache/tika/pipes/fetcher/s3/S3Fetcher.java
@@ -360,7 +360,7 @@ public class S3Fetcher extends AbstractFetcher implements 
Initializable, RangeFe
 
     /**
      * This initializes the s3 client. Note, we wrap S3's RuntimeExceptions,
-     * e.g. AmazonClientException in a TikaConfigException.
+     * e.g. SdkClientException in a TikaConfigException.
      *
      * @param params params to use for initialization
      * @throws TikaConfigException
@@ -385,21 +385,25 @@ public class S3Fetcher extends AbstractFetcher implements 
Initializable, RangeFe
         }
         SdkHttpClient httpClient = 
ApacheHttpClient.builder().maxConnections(maxConnections).build();
         S3Configuration clientConfig = 
S3Configuration.builder().pathStyleAccessEnabled(pathStyleAccessEnabled).build();
-        synchronized (clientLock) {
-            S3ClientBuilder s3ClientBuilder = 
S3Client.builder().httpClient(httpClient).
-                    
requestChecksumCalculation(RequestChecksumCalculation.WHEN_REQUIRED). // 
https://stackoverflow.com/a/79488850/535646
-                    
serviceConfiguration(clientConfig).credentialsProvider(provider);
-            if (!StringUtils.isBlank(endpointConfigurationService)) {
-                try {
-                    s3ClientBuilder.endpointOverride(new 
URI(endpointConfigurationService)).region(Region.of(region));
-                }
-                catch (URISyntaxException ex) {
-                    throw new TikaConfigException("bad 
endpointConfigurationService: " + endpointConfigurationService, ex);
+        try {
+            synchronized (clientLock) {
+                S3ClientBuilder s3ClientBuilder = 
S3Client.builder().httpClient(httpClient).
+                        
requestChecksumCalculation(RequestChecksumCalculation.WHEN_REQUIRED). // 
https://stackoverflow.com/a/79488850/535646
+                        
serviceConfiguration(clientConfig).credentialsProvider(provider);
+                if (!StringUtils.isBlank(endpointConfigurationService)) {
+                    try {
+                        s3ClientBuilder.endpointOverride(new 
URI(endpointConfigurationService)).region(Region.of(region));
+                    }
+                    catch (URISyntaxException ex) {
+                        throw new TikaConfigException("bad 
endpointConfigurationService: " + endpointConfigurationService, ex);
+                    }
+                } else {
+                    s3ClientBuilder.region(Region.of(region));
                 }
-            } else {
-                s3ClientBuilder.region(Region.of(region));
+                s3Client = s3ClientBuilder.build();
             }
-            s3Client = s3ClientBuilder.build();
+        } catch (SdkClientException e) {
+            throw new TikaConfigException("can't initialize s3 fetcher", e);
         }
         if (throttleSeconds == null) {
             throttleSeconds = new long[retries];

Reply via email to