-
Notifications
You must be signed in to change notification settings - Fork 2k
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
fix404ExceptionOnSparkAfterSplit #29982
Conversation
API change check API changes are not detected in this pull request. |
...cosmos-spark_3_2-12/src/test/scala/com/azure/cosmos/spark/SparkE2EChangeFeedSplitITest.scala
Outdated
Show resolved
Hide resolved
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.
Thanks Annie!
/azp run java - cosmos - tests |
Azure Pipelines successfully started running 1 pipeline(s). |
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.
Annie - please ping me offline. Want to understand whether after the split we still have three ranges - one with min==max (but proper flags) - if so, that is a bug we should address as well.
By passing the proper flags, there is no range with min=max any more |
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.
LGTM - thanks!
/azp run java - cosmos - tests |
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run java - cosmos - spark |
Azure Pipelines successfully started running 1 pipeline(s). |
Description
When a split happens, customer may get a 404 exception.
Example stackTraces:
First getting a 410/1002
In this PR, it includes two fixes:
shouldRetryResult
afterFeedRangeContinuationSplitRetryPolicy.handleSplit
, so the process will continues instead of throwing back toTransientIOErrorsRetryingIterator
.FeedRangeContinuationSplitRetryPolicy.handleSplit
,there is a range(Min = Max, isMinInclusive = true, isMaxInclusive = false) being generated, which causing no overlapping ranges in the
FeedRangeEpkImpl.populateFeedRangeFilteringHeaders`, hence a client side 404 is being generated. The fix is to use the correct isMinInClusive, isMaxInclusive flag.All SDK Contribution checklist:
General Guidelines and Best Practices
Testing Guidelines
SparkE2EChangeFeedSplitITest
from PR: Adding a unit test to reproduce the NotFoundException in change feed after partition split #29980