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
Yield while building large results in Alternator - rjson::print, executor::batch_get_item #13689
Comments
I'll backport this fix, as it is a bug fix in latency. |
nyh
added a commit
to nyh/scylla
that referenced
this issue
Jul 13, 2023
…t, executor::batch_get_item' from Marcin Maliszkiewicz Adds preemption points used in Alternator when: - sending bigger json response - building results for BatchGetItem I've tested manually by inserting in preemptible sections (e.g. before `os.write`) code similar to: auto start = std::chrono::steady_clock::now(); do { } while ((std::chrono::steady_clock::now() - start) < 100ms); and seeing reactor stall times. After the patch they were not increasing while before they kept building up due to no preemption. Refs scylladb#7926 Fixes scylladb#13689 Closes scylladb#12351 * github.com:scylladb/scylladb: alternator: remove redundant flush call in make_streamed utils: yield when streaming json in print() alternator: yield during BatchGetItem operation (cherry picked from commit d2e0897)
nyh
added a commit
that referenced
this issue
Jul 13, 2023
…t, executor::batch_get_item' from Marcin Maliszkiewicz Adds preemption points used in Alternator when: - sending bigger json response - building results for BatchGetItem I've tested manually by inserting in preemptible sections (e.g. before `os.write`) code similar to: auto start = std::chrono::steady_clock::now(); do { } while ((std::chrono::steady_clock::now() - start) < 100ms); and seeing reactor stall times. After the patch they were not increasing while before they kept building up due to no preemption. Refs #7926 Fixes #13689 Closes #12351 * github.com:scylladb/scylladb: alternator: remove redundant flush call in make_streamed utils: yield when streaming json in print() alternator: yield during BatchGetItem operation (cherry picked from commit d2e0897)
nyh
added a commit
that referenced
this issue
Jul 13, 2023
…t, executor::batch_get_item' from Marcin Maliszkiewicz Adds preemption points used in Alternator when: - sending bigger json response - building results for BatchGetItem I've tested manually by inserting in preemptible sections (e.g. before `os.write`) code similar to: auto start = std::chrono::steady_clock::now(); do { } while ((std::chrono::steady_clock::now() - start) < 100ms); and seeing reactor stall times. After the patch they were not increasing while before they kept building up due to no preemption. Refs #7926 Fixes #13689 Closes #12351 * github.com:scylladb/scylladb: alternator: remove redundant flush call in make_streamed utils: yield when streaming json in print() alternator: yield during BatchGetItem operation (cherry picked from commit d2e0897)
nyh
added a commit
that referenced
this issue
Jul 13, 2023
…t, executor::batch_get_item' from Marcin Maliszkiewicz Adds preemption points used in Alternator when: - sending bigger json response - building results for BatchGetItem I've tested manually by inserting in preemptible sections (e.g. before `os.write`) code similar to: auto start = std::chrono::steady_clock::now(); do { } while ((std::chrono::steady_clock::now() - start) < 100ms); and seeing reactor stall times. After the patch they were not increasing while before they kept building up due to no preemption. Refs #7926 Fixes #13689 Closes #12351 * github.com:scylladb/scylladb: alternator: remove redundant flush call in make_streamed utils: yield when streaming json in print() alternator: yield during BatchGetItem operation (cherry picked from commit d2e0897)
Verified that all three backports (to 5.3, 5.2, 5.1) were successfully promoted. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Branched from #7926 to separate the issue to smaller chunks.
In this issue we fix (the most obvious cases in which yielding is necessary):
The text was updated successfully, but these errors were encountered: