- Added responseTimeoutInSeconds property in the ServiceConfig class to allow dynamic configuration of the timeout.
- Updated WebClientConfiguration to read the responseTimeoutInSeconds from ServiceConfig and set it in the HttpClient.
Issue-ID: CPS-2565
Change-Id: I096688319c55f0342b524511883ec0d33806b9b7
Signed-off-by: sourabh_sourabh <sourabh.sourabh@est.tech>
connectionTimeoutInSeconds: 30
readTimeoutInSeconds: 30
writeTimeoutInSeconds: 30
+ responseTimeoutInSeconds: 60
dmi:
httpclient:
data-services:
connectionTimeoutInSeconds: 30
readTimeoutInSeconds: 30
writeTimeoutInSeconds: 30
+ responseTimeoutInSeconds: 60
model-services:
maximumInMemorySizeInMegabytes: 16
maximumConnectionsTotal: 100
connectionTimeoutInSeconds: 30
readTimeoutInSeconds: 30
writeTimeoutInSeconds: 30
+ responseTimeoutInSeconds: 60
auth:
username: ${DMI_USERNAME:cpsuser}
password: ${DMI_PASSWORD:cpsr0cks!}
/*
* ============LICENSE_START=======================================================
- * Copyright (C) 2024 Nordix Foundation.
+ * Copyright (C) 2024-2025 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
private Integer connectionTimeoutInSeconds = 1;
private long readTimeoutInSeconds = 1;
private long writeTimeoutInSeconds = 1;
+ private long responseTimeoutInSeconds = 60;
}
/*
* ============LICENSE_START=======================================================
- * Copyright (C) 2024 Nordix Foundation.
+ * Copyright (C) 2024-2025 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*/
public class WebClientConfiguration {
- private static final Duration DEFAULT_RESPONSE_TIMEOUT = Duration.ofSeconds(30);
-
protected WebClient configureWebClient(final WebClient.Builder webClientBuilder,
final ServiceConfig serviceConfig) {
final ConnectionProvider connectionProvider = getConnectionProvider(serviceConfig);
private static HttpClient createHttpClient(final ServiceConfig serviceConfig,
final ConnectionProvider connectionProvider) {
return HttpClient.create(connectionProvider)
- .responseTimeout(DEFAULT_RESPONSE_TIMEOUT)
+ .responseTimeout(Duration.ofSeconds(serviceConfig.getResponseTimeoutInSeconds()))
.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, serviceConfig.getConnectionTimeoutInSeconds() * 1000)
.doOnConnected(connection -> connection.addHandlerLast(new ReadTimeoutHandler(
serviceConfig.getReadTimeoutInSeconds(), TimeUnit.SECONDS)).addHandlerLast(
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2023-2024 Nordix Foundation.
+ * Copyright (C) 2023-2025 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
assert connectionTimeoutInSeconds == 4
assert readTimeoutInSeconds == 5
assert writeTimeoutInSeconds == 6
+ assert responseTimeoutInSeconds == 60
}
}
assert connectionTimeoutInSeconds == 14
assert readTimeoutInSeconds == 15
assert writeTimeoutInSeconds == 16
+ assert responseTimeoutInSeconds == 60
}
}
assert connectionTimeoutInSeconds == 24
assert readTimeoutInSeconds == 25
assert writeTimeoutInSeconds == 26
+ assert responseTimeoutInSeconds == 60
}
}
}
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2024 Nordix Foundation.
+ * Copyright (C) 2024-2025 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
assert pendingAcquireMaxCount == 33
assert connectionTimeoutInSeconds == 34
assert writeTimeoutInSeconds == 36
+ assert responseTimeoutInSeconds == 60
}
}