-
Notifications
You must be signed in to change notification settings - Fork 3.4k
HBASE-29742 Compaction scan returns single cells instead of rows after 10MB #7517
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
base: master
Are you sure you want to change the base?
Conversation
Apache9
left a comment
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.
The naming and logic is a bit confusing here, we have a keepProgress field here, but we use it outside ScannerContext to determine whether we should call clearProgress, but for the keepBlockProgress, we use it inside the ScannerContext while calling the clearProgress method...
|
And I can not recall why block size should not be cleared... Need to do git blame... |
|
Seems to be broken by HBASE-27558, where we introduce quotas for total block io for scans. |
|
💔 -1 overall
This message was automatically generated. |
Yes, this is a sub-case of the keepProgress=false case. I'm of course open to suggestions on changing names or implementation. |
TBH that's not clear to me either. |
|
🎊 +1 overall
This message was automatically generated. |
wchevreuil
left a comment
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, just please address spotless issues.
|
The spotless issues will be fixed by #7507. I think we'd better try to understand the code added in HBASE_27558, and see what is the correct way to fix this, instead of just adding a side logic to bypass the check... |
Reading the text of HBASE-27558 , it's not reset because the block limit was meant for quota enforcement, not for limiting the RPC response time / size, like the rest of the limits. I agree that this is not the cleanest design, but ScannerContext is the mechanism for we have for tracking resource usage in StoreScanner and returning early, and adding a separate mechanism for quota enforcement would not necessarily be an improvement. We could perhaps generalize the behaviour to be per limit to make it more explicit. Today we are already treating the time limit differently, as it can not be reset by implementation, Do you think making these implicit per-limit options explicitly configurable for each limit help ? I'm not sure. @bbeaudreault what's your take ? |
|
Checked the code, the only place where we set keepProgress to true is in RegionScannerImpl.populateResult, where we want to keep progress across families, i.e, different StoreScanners. This is the keepProgress designed to do. The ScannerContext is not designed to enforce quota, so I think the usage in HBASE-27558 is incorrect, at least, it should not mess up with other limits. Let me think what is the better way to fix it, at least, we should change the code added in HBASE-27558, not the code in other places... Thanks. |
No description provided.