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
[CARBONDATA-3790]Fix SI table consistency with main table segments #3734
Conversation
Build Failed with Spark 2.4.5, Please check CI http://121.244.95.60:12545/job/ApacheCarbon_PR_Builder_2.4.5/1188/ |
Build Failed with Spark 2.3.4, Please check CI http://121.244.95.60:12545/job/ApacheCarbonPRBuilder2.3/2905/ |
Build Success with Spark 2.3.4, Please check CI http://121.244.95.60:12545/job/ApacheCarbonPRBuilder2.3/2906/ |
Build Success with Spark 2.4.5, Please check CI http://121.244.95.60:12545/job/ApacheCarbon_PR_Builder_2.4.5/1189/ |
.carbonLoadModel | ||
.getDatabaseName | ||
}.${ secondaryIndexModel.secondaryIndex.indexName } SET | ||
|SERDEPROPERTIES ('isSITableEnabled' = 'true')""".stripMargin).collect() |
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.
suppose to disable here ? why setting to true
?
please add test case or verify the latest PR in cluster.
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.
that was by mistake during code change, corrected it.
Build Success with Spark 2.4.5, Please check CI http://121.244.95.60:12545/job/ApacheCarbon_PR_Builder_2.4.5/1211/ |
Build Success with Spark 2.3.4, Please check CI http://121.244.95.60:12545/job/ApacheCarbonPRBuilder2.3/2929/ |
LGTM |
Why is this PR needed?
Consider a scenario when SI loading is happening after main tale load, then when taking segment load, we got an issue and we skipped assuming that the missed segments will be loaded in next load by
SILoadEventListenerForFailedSegments
, but the status of SI is still enabled. ButSILoadEventListenerForFailedSegments
will only load to skipped segments if the status is disabled which will lead to segment mismatch between main and SI table, which ay lead query failure or data mismatch.What changes were proposed in this PR?
If it fails to take segment lock, during Si load, add to a skip list, if that is not empty, make the SI disable, so that
SILoadEventListenerForFailedSegments
will take care to load the missing ones in next load to the main table.Does this PR introduce any user interface change?
Is any new test case added?