googleapis / googleapis/google-cloud-java
[java-spanner] Disabling retries by setting `retryableCodes` to empty Set doesn't stop from retrying
- 主要语言
- Java
- 星标
- 2.1k
- 派生
- 1.2k
- 平均合并
- 1 天 23 小时
- 30 天内合并 PR
- 154
描述
Hello,
I am using google-cloud-spanner 6.69.0 for java. I am trying to disable retry mechanism for :
`com.google.cloud.spanner.SpannerException: UNAVAILABLE: io.grpc.StatusRuntimeException: UNAVAILABLE: io exception - Statement: 'SELECT 1'`
To do that I have followed the documentation, and set:
```
SpannerOptions.Builder spannerOptionsBuilder = SpannerOptions.newBuilder();
spannerOptionsBuilder.getSpannerStubSettingsBuilder().streamingReadSettings().setRetryableCodes(Collections.emptySet());
spannerOptionsBuilder.getSpannerStubSettingsBuilder().executeStreamingSqlSettings().setRetryableCodes(Collections.emptySet());
```
However, this doesn't seem to have a valid effect because in the retrying loop:
https://github.com/googleapis/java-spanner/blob/6b7e6ca109ea9679b5e36598d3c343fa40bff724/google-cloud-spanner/src/main/java/com/google/cloud/spanner/ResumableStreamIterator.java#L273
method `isRetryable` is defined as follows:
```
boolean isRetryable(SpannerException spannerException) {
return spannerException.isRetryable()
|| retryableCodes.contains(
GrpcStatusCode.of(spannerException.getErrorCode().getGrpcStatusCode()).getCode());
}
```
which basically ignores retryableCodes setting, as long as exception itself is marked as retryable.
Not sure if this is a bug or intended behavior, but this still causes the retries to happen, despite setting retryableCodes to empty.
贡献指南
评估
这个 Issue 还没有评估数据。