forked from apache/arrow
-
Notifications
You must be signed in to change notification settings - Fork 0
ARROW-?????: [C++] as-of-join backpressure for large sources #21
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 3 commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
2af95c3
ARROW-?????: [C++] as-of-join backpressure for large sources
rtpsw a8b42b8
fix test, expose parameters
rtpsw 8f03d15
Cleaned up the finish handling in the process thread
westonpace 659f62a
fix backpressure counter and demo memory usage
rtpsw ddd72d9
fix hang
rtpsw 49e4141
fix race condition
rtpsw 9451895
better fix of race condition
rtpsw f27283a
Revert "fix hang"
westonpace 93be685
Fix hang introduced earlier.
westonpace 4e37842
Add an alias to AssertTablesEqual called AssertTablesEqualUnordered t…
westonpace 527070b
Minor lint fix
westonpace 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
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
Oops, something went wrong.
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.
What if the previous line throws an exception? This line potentially calls into a node not provided by Arrow, so it could throw. The call to
MarkFinishedshould happen in any case.Uh oh!
There was an error while loading. Please reload this page.
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 could be mistaken but I don't think input finished is allowed to throw exception. I think there is a ticket/discussion to allow
InputReceivedto return a Status rather than void but not sure aboutInputFinished.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 take a safety point of view here. Even if the method is not allowed to throw an exception, it is not something Arrow QA can validate, because the node called into is potentially outside of Arrow code. I'm proposing a small fix that prevents a developer oversight, due to causing an exception where one shouldn't occur, from escalating into a deadlock. A deadlock is strictly worse at least when a long-running execution is planned because the user may notice the deadlock much later than when it occurred; an early-failure is better.
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 agree an early-failure is better - an intended exception should not cause the system to deadlock ideally. @rtpsw I think I am missing sth - do you have a proposed fix?
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'd propose fixing by wrapping
finished_.MarkFinished()in a destructor for its scope - something like:where
Deferis something like: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.
Sorry for posting code here. I'll only free up to preparing a commit a bit later.