googleapis / googleapis/google-cloud-java

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

Offen
#12,255 1 Kommentar 0 Reaktionen 1 zugewiesene Person Beansprucht von @rahul2393 Auf GitHub ansehen
api: spanner
Vorherrschende Sprache
Java
Sterne
2.1k
Forks
1.2k
Ø Merge
1 T. 23 Std.
Gemergte PRs (30 T.)
154

Beschreibung

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.

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.