googleapis / googleapis/google-cloud-java
[java-spanner] Disabling retries by setting `retryableCodes` to empty Set doesn't stop from retrying
- Lenguaje dominante
- Java
- Estrellas
- 2.1k
- Forks
- 1.2k
- Merge medio
- 1 d 23 h
- PR fusionados (30 d)
- 154
Descripción
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.
Guía de contribución
Evaluación
Este issue todavía no se ha evaluado.