From 3f17e61a1ad9b288d459ce7c88df17ba95630e12 Mon Sep 17 00:00:00 2001 From: Mattie Fu Date: Tue, 5 Oct 2021 13:31:06 +0000 Subject: [PATCH 1/2] fix: fix typo in rst stream message --- .../data/v2/stub/readrows/ReadRowsConvertExceptionCallable.java | 2 +- .../cloud/bigtable/data/v2/stub/readrows/ReadRowsRetryTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsConvertExceptionCallable.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsConvertExceptionCallable.java index 69dd2b5b8..069765fac 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsConvertExceptionCallable.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsConvertExceptionCallable.java @@ -78,7 +78,7 @@ private Throwable convertException(Throwable t) { // Long lived connections sometimes are disconnected via an RST frame. This error is // transient and should be retried. if (t instanceof InternalException) { - if (t.getMessage() != null && t.getMessage().contains("Received Rst stream")) { + if (t.getMessage() != null && t.getMessage().contains("Received Rst Stream")) { return new InternalException(t, ((InternalException) t).getStatusCode(), true); } } diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsRetryTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsRetryTest.java index 178dab1f1..54a3af5cf 100644 --- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsRetryTest.java +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsRetryTest.java @@ -270,7 +270,7 @@ public void retryRstStreamExceptionTest() { new InternalException( new StatusRuntimeException( Status.INTERNAL.withDescription( - "HTTP/2 error code: INTERNAL_ERROR\nReceived Rst stream")), + "INTERNAL: HTTP/2 error code: INTERNAL_ERROR\nReceived Rst Stream")), GrpcStatusCode.of(Code.INTERNAL), false); service.expectations.add( From 80b48a14a7e89477adc5baf4d4b46099eb49b4b1 Mon Sep 17 00:00:00 2001 From: Mattie Fu Date: Tue, 5 Oct 2021 15:15:18 +0000 Subject: [PATCH 2/2] filter all errors with "rst stream" in it --- .../v2/stub/readrows/ReadRowsConvertExceptionCallable.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsConvertExceptionCallable.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsConvertExceptionCallable.java index 069765fac..0c58f6644 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsConvertExceptionCallable.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/readrows/ReadRowsConvertExceptionCallable.java @@ -77,8 +77,9 @@ public void onComplete() { private Throwable convertException(Throwable t) { // Long lived connections sometimes are disconnected via an RST frame. This error is // transient and should be retried. - if (t instanceof InternalException) { - if (t.getMessage() != null && t.getMessage().contains("Received Rst Stream")) { + if (t instanceof InternalException && t.getMessage() != null) { + String error = t.getMessage().toLowerCase(); + if (error.contains("rst_stream") || error.contains("rst stream")) { return new InternalException(t, ((InternalException) t).getStatusCode(), true); } }