Skip to content

Commit efcd8e9

Browse files
ashrao94Aiswarya Sadananda Rao
authored andcommitted
Add read timeout configuration for AWS Lambda plugin (opensearch-project#6408)
- Add read_timeout field to ClientOptions with default 60s - Configure NettyNioAsyncHttpClient with read timeout - Update README with client configuration examples - Enables configurable read timeout for Lambda function calls Signed-off-by: Aiswarya Sadananda Rao <aiswarao@amazon.com> Co-authored-by: Aiswarya Sadananda Rao <aiswarao@amazon.com>
1 parent a954ae5 commit efcd8e9

3 files changed

Lines changed: 17 additions & 1 deletion

File tree

data-prepper-plugins/aws-lambda/README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ lambda-pipeline:
1616
max_retries: 3
1717
invocation_type: "RequestResponse"
1818
payload_model: "batch_event"
19+
client:
20+
connection_timeout: 60s
21+
read_timeout: 60s
22+
api_call_timeout: 60s
23+
max_retries: 3
1924
batch:
2025
key_name: "osi_key"
2126
threshold:
@@ -96,6 +101,11 @@ lambda-pipeline:
96101
sts_role_arn: "<arn>"
97102
function_name: "uploadToS3Lambda"
98103
max_retries: 3
104+
client:
105+
connection_timeout: 60s
106+
read_timeout: 60s
107+
api_call_timeout: 60s
108+
max_retries: 3
99109
batch:
100110
key_name: "osi_key"
101111
threshold:

data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/client/LambdaClientFactory.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ public static LambdaAsyncClient createAsyncLambdaClient(
3434
createOverrideConfiguration(clientOptions, awsSdkMetrics))
3535
.httpClient(NettyNioAsyncHttpClient.builder()
3636
.maxConcurrency(clientOptions.getMaxConcurrency())
37-
.connectionTimeout(clientOptions.getConnectionTimeout()).build())
37+
.connectionTimeout(clientOptions.getConnectionTimeout())
38+
.readTimeout(clientOptions.getReadTimeout()).build())
3839
.build();
3940
}
4041

data-prepper-plugins/aws-lambda/src/main/java/org/opensearch/dataprepper/plugins/lambda/common/config/ClientOptions.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public class ClientOptions {
1111
public static final int DEFAULT_CONNECTION_RETRIES = 3;
1212
public static final int DEFAULT_MAXIMUM_CONCURRENCY = 200;
1313
public static final Duration DEFAULT_CONNECTION_TIMEOUT = Duration.ofSeconds(60);
14+
public static final Duration DEFAULT_READ_TIMEOUT = Duration.ofSeconds(60);
1415
public static final Duration DEFAULT_API_TIMEOUT = Duration.ofSeconds(60);
1516
public static final Duration DEFAULT_BASE_DELAY = Duration.ofMillis(100);
1617
public static final Duration DEFAULT_MAX_BACKOFF = Duration.ofSeconds(20);
@@ -27,6 +28,10 @@ public class ClientOptions {
2728
@JsonProperty("connection_timeout")
2829
private Duration connectionTimeout = DEFAULT_CONNECTION_TIMEOUT;
2930

31+
@JsonPropertyDescription("read timeout defines the time sdk waits for data to be read from an established connection")
32+
@JsonProperty("read_timeout")
33+
private Duration readTimeout = DEFAULT_READ_TIMEOUT;
34+
3035
@JsonPropertyDescription("max concurrency defined from the client side")
3136
@JsonProperty("max_concurrency")
3237
private int maxConcurrency = DEFAULT_MAXIMUM_CONCURRENCY;

0 commit comments

Comments
 (0)