Skip to content

Support S3 SelectObjectContent #2943

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Jan 5, 2022
Merged

Support S3 SelectObjectContent #2943

merged 8 commits into from
Jan 5, 2022

Conversation

dagnir
Copy link
Contributor

@dagnir dagnir commented Dec 30, 2021

Motivation and Context

Parity with V1, which supports SelectObjectContent.

Fixes #859

Description

This adds support for S3's SelectObjectContent operation by enabling operations
with EventStreams as output for the XML protocol.

Testing

  • codegen ref tests
  • S3 integration and functional tests
  • protocol tests
  • Checked the diffs between other REST-XML services (route53 and cloudfront) to make sure they're unaffected.

Diffs for REST-XML services

Route53, CloudFront, and S3 were generated with the changes in this PR and without the changes, and then the two sets of files were compared. Route53 and CloudFront only have cosmetic changes.

diff -qr with-selectobj without-selectobj
Files with-selectobj/sdk/software/amazon/awssdk/services/cloudfront/DefaultCloudFrontAsyncClient.java and without-selectobj/sdk/software/amazon/awssdk/services/cloudfront/DefaultCloudFrontAsyncClient.java differ
Files with-selectobj/sdk/software/amazon/awssdk/services/route53/DefaultRoute53AsyncClient.java and without-selectobj/sdk/software/amazon/awssdk/services/route53/DefaultRoute53AsyncClient.java differ
Files with-selectobj/sdk/software/amazon/awssdk/services/s3/DefaultS3AsyncClient.java and without-selectobj/sdk/software/amazon/awssdk/services/s3/DefaultS3AsyncClient.java differ
Files with-selectobj/sdk/software/amazon/awssdk/services/s3/S3AsyncClient.java and without-selectobj/sdk/software/amazon/awssdk/services/s3/S3AsyncClient.java differ
Only in with-selectobj/sdk/software/amazon/awssdk/services/s3/model: ContinuationEvent.java
Only in with-selectobj/sdk/software/amazon/awssdk/services/s3/model: DefaultSelectObjectContentResponseHandlerBuilder.java
Only in with-selectobj/sdk/software/amazon/awssdk/services/s3/model: DefaultSelectObjectContentVisitorBuilder.java
Only in with-selectobj/sdk/software/amazon/awssdk/services/s3/model: EndEvent.java
Only in with-selectobj/sdk/software/amazon/awssdk/services/s3/model: Progress.java
Only in with-selectobj/sdk/software/amazon/awssdk/services/s3/model: ProgressEvent.java
Only in with-selectobj/sdk/software/amazon/awssdk/services/s3/model: RecordsEvent.java
Only in with-selectobj/sdk/software/amazon/awssdk/services/s3/model: RequestProgress.java
Only in with-selectobj/sdk/software/amazon/awssdk/services/s3/model: ScanRange.java
Only in with-selectobj/sdk/software/amazon/awssdk/services/s3/model: SelectObjectContentEventStream.java
Only in with-selectobj/sdk/software/amazon/awssdk/services/s3/model: SelectObjectContentRequest.java
Only in with-selectobj/sdk/software/amazon/awssdk/services/s3/model: SelectObjectContentResponse.java
Only in with-selectobj/sdk/software/amazon/awssdk/services/s3/model: SelectObjectContentResponseHandler.java
Only in with-selectobj/sdk/software/amazon/awssdk/services/s3/model: Stats.java
Only in with-selectobj/sdk/software/amazon/awssdk/services/s3/model: StatsEvent.java
Only in with-selectobj/sdk/software/amazon/awssdk/services/s3/model: selectobjectcontenteventstream
Only in with-selectobj/sdk/software/amazon/awssdk/services/s3/transform: SelectObjectContentRequestMarshaller.java
S3Async Interface
200a201,202
> import software.amazon.awssdk.services.s3.model.SelectObjectContentRequest;
> import software.amazon.awssdk.services.s3.model.SelectObjectContentResponseHandler;
18134a18137,18491
>      * This action filters the contents of an Amazon S3 object based on a simple structured query language (SQL)
>      * statement. In the request, along with the SQL expression, you must also specify a data serialization format
>      * (JSON, CSV, or Apache Parquet) of the object. Amazon S3 uses this format to parse object data into records, and
>      * returns only records that match the specified SQL expression. You must also specify the data serialization format
>      * for the response.
>      * </p>
>      * <p>
>      * This action is not supported by Amazon S3 on Outposts.
>      * </p>
>      * <p>
>      * For more information about Amazon S3 Select, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/selecting-content-from-objects.html">Selecting Content from
>      * Objects</a> in the <i>Amazon S3 User Guide</i>.
>      * </p>
>      * <p>
>      * For more information about using SQL with Amazon S3 Select, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html"> SQL Reference for
>      * Amazon S3 Select and S3 Glacier Select</a> in the <i>Amazon S3 User Guide</i>.
>      * </p>
>      * <p/>
>      * <p>
>      * <b>Permissions</b>
>      * </p>
>      * <p>
>      * You must have <code>s3:GetObject</code> permission for this operation. Amazon S3 Select does not support
>      * anonymous access. For more information about permissions, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying Permissions in a
>      * Policy</a> in the <i>Amazon S3 User Guide</i>.
>      * </p>
>      * <p/>
>      * <p>
>      * <i>Object Data Formats</i>
>      * </p>
>      * <p>
>      * You can use Amazon S3 Select to query objects that have the following format properties:
>      * </p>
>      * <ul>
>      * <li>
>      * <p>
>      * <i>CSV, JSON, and Parquet</i> - Objects must be in CSV, JSON, or Parquet format.
>      * </p>
>      * </li>
>      * <li>
>      * <p>
>      * <i>UTF-8</i> - UTF-8 is the only encoding type Amazon S3 Select supports.
>      * </p>
>      * </li>
>      * <li>
>      * <p>
>      * <i>GZIP or BZIP2</i> - CSV and JSON files can be compressed using GZIP or BZIP2. GZIP and BZIP2 are the only
>      * compression formats that Amazon S3 Select supports for CSV and JSON files. Amazon S3 Select supports columnar
>      * compression for Parquet using GZIP or Snappy. Amazon S3 Select does not support whole-object compression for
>      * Parquet objects.
>      * </p>
>      * </li>
>      * <li>
>      * <p>
>      * <i>Server-side encryption</i> - Amazon S3 Select supports querying objects that are protected with server-side
>      * encryption.
>      * </p>
>      * <p>
>      * For objects that are encrypted with customer-provided encryption keys (SSE-C), you must use HTTPS, and you must
>      * use the headers that are documented in the <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>. For more information
>      * about SSE-C, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
>      * Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon S3 User Guide</i>.
>      * </p>
>      * <p>
>      * For objects that are encrypted with Amazon S3 managed encryption keys (SSE-S3) and Amazon Web Services KMS keys
>      * (SSE-KMS), server-side encryption is handled transparently, so you don't need to specify anything. For more
>      * information about server-side encryption, including SSE-S3 and SSE-KMS, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html">Protecting Data Using
>      * Server-Side Encryption</a> in the <i>Amazon S3 User Guide</i>.
>      * </p>
>      * </li>
>      * </ul>
>      * <p>
>      * <b>Working with the Response Body</b>
>      * </p>
>      * <p>
>      * Given the response size is unknown, Amazon S3 Select streams the response as a series of messages and includes a
>      * <code>Transfer-Encoding</code> header with <code>chunked</code> as its value in the response. For more
>      * information, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTSelectObjectAppendix.html">Appendix:
>      * SelectObjectContent Response</a>.
>      * </p>
>      * <p/>
>      * <p>
>      * <b>GetObject Support</b>
>      * </p>
>      * <p>
>      * The <code>SelectObjectContent</code> action does not support the following <code>GetObject</code> functionality.
>      * For more information, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>.
>      * </p>
>      * <ul>
>      * <li>
>      * <p>
>      * <code>Range</code>: Although you can specify a scan range for an Amazon S3 Select request (see <a href=
>      * "https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html#AmazonS3-SelectObjectContent-request-ScanRange"
>      * >SelectObjectContentRequest - ScanRange</a> in the request parameters), you cannot specify the range of bytes of
>      * an object to return.
>      * </p>
>      * </li>
>      * <li>
>      * <p>
>      * GLACIER, DEEP_ARCHIVE and REDUCED_REDUNDANCY storage classes: You cannot specify the GLACIER, DEEP_ARCHIVE, or
>      * <code>REDUCED_REDUNDANCY</code> storage classes. For more information, about storage classes see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#storage-class-intro">Storage Classes</a>
>      * in the <i>Amazon S3 User Guide</i>.
>      * </p>
>      * </li>
>      * </ul>
>      * <p/>
>      * <p>
>      * <b>Special Errors</b>
>      * </p>
>      * <p>
>      * For a list of special errors for this operation, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#SelectObjectContentErrorCodeList">List
>      * of SELECT Object Content Error Codes</a>
>      * </p>
>      * <p class="title">
>      * <b>Related Resources</b>
>      * </p>
>      * <ul>
>      * <li>
>      * <p>
>      * <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>
>      * </p>
>      * </li>
>      * <li>
>      * <p>
>      * <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html">
>      * GetBucketLifecycleConfiguration</a>
>      * </p>
>      * </li>
>      * <li>
>      * <p>
>      * <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html">
>      * PutBucketLifecycleConfiguration</a>
>      * </p>
>      * </li>
>      * </ul>
>      *
>      * @param selectObjectContentRequest
>      *        Request to filter the contents of an Amazon S3 object based on a simple Structured Query Language (SQL)
>      *        statement. In the request, along with the SQL expression, you must specify a data serialization format
>      *        (JSON or CSV) of the object. Amazon S3 uses this to parse object data into records. It returns only
>      *        records that match the specified SQL expression. You must also specify the data serialization format for
>      *        the response. For more information, see <a
>      *        href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectSELECTContent.html">S3Select API
>      *        Documentation</a>.
>      * @return A Java Future containing the result of the SelectObjectContent operation returned by the service.<br/>
>      *         The CompletableFuture returned by this method can be completed exceptionally with the following
>      *         exceptions.
>      *         <ul>
>      *         <li>SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
>      *         Can be used for catch all scenarios.</li>
>      *         <li>SdkClientException If any client side error occurs such as an IO related failure, failure to get
>      *         credentials, etc.</li>
>      *         <li>S3Exception Base class for all service exceptions. Unknown exceptions will be thrown as an instance
>      *         of this type.</li>
>      *         </ul>
>      * @sample S3AsyncClient.SelectObjectContent
>      */
>     default CompletableFuture<Void> selectObjectContent(SelectObjectContentRequest selectObjectContentRequest,
>             SelectObjectContentResponseHandler asyncResponseHandler) {
>         throw new UnsupportedOperationException();
>     }
> 
>     /**
>      * <p>
>      * This action filters the contents of an Amazon S3 object based on a simple structured query language (SQL)
>      * statement. In the request, along with the SQL expression, you must also specify a data serialization format
>      * (JSON, CSV, or Apache Parquet) of the object. Amazon S3 uses this format to parse object data into records, and
>      * returns only records that match the specified SQL expression. You must also specify the data serialization format
>      * for the response.
>      * </p>
>      * <p>
>      * This action is not supported by Amazon S3 on Outposts.
>      * </p>
>      * <p>
>      * For more information about Amazon S3 Select, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/selecting-content-from-objects.html">Selecting Content from
>      * Objects</a> in the <i>Amazon S3 User Guide</i>.
>      * </p>
>      * <p>
>      * For more information about using SQL with Amazon S3 Select, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html"> SQL Reference for
>      * Amazon S3 Select and S3 Glacier Select</a> in the <i>Amazon S3 User Guide</i>.
>      * </p>
>      * <p/>
>      * <p>
>      * <b>Permissions</b>
>      * </p>
>      * <p>
>      * You must have <code>s3:GetObject</code> permission for this operation. Amazon S3 Select does not support
>      * anonymous access. For more information about permissions, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying Permissions in a
>      * Policy</a> in the <i>Amazon S3 User Guide</i>.
>      * </p>
>      * <p/>
>      * <p>
>      * <i>Object Data Formats</i>
>      * </p>
>      * <p>
>      * You can use Amazon S3 Select to query objects that have the following format properties:
>      * </p>
>      * <ul>
>      * <li>
>      * <p>
>      * <i>CSV, JSON, and Parquet</i> - Objects must be in CSV, JSON, or Parquet format.
>      * </p>
>      * </li>
>      * <li>
>      * <p>
>      * <i>UTF-8</i> - UTF-8 is the only encoding type Amazon S3 Select supports.
>      * </p>
>      * </li>
>      * <li>
>      * <p>
>      * <i>GZIP or BZIP2</i> - CSV and JSON files can be compressed using GZIP or BZIP2. GZIP and BZIP2 are the only
>      * compression formats that Amazon S3 Select supports for CSV and JSON files. Amazon S3 Select supports columnar
>      * compression for Parquet using GZIP or Snappy. Amazon S3 Select does not support whole-object compression for
>      * Parquet objects.
>      * </p>
>      * </li>
>      * <li>
>      * <p>
>      * <i>Server-side encryption</i> - Amazon S3 Select supports querying objects that are protected with server-side
>      * encryption.
>      * </p>
>      * <p>
>      * For objects that are encrypted with customer-provided encryption keys (SSE-C), you must use HTTPS, and you must
>      * use the headers that are documented in the <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>. For more information
>      * about SSE-C, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
>      * Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon S3 User Guide</i>.
>      * </p>
>      * <p>
>      * For objects that are encrypted with Amazon S3 managed encryption keys (SSE-S3) and Amazon Web Services KMS keys
>      * (SSE-KMS), server-side encryption is handled transparently, so you don't need to specify anything. For more
>      * information about server-side encryption, including SSE-S3 and SSE-KMS, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html">Protecting Data Using
>      * Server-Side Encryption</a> in the <i>Amazon S3 User Guide</i>.
>      * </p>
>      * </li>
>      * </ul>
>      * <p>
>      * <b>Working with the Response Body</b>
>      * </p>
>      * <p>
>      * Given the response size is unknown, Amazon S3 Select streams the response as a series of messages and includes a
>      * <code>Transfer-Encoding</code> header with <code>chunked</code> as its value in the response. For more
>      * information, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTSelectObjectAppendix.html">Appendix:
>      * SelectObjectContent Response</a>.
>      * </p>
>      * <p/>
>      * <p>
>      * <b>GetObject Support</b>
>      * </p>
>      * <p>
>      * The <code>SelectObjectContent</code> action does not support the following <code>GetObject</code> functionality.
>      * For more information, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>.
>      * </p>
>      * <ul>
>      * <li>
>      * <p>
>      * <code>Range</code>: Although you can specify a scan range for an Amazon S3 Select request (see <a href=
>      * "https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html#AmazonS3-SelectObjectContent-request-ScanRange"
>      * >SelectObjectContentRequest - ScanRange</a> in the request parameters), you cannot specify the range of bytes of
>      * an object to return.
>      * </p>
>      * </li>
>      * <li>
>      * <p>
>      * GLACIER, DEEP_ARCHIVE and REDUCED_REDUNDANCY storage classes: You cannot specify the GLACIER, DEEP_ARCHIVE, or
>      * <code>REDUCED_REDUNDANCY</code> storage classes. For more information, about storage classes see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#storage-class-intro">Storage Classes</a>
>      * in the <i>Amazon S3 User Guide</i>.
>      * </p>
>      * </li>
>      * </ul>
>      * <p/>
>      * <p>
>      * <b>Special Errors</b>
>      * </p>
>      * <p>
>      * For a list of special errors for this operation, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#SelectObjectContentErrorCodeList">List
>      * of SELECT Object Content Error Codes</a>
>      * </p>
>      * <p class="title">
>      * <b>Related Resources</b>
>      * </p>
>      * <ul>
>      * <li>
>      * <p>
>      * <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>
>      * </p>
>      * </li>
>      * <li>
>      * <p>
>      * <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html">
>      * GetBucketLifecycleConfiguration</a>
>      * </p>
>      * </li>
>      * <li>
>      * <p>
>      * <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html">
>      * PutBucketLifecycleConfiguration</a>
>      * </p>
>      * </li>
>      * </ul>
>      * <br/>
>      * <p>
>      * This is a convenience which creates an instance of the {@link SelectObjectContentRequest.Builder} avoiding the
>      * need to create one manually via {@link SelectObjectContentRequest#builder()}
>      * </p>
>      *
>      * @param selectObjectContentRequest
>      *        A {@link Consumer} that will call methods on {@link SelectObjectContentRequest.Builder} to create a
>      *        request. Request to filter the contents of an Amazon S3 object based on a simple Structured Query Language
>      *        (SQL) statement. In the request, along with the SQL expression, you must specify a data serialization
>      *        format (JSON or CSV) of the object. Amazon S3 uses this to parse object data into records. It returns only
>      *        records that match the specified SQL expression. You must also specify the data serialization format for
>      *        the response. For more information, see <a
>      *        href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectSELECTContent.html">S3Select API
>      *        Documentation</a>.
>      * @return A Java Future containing the result of the SelectObjectContent operation returned by the service.<br/>
>      *         The CompletableFuture returned by this method can be completed exceptionally with the following
>      *         exceptions.
>      *         <ul>
>      *         <li>SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
>      *         Can be used for catch all scenarios.</li>
>      *         <li>SdkClientException If any client side error occurs such as an IO related failure, failure to get
>      *         credentials, etc.</li>
>      *         <li>S3Exception Base class for all service exceptions. Unknown exceptions will be thrown as an instance
>      *         of this type.</li>
>      *         </ul>
>      * @sample S3AsyncClient.SelectObjectContent
>      */
>     default CompletableFuture<Void> selectObjectContent(Consumer<SelectObjectContentRequest.Builder> selectObjectContentRequest,
>             SelectObjectContentResponseHandler asyncResponseHandler) {
>         return selectObjectContent(SelectObjectContentRequest.builder().applyMutation(selectObjectContentRequest).build(),
>                 asyncResponseHandler);
>     }
> 
>     /**
>      * <p>
DefaultS3AsyncClient
20a21
> import java.util.concurrent.Executor;
29a31,33
> import software.amazon.awssdk.awscore.eventstream.EventStreamAsyncResponseTransformer;
> import software.amazon.awssdk.awscore.eventstream.EventStreamTaggedUnionPojoSupplier;
> import software.amazon.awssdk.awscore.eventstream.RestEventStreamAsyncResponseTransformer;
33a38
> import software.amazon.awssdk.core.SdkPojoBuilder;
35a41
> import software.amazon.awssdk.core.client.config.SdkAdvancedAsyncClientOption;
238a245,248
> import software.amazon.awssdk.services.s3.model.SelectObjectContentEventStream;
> import software.amazon.awssdk.services.s3.model.SelectObjectContentRequest;
> import software.amazon.awssdk.services.s3.model.SelectObjectContentResponse;
> import software.amazon.awssdk.services.s3.model.SelectObjectContentResponseHandler;
336a347
> import software.amazon.awssdk.services.s3.transform.SelectObjectContentRequestMarshaller;
359a371,372
>     private final Executor executor;
> 
365a379
>         this.executor = clientConfiguration.option(SdkAdvancedAsyncClientOption.FUTURE_COMPLETION_EXECUTOR);
466c480,481
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
664c679,680
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
940c956,957
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1190c1207,1208
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1579c1597,1598
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1643c1662,1663
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1732c1752,1753
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1806c1827,1828
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1884c1906,1907
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1977c2000,2001
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2065c2089,2090
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2148c2173,2174
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2244c2270,2271
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2318c2345,2346
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2402c2430,2431
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2487c2516,2517
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2557c2587,2588
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2636c2667,2668
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2720c2752,2753
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2794c2827,2828
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2905c2939,2940
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2989c3024,3025
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3078c3114,3115
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3148c3185,3186
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3238c3276,3277
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3310c3349,3350
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3393c3433,3434
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3486c3527,3528
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3574c3616,3617
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3695c3738,3739
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3768c3812,3813
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3834c3879,3880
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3930c3976,3977
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4008c4055,4056
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4082c4130,4131
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4160c4209,4210
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4248c4298,4299
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4342c4393,4394
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4405c4457,4458
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4491c4544,4545
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4570c4624,4625
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4642c4697,4698
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5006c5062,5063
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5060c5117,5118
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5113c5171,5172
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5167c5226,5227
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5246c5306,5307
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5433c5494,5495
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5505c5567,5568
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5692c5755,5756
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5789c5853,5854
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5882c5947,5948
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5979c6045,6046
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
6078c6145,6146
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
6126c6194,6195
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
6234c6303,6304
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
6461c6531,6532
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
6668c6739,6740
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
6767c6839,6840
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
6991c7064,7065
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
7225c7299,7300
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
7534c7609,7610
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
7701c7777,7778
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
7817c7894,7895
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
7912c7990,7991
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
8070c8149,8150
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
8234c8314,8315
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
8394c8475,8476
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
8545c8627,8628
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
8660c8743,8744
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
8777c8861,8862
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
8853c8938,8939
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
8939c9025,9026
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
9077c9164,9165
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
9150c9238,9239
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
9300c9389,9390
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
9405c9495,9496
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
9586c9677,9678
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
9771c9863,9864
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
10068c10161,10162
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
10124c10218,10219
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
10200c10295,10296
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
10267c10363,10364
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
10420c10517,10518
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
10519c10617,10618
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
10906c11005,11233
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
>         } catch (Throwable t) {
>             metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
>             return CompletableFutureUtils.failedFuture(t);
>         }
>     }
> 
>     /**
>      * <p>
>      * This action filters the contents of an Amazon S3 object based on a simple structured query language (SQL)
>      * statement. In the request, along with the SQL expression, you must also specify a data serialization format
>      * (JSON, CSV, or Apache Parquet) of the object. Amazon S3 uses this format to parse object data into records, and
>      * returns only records that match the specified SQL expression. You must also specify the data serialization format
>      * for the response.
>      * </p>
>      * <p>
>      * This action is not supported by Amazon S3 on Outposts.
>      * </p>
>      * <p>
>      * For more information about Amazon S3 Select, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/selecting-content-from-objects.html">Selecting Content from
>      * Objects</a> in the <i>Amazon S3 User Guide</i>.
>      * </p>
>      * <p>
>      * For more information about using SQL with Amazon S3 Select, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-glacier-select-sql-reference.html"> SQL Reference for
>      * Amazon S3 Select and S3 Glacier Select</a> in the <i>Amazon S3 User Guide</i>.
>      * </p>
>      * <p/>
>      * <p>
>      * <b>Permissions</b>
>      * </p>
>      * <p>
>      * You must have <code>s3:GetObject</code> permission for this operation. Amazon S3 Select does not support
>      * anonymous access. For more information about permissions, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html">Specifying Permissions in a
>      * Policy</a> in the <i>Amazon S3 User Guide</i>.
>      * </p>
>      * <p/>
>      * <p>
>      * <i>Object Data Formats</i>
>      * </p>
>      * <p>
>      * You can use Amazon S3 Select to query objects that have the following format properties:
>      * </p>
>      * <ul>
>      * <li>
>      * <p>
>      * <i>CSV, JSON, and Parquet</i> - Objects must be in CSV, JSON, or Parquet format.
>      * </p>
>      * </li>
>      * <li>
>      * <p>
>      * <i>UTF-8</i> - UTF-8 is the only encoding type Amazon S3 Select supports.
>      * </p>
>      * </li>
>      * <li>
>      * <p>
>      * <i>GZIP or BZIP2</i> - CSV and JSON files can be compressed using GZIP or BZIP2. GZIP and BZIP2 are the only
>      * compression formats that Amazon S3 Select supports for CSV and JSON files. Amazon S3 Select supports columnar
>      * compression for Parquet using GZIP or Snappy. Amazon S3 Select does not support whole-object compression for
>      * Parquet objects.
>      * </p>
>      * </li>
>      * <li>
>      * <p>
>      * <i>Server-side encryption</i> - Amazon S3 Select supports querying objects that are protected with server-side
>      * encryption.
>      * </p>
>      * <p>
>      * For objects that are encrypted with customer-provided encryption keys (SSE-C), you must use HTTPS, and you must
>      * use the headers that are documented in the <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>. For more information
>      * about SSE-C, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side
>      * Encryption (Using Customer-Provided Encryption Keys)</a> in the <i>Amazon S3 User Guide</i>.
>      * </p>
>      * <p>
>      * For objects that are encrypted with Amazon S3 managed encryption keys (SSE-S3) and Amazon Web Services KMS keys
>      * (SSE-KMS), server-side encryption is handled transparently, so you don't need to specify anything. For more
>      * information about server-side encryption, including SSE-S3 and SSE-KMS, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html">Protecting Data Using
>      * Server-Side Encryption</a> in the <i>Amazon S3 User Guide</i>.
>      * </p>
>      * </li>
>      * </ul>
>      * <p>
>      * <b>Working with the Response Body</b>
>      * </p>
>      * <p>
>      * Given the response size is unknown, Amazon S3 Select streams the response as a series of messages and includes a
>      * <code>Transfer-Encoding</code> header with <code>chunked</code> as its value in the response. For more
>      * information, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTSelectObjectAppendix.html">Appendix:
>      * SelectObjectContent Response</a>.
>      * </p>
>      * <p/>
>      * <p>
>      * <b>GetObject Support</b>
>      * </p>
>      * <p>
>      * The <code>SelectObjectContent</code> action does not support the following <code>GetObject</code> functionality.
>      * For more information, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>.
>      * </p>
>      * <ul>
>      * <li>
>      * <p>
>      * <code>Range</code>: Although you can specify a scan range for an Amazon S3 Select request (see <a href=
>      * "https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html#AmazonS3-SelectObjectContent-request-ScanRange"
>      * >SelectObjectContentRequest - ScanRange</a> in the request parameters), you cannot specify the range of bytes of
>      * an object to return.
>      * </p>
>      * </li>
>      * <li>
>      * <p>
>      * GLACIER, DEEP_ARCHIVE and REDUCED_REDUNDANCY storage classes: You cannot specify the GLACIER, DEEP_ARCHIVE, or
>      * <code>REDUCED_REDUNDANCY</code> storage classes. For more information, about storage classes see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html#storage-class-intro">Storage Classes</a>
>      * in the <i>Amazon S3 User Guide</i>.
>      * </p>
>      * </li>
>      * </ul>
>      * <p/>
>      * <p>
>      * <b>Special Errors</b>
>      * </p>
>      * <p>
>      * For a list of special errors for this operation, see <a
>      * href="https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#SelectObjectContentErrorCodeList">List
>      * of SELECT Object Content Error Codes</a>
>      * </p>
>      * <p class="title">
>      * <b>Related Resources</b>
>      * </p>
>      * <ul>
>      * <li>
>      * <p>
>      * <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html">GetObject</a>
>      * </p>
>      * </li>
>      * <li>
>      * <p>
>      * <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html">
>      * GetBucketLifecycleConfiguration</a>
>      * </p>
>      * </li>
>      * <li>
>      * <p>
>      * <a href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html">
>      * PutBucketLifecycleConfiguration</a>
>      * </p>
>      * </li>
>      * </ul>
>      *
>      * @param selectObjectContentRequest
>      *        Request to filter the contents of an Amazon S3 object based on a simple Structured Query Language (SQL)
>      *        statement. In the request, along with the SQL expression, you must specify a data serialization format
>      *        (JSON or CSV) of the object. Amazon S3 uses this to parse object data into records. It returns only
>      *        records that match the specified SQL expression. You must also specify the data serialization format for
>      *        the response. For more information, see <a
>      *        href="https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectSELECTContent.html">S3Select API
>      *        Documentation</a>.
>      * @return A Java Future containing the result of the SelectObjectContent operation returned by the service.<br/>
>      *         The CompletableFuture returned by this method can be completed exceptionally with the following
>      *         exceptions.
>      *         <ul>
>      *         <li>SdkException Base class for all exceptions that can be thrown by the SDK (both service and client).
>      *         Can be used for catch all scenarios.</li>
>      *         <li>SdkClientException If any client side error occurs such as an IO related failure, failure to get
>      *         credentials, etc.</li>
>      *         <li>S3Exception Base class for all service exceptions. Unknown exceptions will be thrown as an instance
>      *         of this type.</li>
>      *         </ul>
>      * @sample S3AsyncClient.SelectObjectContent
>      */
>     @Override
>     public CompletableFuture<Void> selectObjectContent(SelectObjectContentRequest selectObjectContentRequest,
>             SelectObjectContentResponseHandler asyncResponseHandler) {
>         List<MetricPublisher> metricPublishers = resolveMetricPublishers(clientConfiguration, selectObjectContentRequest
>                 .overrideConfiguration().orElse(null));
>         MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector
>                 .create("ApiCall");
>         try {
>             apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "S3");
>             apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "SelectObjectContent");
>             HttpResponseHandler<SelectObjectContentResponse> responseHandler = protocolFactory.createResponseHandler(
>                     SelectObjectContentResponse::builder, XmlOperationMetadata.builder().hasStreamingSuccessResponse(true)
>                             .build());
>             HttpResponseHandler<AwsServiceException> errorResponseHandler = protocolFactory.createErrorResponseHandler();
>             HttpResponseHandler<? extends SelectObjectContentEventStream> eventResponseHandler = protocolFactory
>                     .createResponseHandler(
>                             EventStreamTaggedUnionPojoSupplier.builder()
>                                     .putSdkPojoSupplier("Records", SelectObjectContentEventStream::recordsBuilder)
>                                     .putSdkPojoSupplier("Stats", SelectObjectContentEventStream::statsBuilder)
>                                     .putSdkPojoSupplier("Progress", SelectObjectContentEventStream::progressBuilder)
>                                     .putSdkPojoSupplier("Cont", SelectObjectContentEventStream::contBuilder)
>                                     .putSdkPojoSupplier("End", SelectObjectContentEventStream::endBuilder)
>                                     .defaultSdkPojoSupplier(() -> new SdkPojoBuilder(SelectObjectContentEventStream.UNKNOWN))
>                                     .build(), XmlOperationMetadata.builder().hasStreamingSuccessResponse(false).build());
>             CompletableFuture<Void> future = new CompletableFuture<>();
>             EventStreamAsyncResponseTransformer<SelectObjectContentResponse, SelectObjectContentEventStream> asyncResponseTransformer = EventStreamAsyncResponseTransformer
>                     .<SelectObjectContentResponse, SelectObjectContentEventStream> builder()
>                     .eventStreamResponseHandler(asyncResponseHandler).eventResponseHandler(eventResponseHandler)
>                     .initialResponseHandler(responseHandler).exceptionResponseHandler(errorResponseHandler).future(future)
>                     .executor(executor).serviceName(serviceName()).build();
>             RestEventStreamAsyncResponseTransformer<SelectObjectContentResponse, SelectObjectContentEventStream> restAsyncResponseTransformer = RestEventStreamAsyncResponseTransformer
>                     .<SelectObjectContentResponse, SelectObjectContentEventStream> builder()
>                     .eventStreamAsyncResponseTransformer(asyncResponseTransformer)
>                     .eventStreamResponseHandler(asyncResponseHandler).build();
> 
>             CompletableFuture<Void> executeFuture = clientHandler.execute(
>                     new ClientExecutionParams<SelectObjectContentRequest, SelectObjectContentResponse>()
>                             .withOperationName("SelectObjectContent")
>                             .withMarshaller(new SelectObjectContentRequestMarshaller(protocolFactory))
>                             .withResponseHandler(responseHandler).withMetricCollector(apiCallMetricCollector)
>                             .withInput(selectObjectContentRequest), restAsyncResponseTransformer);
>             CompletableFuture<Void> whenCompleteFuture = null;
>             whenCompleteFuture = executeFuture.whenComplete((r, e) -> {
>                 if (e != null) {
>                     runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring",
>                             () -> asyncResponseHandler.exceptionOccurred(e));
>                     future.completeExceptionally(e);
>                 }
>                 metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect()));
>             });
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return CompletableFutureUtils.forwardExceptionTo(future, executeFuture);
10907a11235,11236
>             runAndLogError(log, "Exception thrown in exceptionOccurred callback, ignoring",
>                     () -> asyncResponseHandler.exceptionOccurred(t));
11117c11446,11447
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
11357c11687,11688
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
11471c11802,11803
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
Route53
393c393,394
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
510c511,512
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
676c678,679
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
744c747,748
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
876c880,881
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1042c1047,1048
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1112c1118,1119
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1360c1367,1368
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1512c1520,1521
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1587c1596,1597
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1666c1676,1677
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1741c1752,1753
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1819c1831,1832
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1884c1897,1898
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1955c1969,1970
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2073c2088,2089
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2145c2161,2162
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2208c2225,2226
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2277c2295,2296
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2362c2381,2382
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2429c2449,2450
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2504c2525,2526
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2569c2591,2592
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2666c2689,2690
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2733c2757,2758
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2803c2828,2829
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2869c2895,2896
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2931c2958,2959
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2985c3013,3014
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3067c3096,3097
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3124c3154,3155
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3179c3210,3211
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3236c3268,3269
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3298c3331,3332
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3352c3386,3387
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3407c3442,3443
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3472c3508,3509
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3533c3570,3571
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3591c3629,3630
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3655c3694,3695
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3716c3756,3757
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3783c3824,3825
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3839c3881,3882
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3907c3950,3951
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3964c4008,4009
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4109c4154,4155
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4231c4277,4278
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4307c4354,4355
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4460c4508,4509
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4690c4739,4740
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4912c4962,4963
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4981c5032,5033
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5050c5102,5103
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5113c5166,5167
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5182c5236,5237
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5251c5306,5307
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5320c5376,5377
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5379c5436,5437
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5443c5501,5502
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5504c5563,5564
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5566c5626,5627
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5627c5688,5689
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5685c5747,5748
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5779c5842,5843
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
CloudFront
544c544,545
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
647c648,649
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
722c724,725
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
899c902,903
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1063c1067,1068
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1131c1136,1137
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1199c1205,1206
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1276c1283,1284
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1339c1347,1348
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1414c1423,1424
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1477c1487,1488
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1587c1598,1599
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1647c1659,1660
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1718c1731,1732
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1800c1814,1815
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1875c1890,1891
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
1952c1968,1969
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2020c2037,2038
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2081c2099,2100
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2198c2217,2218
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2260c2280,2281
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2322c2343,2344
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2389c2411,2412
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2454c2477,2478
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2511c2535,2536
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2581c2606,2607
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2639c2665,2666
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2707c2734,2735
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2776c2804,2805
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2898c2927,2928
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
2957c2987,2988
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3029c3060,3061
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3090c3122,3123
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3147c3180,3181
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3207c3241,3242
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3262c3297,3298
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3318c3354,3355
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3374c3411,3412
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3431c3469,3470
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3488c3527,3528
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3545c3585,3586
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3602c3643,3644
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3658c3700,3701
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3715c3758,3759
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3774c3818,3819
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3831c3876,3877
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3904c3950,3951
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
3966c4013,4014
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4018c4066,4067
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4072c4121,4122
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4133c4183,4184
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4195c4246,4247
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4257c4309,4310
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4313c4366,4367
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4370c4424,4425
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4435c4490,4491
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4491c4547,4548
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4571c4628,4629
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4625c4683,4684
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4689c4748,4749
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4751c4811,4812
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4816c4877,4878
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4883c4945,4946
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
4948c5011,5012
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5008c5072,5073
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5063c5128,5129
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5118c5184,5185
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5181c5248,5249
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5237c5305,5306
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5295c5364,5365
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5361c5431,5432
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5414c5485,5486
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5476c5548,5549
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5542c5615,5616
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5597c5671,5672
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5655c5730,5731
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5723c5799,5800
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5778c5855,5856
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5847c5925,5926
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
5903c5982,5983
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
6000c6080,6081
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
6066c6147,6148
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
6333c6415,6416
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
6404c6487,6488
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
6477c6561,6562
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
6546c6631,6632
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
6631c6717,6718
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
6731c6818,6819
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
6791c6879,6880
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
6872c6961,6962
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
6965c7055,7056
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;
7037c7128,7129
<             return CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
---
>             CompletableFutureUtils.forwardExceptionTo(whenCompleteFuture, executeFuture);
>             return whenCompleteFuture;

