[java-shib-metadata] branch main updated: JSMD-11: Add support for HttpClient responseTimeout

Brent Putman putmanb at georgetown.edu
Fri Oct 18 20:29:45 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=e861b0ea81d18f66ca5de48523d9bb4242dedb43

The following commit(s) were added to refs/heads/main by this push:
     new e861b0ea JSMD-11: Add support for HttpClient responseTimeout
e861b0ea is described below

commit e861b0ea81d18f66ca5de48523d9bb4242dedb43
Author: Brent Putman <putmanb at georgetown.edu>
AuthorDate: Fri Oct 18 16:21:59 2024 -0400

    JSMD-11: Add support for HttpClient responseTimeout
---
 .../AbstractDynamicHTTPMetadataProviderParser.java   | 10 +++++++++-
 .../spring/metadata/HTTPMetadataProviderParser.java  |  3 ++-
 .../metadata/HTTPMetadataProvidersParserSupport.java |  4 ++++
 .../main/resources/schema/shibboleth-metadata.xsd    | 20 ++++++++++++++++++--
 4 files changed, 33 insertions(+), 4 deletions(-)

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 a19b08f4..3b8f4950 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
@@ -55,6 +55,10 @@ public abstract class AbstractDynamicHTTPMetadataProviderParser extends Abstract
     /** Default socket timeout. */
     @Nonnull @NotEmpty private static final String DEFAULT_SOCKET_TIMEOUT = "PT5S";
 
+    // TODO Leaving at 0 seconds for now to avoid a change in behavior. But change in v6 to something more sensible.
+    /** Default response timeout. */
+    @Nonnull @NotEmpty private static final String DEFAULT_RESPONSE_TIMEOUT = "PT0S";
+
     /** Logger. */
     private final Logger log = LoggerFactory.getLogger(AbstractDynamicHTTPMetadataProviderParser.class);
 
@@ -79,12 +83,13 @@ public abstract class AbstractDynamicHTTPMetadataProviderParser extends Abstract
             if (element.hasAttributeNS(null, "connectionTimeout")
                     || element.hasAttributeNS(null, "connectionRequestTimeout")
                     || element.hasAttributeNS(null, "socketTimeout")
+                    || element.hasAttributeNS(null, "responseTimeout")
                     || 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, "
+                log.warn("httpClientRef overrides settings for connectionTimeout, responseTimeout, "
                     + "connectionRequestTimeout, socketTimeout, maxConnectionsTotal, maxConnectionsPerRoute, "
                     + "disregardTLSCertificate, proxyHost, proxyPort, "
                     + "proxyUser and proxyPassword");
@@ -131,6 +136,9 @@ public abstract class AbstractDynamicHTTPMetadataProviderParser extends Abstract
         if (!element.hasAttributeNS(null, "socketTimeout")) {
             clientBuilder.addPropertyValue("socketTimeout", DEFAULT_SOCKET_TIMEOUT);
         }
+        if (!element.hasAttributeNS(null, "responseTimeout")) {
+            clientBuilder.addPropertyValue("responseTimeout", DEFAULT_RESPONSE_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 4da68421..7766383f 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
@@ -61,10 +61,11 @@ public abstract class HTTPMetadataProviderParser extends AbstractReloadingMetada
             if (element.hasAttributeNS(null, "connectionTimeout")
                     || element.hasAttributeNS(null, "connectionRequestTimeout")
                     || element.hasAttributeNS(null, "socketTimeout")
+                    || element.hasAttributeNS(null, "responseTimeout")
                     || 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, " 
+                log.warn("httpClientRef overrides settings for connectionTimeout, responseTimeout, " 
                     + "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 e368ad58..d26978e6 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
@@ -189,6 +189,10 @@ public final class HTTPMetadataProvidersParserSupport {
             clientBuilder.addPropertyValue("socketTimeout",
                     StringSupport.trimOrNull(element.getAttributeNS(null, "socketTimeout")));
         }
+        if (element.hasAttributeNS(null, "responseTimeout")) {
+            clientBuilder.addPropertyValue("responseTimeout",
+                    StringSupport.trimOrNull(element.getAttributeNS(null, "responseTimeout")));
+        }
 
         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 7798f3ba..d82f2139 100644
--- a/shib-metadata-spring/src/main/resources/schema/shibboleth-metadata.xsd
+++ b/shib-metadata-spring/src/main/resources/schema/shibboleth-metadata.xsd
@@ -183,7 +183,7 @@
                 <attribute name="connectionTimeout" type="shibmd:string">
                     <annotation>
                         <documentation>
-                            The maximum length of time to wait for the remote server to response.
+                            The maximum length of time to wait for a connection to the remote server.
                             Timeout is expressed in ISO8601 duration notation.
                         </documentation>
                     </annotation>
@@ -204,6 +204,14 @@
                         </documentation>
                     </annotation>
                 </attribute>
+                <attribute name="responseTimeout" type="shibmd:string">
+                    <annotation>
+                        <documentation>
+                            The maximum period to wait until the arrival of a response from the remote server.
+                            Timeout is expressed in ISO8601 duration notation.
+                        </documentation>
+                    </annotation>
+                </attribute>
                 <attribute name="proxyHost" type="shibmd:string">
                     <annotation>
                         <documentation>
@@ -422,7 +430,7 @@
                 <attribute name="connectionTimeout" type="shibmd:string">
                     <annotation>
                         <documentation>
-                            The maximum length of time to wait for the remote server to response.
+                            The maximum length of time to wait for a connection to the remote server.
                             Timeout is expressed in ISO8601 duration notation.
                         </documentation>
                     </annotation>
@@ -443,6 +451,14 @@
                         </documentation>
                     </annotation>
                 </attribute>
+                <attribute name="responseTimeout" type="shibmd:string">
+                    <annotation>
+                        <documentation>
+                            The maximum period to wait until the arrival of a response from the remote server.
+                            Timeout is expressed in ISO8601 duration notation.
+                        </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