@@ -130,62 +130,76 @@ public S2A build() {
130130 * @return the {@link S2AConfig}.
131131 */
132132 private S2AConfig getS2AConfigFromMDS () {
133- GenericUrl genericUrl = new GenericUrl (MDS_MTLS_ENDPOINT );
134- JsonObjectParser parser = new JsonObjectParser (OAuth2Utils .JSON_FACTORY );
135133 if (transportFactory == null ) {
136134 transportFactory =
137135 Iterables .getFirst (
138136 ServiceLoader .load (HttpTransportFactory .class ), OAuth2Utils .HTTP_TRANSPORT_FACTORY );
139137 }
140138
141- String plaintextS2AAddress = "" ;
142- String mtlsS2AAddress = "" ;
139+ HttpRequest request = null ;
140+ GenericUrl genericUrl = new GenericUrl ( MDS_MTLS_ENDPOINT ) ;
143141 try {
144- HttpRequest request =
145- transportFactory .create ().createRequestFactory ().buildGetRequest (genericUrl );
146- request .setParser (parser );
147- request .getHeaders ().set (METADATA_FLAVOR , GOOGLE );
148- request .setThrowExceptionOnExecuteError (false );
149- request .setNumberOfRetries (OAuth2Utils .DEFAULT_NUMBER_OF_RETRIES );
150-
151- ExponentialBackOff backoff =
152- new ExponentialBackOff .Builder ()
153- .setInitialIntervalMillis (OAuth2Utils .INITIAL_RETRY_INTERVAL_MILLIS )
154- .setRandomizationFactor (OAuth2Utils .RETRY_RANDOMIZATION_FACTOR )
155- .setMultiplier (OAuth2Utils .RETRY_MULTIPLIER )
156- .build ();
157-
158- // Retry on 5xx status codes.
159- request .setUnsuccessfulResponseHandler (
160- new HttpBackOffUnsuccessfulResponseHandler (backoff )
161- .setBackOffRequired (
162- response -> RETRYABLE_STATUS_CODES .contains (response .getStatusCode ())));
163- request .setIOExceptionHandler (new HttpBackOffIOExceptionHandler (backoff ));
142+ request = transportFactory .create ().createRequestFactory ().buildGetRequest (genericUrl );
143+ } catch (IOException ignore ) {
144+ /*
145+ * Return empty addresses in {@link S2AConfig} if error building the GET request.
146+ */
147+ return S2AConfig .createBuilder ().build ();
148+ }
164149
150+ request .setParser (new JsonObjectParser (OAuth2Utils .JSON_FACTORY ));
151+ request .getHeaders ().set (METADATA_FLAVOR , GOOGLE );
152+ request .setThrowExceptionOnExecuteError (false );
153+ request .setNumberOfRetries (OAuth2Utils .DEFAULT_NUMBER_OF_RETRIES );
154+
155+ ExponentialBackOff backoff =
156+ new ExponentialBackOff .Builder ()
157+ .setInitialIntervalMillis (OAuth2Utils .INITIAL_RETRY_INTERVAL_MILLIS )
158+ .setRandomizationFactor (OAuth2Utils .RETRY_RANDOMIZATION_FACTOR )
159+ .setMultiplier (OAuth2Utils .RETRY_MULTIPLIER )
160+ .build ();
161+
162+ // Retry on 5xx status codes.
163+ request .setUnsuccessfulResponseHandler (
164+ new HttpBackOffUnsuccessfulResponseHandler (backoff )
165+ .setBackOffRequired (
166+ response -> RETRYABLE_STATUS_CODES .contains (response .getStatusCode ())));
167+ request .setIOExceptionHandler (new HttpBackOffIOExceptionHandler (backoff ));
168+
169+ GenericData responseData = null ;
170+ try {
165171 HttpResponse response = request .execute ();
166172 InputStream content = response .getContent ();
167173 if (content == null ) {
168174 return S2AConfig .createBuilder ().build ();
169175 }
170- GenericData responseData = response .parseAs (GenericData .class );
171- try {
172- plaintextS2AAddress =
173- OAuth2Utils .validateString (
174- responseData , S2A_PLAINTEXT_ADDRESS_JSON_KEY , PARSE_ERROR_S2A );
175- } catch (IOException ignore ) {
176- }
177- try {
178- mtlsS2AAddress =
179- OAuth2Utils .validateString (responseData , S2A_MTLS_ADDRESS_JSON_KEY , PARSE_ERROR_S2A );
180- } catch (IOException ignore ) {
181- }
176+ responseData = response .parseAs (GenericData .class );
182177 } catch (IOException ignore ) {
183178 /*
184179 * Return empty addresses in {@link S2AConfig} once all retries have been exhausted.
185180 */
186181 return S2AConfig .createBuilder ().build ();
187182 }
188183
184+ String plaintextS2AAddress = "" ;
185+ String mtlsS2AAddress = "" ;
186+ try {
187+ plaintextS2AAddress =
188+ OAuth2Utils .validateString (responseData , S2A_PLAINTEXT_ADDRESS_JSON_KEY , PARSE_ERROR_S2A );
189+ } catch (IOException ignore ) {
190+ /*
191+ * Do not throw error because of parsing error, just leave the address as empty in {@link S2AConfig}.
192+ */
193+ }
194+ try {
195+ mtlsS2AAddress =
196+ OAuth2Utils .validateString (responseData , S2A_MTLS_ADDRESS_JSON_KEY , PARSE_ERROR_S2A );
197+ } catch (IOException ignore ) {
198+ /*
199+ * Do not throw error because of parsing error, just leave the address as empty in {@link S2AConfig}.
200+ */
201+ }
202+
189203 return S2AConfig .createBuilder ()
190204 .setPlaintextAddress (plaintextS2AAddress )
191205 .setMtlsAddress (mtlsS2AAddress )
0 commit comments