@@ -1021,6 +1021,10 @@ private HttpGet createNewGetRequest(URI url, String returnType) {
10211021 return request ;
10221022 }
10231023
1024+ /** Get a stream supplier for the given URI.
1025+ *
1026+ * Caller must close the stream when done.
1027+ */
10241028 InputStreamSupplier getInputStreamSupplier (final String uriString ) {
10251029 return new InputStreamSupplier () {
10261030 public InputStream get () {
@@ -1030,13 +1034,12 @@ public InputStream get() {
10301034 while (tries < 5 ) {
10311035 logger .fine ("Get # " + tries + " for " + uriString );
10321036 HttpGet getFile = createNewGetRequest (uri , null );
1033- logger .finest ("Retrieving " + tries + ": " + uriString );
1034-
1037+
10351038 try {
10361039 // Execute the request directly and keep the response open
1037- final CloseableHttpResponse response = (CloseableHttpResponse ) client .executeOpen (null , getFile ,HttpClientContext .create ());
1040+ final CloseableHttpResponse response = (CloseableHttpResponse ) client .executeOpen (null , getFile , HttpClientContext .create ());
10381041 int statusCode = response .getCode ();
1039-
1042+
10401043 if (statusCode == 200 ) {
10411044 logger .finest ("Retrieved: " + uri );
10421045 // Return a wrapped stream that will close the response when the stream is closed
@@ -1060,9 +1063,8 @@ public void close() throws IOException {
10601063 }
10611064 } else {
10621065 // Close the response for non-200 responses
1063- EntityUtils .consume (response .getEntity ());
10641066 response .close ();
1065-
1067+
10661068 logger .warning ("Attempt: " + tries + " - Unexpected Status when retrieving " + uriString
10671069 + " : " + statusCode );
10681070
@@ -1072,16 +1074,16 @@ public void close() throws IOException {
10721074 } else {
10731075 tries ++;
10741076 try {
1075- // Calculate exponential backoff: 2^tries * baseWaitTimeMs
1076- long waitTime = (long ) (Math .pow (2 , tries ) * 1000 ); // Using 1 second as base wait time
1077-
1077+ // Calculate exponential backoff: 2^tries * baseWaitTimeMs (1 sec)
1078+ long waitTime = (long ) (Math .pow (2 , tries ) * baseWaitTimeMs );
1079+
10781080 // Add jitter: random value between 0-30% of the wait time
10791081 long jitter = (long ) (waitTime * 0.3 * Math .random ());
10801082 waitTime = waitTime + jitter ;
1081-
1082- // Cap the wait time at 30 seconds
1083- waitTime = Math .min (waitTime , 30000 );
1084-
1083+
1084+ // Cap the wait time at maxWaitTimeMs ( 30 seconds)
1085+ waitTime = Math .min (waitTime , maxWaitTimeMs );
1086+
10851087 logger .fine ("Sleeping for " + waitTime + "ms before retry attempt " + tries );
10861088 Thread .sleep (waitTime );
10871089 } catch (InterruptedException ie ) {
@@ -1098,15 +1100,14 @@ public void close() throws IOException {
10981100 tries ++;
10991101 logger .log (Level .WARNING , "Attempt# " + tries + " : Unable to retrieve file: " + uriString , e );
11001102 if (tries == 5 ) {
1101- logger .severe ( "Final attempt failed for " + uriString );
1103+ logger .log ( Level . SEVERE , "Final attempt failed for " + uriString , e );
11021104 }
1103- e .printStackTrace ();
11041105 }
11051106 }
11061107 } catch (URISyntaxException e ) {
1107- e . printStackTrace ( );
1108+ logger . severe ( "URISyntaxException for: " + uriString );
11081109 }
1109-
1110+
11101111 logger .severe ("Could not read: " + uriString );
11111112 return null ;
11121113 }
0 commit comments