-
Notifications
You must be signed in to change notification settings - Fork 84
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: add support to a few more specific StorageErrors for the Write API #1563
feat: add support to a few more specific StorageErrors for the Write API #1563
Conversation
OFFSET_OUT_OF_RANGE OFFSET_ALREADY_EXISTS STREAM_NOT_FOUND Towards b/220198094
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add a e2e test for all these exceptions + to show the StatusRuntimeException still works?
Converting this to draft as we realized that there are backend changes needed (https://b.corp.google.com/issues/220198094#comment7) before proceeding. |
google-cloud-bigquerystorage/src/main/java/com/google/cloud/bigquery/storage/v1/Exceptions.java
Show resolved
Hide resolved
The exception backend change is fully rolled out. |
@@ -106,12 +141,32 @@ public static StorageException toStorageException( | |||
if (error == null) { | |||
return null; | |||
} | |||
String streamName = error.getEntity(); | |||
String errorMessage = |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add a comment about this is to trim the entity sub message. Also narrow it further down by looking for "Entity: ".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"Entity:..." is present in the detailMessage of OFFSET_OUT_OF_RANGE
error when it should not be there since we already provide streamName in the error. The full detailMessage I get looks like: "OUT_OF_RANGE: The offset is within stream, expected offset 1, received 0 Entity: projects/.../datasets/.../tables/testtable/streams/CiQ2NGY3OT...".
I created b/231499869 to track this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So why do you need to trim the next message?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What does "next message" mean? I added a comment here to clarify further. Basically, I need to trim the message of whitespaces either way (with or without Entity) in order to get the "expected offset [0-9]+, received [0-9]+" portion to parse out the offset numbers.
Long expectedOffet = | ||
Long.parseLong( | ||
errorMessage.substring( | ||
errorMessage.lastIndexOf("offset") + 7, errorMessage.lastIndexOf(","))); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Have a stream match pattern for "expected offset $0, received $1". I am writing cl/445470232 to make sure the parsing will not break.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
🤖 I have created a release *beep* *boop* --- ## [2.13.0](v2.12.2...v2.13.0) (2022-05-05) ### Features * add support to a few more specific StorageErrors for the Write API ([#1563](#1563)) ([c26091e](c26091e)) * next release from main branch is 2.12.2 ([#1624](#1624)) ([b2aa2a4](b2aa2a4)) ### Bug Fixes * A stuck when the client fail to get DoneCallback ([#1637](#1637)) ([3baa84e](3baa84e)) * Fix a possible NULL PTR after introduced timeout on waitForDone ([#1638](#1638)) ([e1c6ded](e1c6ded)) ### Dependencies * update dependency com.google.cloud:google-cloud-bigquery to v2.10.10 ([#1623](#1623)) ([54b74b8](54b74b8)) * update dependency org.apache.avro:avro to v1.11.0 ([#1632](#1632)) ([b47eea0](b47eea0)) ### Documentation * **samples:** update WriteComittedStream sample code to match best practices ([#1628](#1628)) ([5d4c7e1](5d4c7e1)) * **sample:** update WriteToDefaultStream sample to match best practices ([#1631](#1631)) ([73ddd7b](73ddd7b)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
OFFSET_OUT_OF_RANGE
OFFSET_ALREADY_EXISTS
STREAM_NOT_FOUND
Towards b/220198094