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];