Screenshots (if appropriate)

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)

Checklist

  • I have read the CONTRIBUTING document
  • Local run of mvn install succeeds
  • My code follows the code style of this project
  • My change requires a change to the Javadoc documentation
  • I have updated the Javadoc documentation accordingly
  • I have read the README document
  • I have added tests to cover my changes
  • All new and existing tests passed
  • A short description of the change has been added to the CHANGELOG
  • My change is to implement 1.11 parity feature and I have updated [LaunchChangelog](https://github.com/aws/aws-sdk-java-v2/blob/master/docs/LaunchChangelog.md

License

  • I confirm that this pull request can be released under the Apache 2 license

@dagnir dagnir marked this pull request as ready for review December 31, 2021 00:01
@dagnir dagnir requested a review from a team as a code owner December 31, 2021 00:01
This adds support for S3's SelectObjectContent operation by enabling operations
with EventStreams as output for the XML protocol.
@dagnir dagnir force-pushed the s3-selectobject-content branch from b8b64e5 to 56fc6ad Compare December 31, 2021 00:17
Copy link
Contributor

@Bennett-Lynch Bennett-Lynch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome PR description!

Copy link
Contributor

@zoewangg zoewangg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we kick off integration tests if we haven't already?

@dagnir
Copy link
Contributor Author

dagnir commented Jan 4, 2022

Can we kick off integration tests if we haven't already?

Yes, integ tests are passing with the revision before the changelog change. Kicked off another one so it's running for this latest revision.

@dagnir dagnir enabled auto-merge (squash) January 5, 2022 00:10
@dagnir dagnir merged commit 313edb9 into master Jan 5, 2022
@sonarqubecloud
Copy link

sonarqubecloud bot commented Jan 5, 2022

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 2 Code Smells

97.5% 97.5% Coverage
0.0% 0.0% Duplication

@dagnir dagnir mentioned this pull request Jan 5, 2022
@dagnir dagnir deleted the s3-selectobject-content branch January 10, 2022 19:12
aws-sdk-java-automation added a commit that referenced this pull request Apr 3, 2024
…85999c7f1

Pull request: release <- staging/c921135c-abdf-4c1d-a424-09385999c7f1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

S3 Select Object Content
3 participants