Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -850,7 +850,7 @@ long flush(
boolean hasPersistentErrors =
failedContext.getError() instanceof Exceptions.StreamFinalizedException
|| statusCode.equals(Status.Code.INVALID_ARGUMENT)
|| statusCode.equals(Status.Code.NOT_FOUND)
|| (!this.useDefaultStream && statusCode.equals(Status.Code.NOT_FOUND))
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is it not a persistent error if the default stream is not found? Where are you seeing this issue?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah I'm seeing it in StorageApiSinkFailedRowsIT.testSchemaMismatchCaughtByBeam[1] (AT_LEAST_ONCE/default stream path). In the failing logs, createNewTable succeeds, then append to .../streams/_default immediately returns NOT_FOUND for that same table, which lookd like a transient storage API visibility race rather than a permanently missing stream so the intent here is to retry NOT_FOUND for default stream only and keep it persistent for non default streams and also I noticed the current snippet has duplicated NOT_FOUND checks, and the unconditional one should be removed

|| statusCode.equals(Status.Code.FAILED_PRECONDITION);
if (hasPersistentErrors) {
throw new RuntimeException(
Expand Down
Loading