-
Notifications
You must be signed in to change notification settings - Fork 1.5k
delete all related minion task metadata when deleting a table #9339
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
Merged
Merged
Changes from all commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
26219ad
delete table related minion task metadata when deleting table
zhtaoxiang 71bb19f
update comment
zhtaoxiang c9be0de
simplify the logic
zhtaoxiang 20b1014
address comments
zhtaoxiang fd6cbde
update comment
zhtaoxiang 7300794
fix logic
zhtaoxiang dc91544
fix formating issue
zhtaoxiang c6fd3ce
update log message
zhtaoxiang b1ef61a
enrich test cases
zhtaoxiang f5c4d3d
add a TODO
zhtaoxiang File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
If the path doesn't exist,
propertyStore.remove()will return false. In this case, an exception will be thrown and the for loop will stop, which contradicts to the comment several lines above though.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.
Hmmm, I tested locally using integration test, if we are trying to remove a non-existent path, it returns true.
Could you please let me know your test setup so I can try it myself? Thanks!
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.
Oh nvm, saw the source code in helix-core jar. I feel the better approach would be to traverse all the existing task types instead of going over all the children nodes (there could be thousands of tables in a cluster), but for now I'm fine with this. You can add a TODO here.
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.
I have another version implemented locally 😄 , which scans jars and find all minion task types, similar to what https://github.com/apache/pinot/blob/master/pinot-controller/src/main/java/org/apache/pinot/controller/helix/core/minion/generator/TaskGeneratorRegistry.java does.
I chose the current one (which reads from ZK) because I want to use ZK as the source of truth, so we will not miss any ZNode.
But you point out a very good point that there might be thousands of tables. I can add a TODO and we can decide later.
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.
Let me know your thought, we can switch to the other approach or we can merge the current approach and get back to it later.
(BTW, could you please merge it if we want to go with the current approach as for now because I cannot merge the code 😄 )
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.
We can get back to it later. I'll merge this one. Thanks for making the change!