googleapis / googleapis/google-cloud-java

[java-spanner] Disabling retries by setting `retryableCodes` to empty Set doesn't stop from retrying

Aperta
#12,255 1 commento 0 reazioni 1 assegnatario Rivendicata da @rahul2393 Vedi su GitHub
api: spanner
Lingua principale
Java
Stelle
2.1k
Fork
1.2k
Merge medio
1g 23h
PR unite (30g)
154

Descrizione

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.

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.