Skip to content

Commit 68808e9

Browse files
authored
fix: handle specific exceptions (#1370)
* Extending BaseService to create BIGQUERY_EXCEPTION_HANDLER with retry * Replacing EXCEPTION_HANDLER with BIGQUERY_EXCEPTION_HANDLER with retry logic * Adding retryOn java.net.UnknownHostException * Adding License Information * Reverting to EXCEPTION_HANDLER for create method, using BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER for listDataset * Using BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER for query method * Reverting back to EXCEPTION_HANDLER for create method * Updating to "Copyright 2021" * Fixed formatting * Fixed formatting
1 parent dab6e48 commit 68808e9

File tree

2 files changed

+38
-3
lines changed

2 files changed

+38
-3
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/*
2+
* Copyright 2021 Google LLC
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package com.google.cloud.bigquery;
17+
18+
import com.google.cloud.BaseService;
19+
import com.google.cloud.ExceptionHandler;
20+
import com.google.cloud.ServiceOptions;
21+
22+
abstract class BigQueryBaseService<OptionsT extends ServiceOptions<?, OptionsT>>
23+
extends BaseService {
24+
25+
protected BigQueryBaseService(ServiceOptions options) {
26+
super(options);
27+
}
28+
29+
public static final ExceptionHandler BIGQUERY_EXCEPTION_HANDLER =
30+
ExceptionHandler.newBuilder()
31+
.abortOn(RuntimeException.class)
32+
.retryOn(java.net.ConnectException.class) // retry on Connection Exception
33+
.retryOn(java.net.UnknownHostException.class) // retry on UnknownHostException
34+
.addInterceptors(EXCEPTION_HANDLER_INTERCEPTOR)
35+
.build();
36+
}

google-cloud-bigquery/src/main/java/com/google/cloud/bigquery/BigQueryImpl.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
1716
package com.google.cloud.bigquery;
1817

1918
import static com.google.cloud.RetryHelper.runWithRetries;
@@ -458,7 +457,7 @@ private static Page<Dataset> listDatasets(
458457
}
459458
},
460459
serviceOptions.getRetrySettings(),
461-
EXCEPTION_HANDLER,
460+
BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
462461
serviceOptions.getClock());
463462
String cursor = result.x();
464463
return new PageImpl<>(
@@ -1256,7 +1255,7 @@ public com.google.api.services.bigquery.model.QueryResponse call() {
12561255
}
12571256
},
12581257
getOptions().getRetrySettings(),
1259-
EXCEPTION_HANDLER,
1258+
BigQueryBaseService.BIGQUERY_EXCEPTION_HANDLER,
12601259
getOptions().getClock());
12611260
} catch (RetryHelperException e) {
12621261
throw BigQueryException.translateAndThrow(e);

0 commit comments

Comments
 (0)