googleapis / googleapis/google-cloud-java

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

Open
#12,255 1 comment 0 reactions 1 assignee Claimed by @rahul2393 View on GitHub
api: spanner
Dominant language
Java
Stars
2.1k
Forks
1.2k
Avg merge
1d 23h
Merged PRs (30d)
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.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.