[java-shib-metadata] branch main updated: JSMD-13: Add support for HttpClient requestTimeout param ...
Brent Putman
putmanb at georgetown.edu
Fri Dec 6 04:45:48 UTC 2024
This is an automated email from the git hooks/post-receive script.
putmanb pushed a commit to branch main
in repository java-shib-metadata.
View the commit online:
http://git.shibboleth.net/view/?p=java-shib-metadata.git;a=commit;h=12af707c86ea825d3503f5a4780b35b63618b8b5
The following commit(s) were added to refs/heads/main by this push:
new 12af707c JSMD-13: Add support for HttpClient requestTimeout param ...
12af707c is described below
commit 12af707c86ea825d3503f5a4780b35b63618b8b5
Author: Brent Putman <putmanb at georgetown.edu>
AuthorDate: Thu Dec 5 23:35:50 2024 -0500
JSMD-13: Add support for HttpClient requestTimeout param ...
Add support for HttpClient requestTimeout param to relevant components.
---
.../AbstractDynamicHTTPMetadataProviderParser.java | 9 ++++++
.../metadata/HTTPMetadataProviderParser.java | 3 ++
.../HTTPMetadataProvidersParserSupport.java | 8 +++++
.../main/resources/schema/shibboleth-metadata.xsd | 36 ++++++++++++++++++++++
4 files changed, 56 insertions(+)
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/AbstractDynamicHTTPMetadataProviderParser.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/AbstractDynamicHTTPMetadataProviderParser.java
index 0b8e81d6..9480d5f7 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/AbstractDynamicHTTPMetadataProviderParser.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/AbstractDynamicHTTPMetadataProviderParser.java
@@ -58,6 +58,9 @@ public abstract class AbstractDynamicHTTPMetadataProviderParser extends Abstract
/** Default response timeout. */
@Nonnull @NotEmpty private static final String DEFAULT_RESPONSE_TIMEOUT = "PT5S";
+ /** Default request timeout. */
+ @Nonnull @NotEmpty private static final String DEFAULT_REQUEST_TIMEOUT = "PT30S";
+
/** Logger. */
private final Logger log = LoggerFactory.getLogger(AbstractDynamicHTTPMetadataProviderParser.class);
@@ -83,12 +86,15 @@ public abstract class AbstractDynamicHTTPMetadataProviderParser extends Abstract
|| element.hasAttributeNS(null, "connectionRequestTimeout")
|| element.hasAttributeNS(null, "socketTimeout")
|| element.hasAttributeNS(null, "responseTimeout")
+ || element.hasAttributeNS(null, "requestTimeout")
+ || element.hasAttributeNS(null, "requestTimeoutCorePoolSize")
|| element.hasAttributeNS(null, "maxConnectionsTotal")
|| element.hasAttributeNS(null, "maxConnectionsPerRoute")
|| element.hasAttributeNS(null, "disregardTLSCertificate")
|| element.hasAttributeNS(null, "proxyHost") || element.hasAttributeNS(null, "proxyPort")
|| element.hasAttributeNS(null, "proxyUser") || element.hasAttributeNS(null, "proxyPassword")) {
log.warn("httpClientRef overrides settings for connectionTimeout, responseTimeout, "
+ + "requestTimeout, requestTimeoutCorePoolSize, "
+ "connectionRequestTimeout, socketTimeout, maxConnectionsTotal, maxConnectionsPerRoute, "
+ "disregardTLSCertificate, proxyHost, proxyPort, "
+ "proxyUser and proxyPassword");
@@ -138,6 +144,9 @@ public abstract class AbstractDynamicHTTPMetadataProviderParser extends Abstract
if (!element.hasAttributeNS(null, "responseTimeout")) {
clientBuilder.addPropertyValue("responseTimeout", DEFAULT_RESPONSE_TIMEOUT);
}
+ if (!element.hasAttributeNS(null, "requestTimeout")) {
+ clientBuilder.addPropertyValue("requestTimeout", DEFAULT_REQUEST_TIMEOUT);
+ }
if (element.hasAttributeNS(null, "maxConnectionsTotal")) {
clientBuilder.addPropertyValue("maxConnectionsTotal",
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/HTTPMetadataProviderParser.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/HTTPMetadataProviderParser.java
index 7766383f..c9ef06bc 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/HTTPMetadataProviderParser.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/HTTPMetadataProviderParser.java
@@ -62,10 +62,13 @@ public abstract class HTTPMetadataProviderParser extends AbstractReloadingMetada
|| element.hasAttributeNS(null, "connectionRequestTimeout")
|| element.hasAttributeNS(null, "socketTimeout")
|| element.hasAttributeNS(null, "responseTimeout")
+ || element.hasAttributeNS(null, "requestTimeout")
+ || element.hasAttributeNS(null, "requestTimeoutCorePoolSize")
|| element.hasAttributeNS(null, "disregardTLSCertificate")
|| element.hasAttributeNS(null, "proxyHost") || element.hasAttributeNS(null, "proxyPort")
|| element.hasAttributeNS(null, "proxyUser") || element.hasAttributeNS(null, "proxyPassword")) {
log.warn("httpClientRef overrides settings for connectionTimeout, responseTimeout, "
+ + "requestTimeout, requestTimeoutCorePoolSize, "
+ "connectionRequestTimeout, socketTimeout, disregardTLSCertificate, "
+ " proxyHost, proxyPort, proxyUser and proxyPassword");
}
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/HTTPMetadataProvidersParserSupport.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/HTTPMetadataProvidersParserSupport.java
index d26978e6..82359816 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/HTTPMetadataProvidersParserSupport.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/HTTPMetadataProvidersParserSupport.java
@@ -193,6 +193,14 @@ public final class HTTPMetadataProvidersParserSupport {
clientBuilder.addPropertyValue("responseTimeout",
StringSupport.trimOrNull(element.getAttributeNS(null, "responseTimeout")));
}
+ if (element.hasAttributeNS(null, "requestTimeout")) {
+ clientBuilder.addPropertyValue("requestTimeout",
+ StringSupport.trimOrNull(element.getAttributeNS(null, "requestTimeout")));
+ }
+ if (element.hasAttributeNS(null, "requestTimeoutCorePoolSize")) {
+ clientBuilder.addPropertyValue("requestTimeoutCorePoolSize",
+ StringSupport.trimOrNull(element.getAttributeNS(null, "requestTimeoutCorePoolSize")));
+ }
clientBuilder.addPropertyValue("tLSSocketFactory",
HTTPMetadataProvidersParserSupport.buildTLSSocketFactory(
diff --git a/shib-metadata-spring/src/main/resources/schema/shibboleth-metadata.xsd b/shib-metadata-spring/src/main/resources/schema/shibboleth-metadata.xsd
index d82f2139..cc5eb363 100644
--- a/shib-metadata-spring/src/main/resources/schema/shibboleth-metadata.xsd
+++ b/shib-metadata-spring/src/main/resources/schema/shibboleth-metadata.xsd
@@ -212,6 +212,24 @@
</documentation>
</annotation>
</attribute>
+ <attribute name="requestTimeout" type="shibmd:string">
+ <annotation>
+ <documentation>
+ The maximum allowed length of time for the entire request/response operation to complete.
+ Timeout is expressed in ISO8601 duration notation.
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="requestTimeoutCorePoolSize" type="shibmd:string">
+ <annotation>
+ <documentation>
+ The core pool size of the ScheduledExecutorService used to implement requestTimeout handling.
+
+ This is the number of threads to keep in the pool, even if they are idle.
+ The total number of threads in the pool is allowed to grow up to the max integer value.
+ </documentation>
+ </annotation>
+ </attribute>
<attribute name="proxyHost" type="shibmd:string">
<annotation>
<documentation>
@@ -459,6 +477,24 @@
</documentation>
</annotation>
</attribute>
+ <attribute name="requestTimeout" type="shibmd:string">
+ <annotation>
+ <documentation>
+ The maximum allowed length of time for the entire request/response operation to complete.
+ Timeout is expressed in ISO8601 duration notation.
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="requestTimeoutCorePoolSize" type="shibmd:string">
+ <annotation>
+ <documentation>
+ The core pool size of the ScheduledExecutorService used to implement requestTimeout handling.
+
+ This is the number of threads to keep in the pool, even if they are idle.
+ The total number of threads in the pool is allowed to grow up to the max integer value.
+ </documentation>
+ </annotation>
+ </attribute>
<attribute name="maxConnectionsTotal" type="shibmd:string">
<annotation>
<documentation>
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list