[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