googleapis / googleapis/google-cloud-java
[java-spanner] Disabling retries by setting `retryableCodes` to empty Set doesn't stop from retrying
- Langage dominant
- Java
- Étoiles
- 2.1k
- Forks
- 1.2k
- Merge moyen
- 1 j 23 h
- PR mergées (30 j)
- 154
Description
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.
Guide de contribution
Ouvrir le guide de contribution
Évaluation
Cette issue n'a pas encore été évaluée.