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
test(scale): introduce deterministic scaling tests #5657
Conversation
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Codecov Report
@@ Coverage Diff @@
## main #5657 +/- ##
==========================================
- Coverage 74.30% 74.29% -0.02%
==========================================
Files 924 924
Lines 144308 144263 -45
==========================================
- Hits 107225 107175 -50
- Misses 37083 37088 +5
Flags with carried forward coverage won't be shown. Click here to find out more.
📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more |
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
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.
--
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!
@@ -30,6 +30,7 @@ members = [ | |||
"src/test_runner", | |||
"src/tests/regress", | |||
"src/tests/simulation", | |||
"src/tests/simulation_scale", |
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 prefer merging it into the existing simulation crate, maybe in a future PR.
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.
category = "RiseDev - Archive simulation scaling tests" | ||
description = "Archive integration scaling tests in deterministic simulation mode" | ||
dependencies = ["warn-on-missing-tools"] | ||
env = { RUSTFLAGS = "-Ctarget-cpu=native --cfg tokio_unstable --cfg madsim", RUSTDOCFLAGS = "--cfg madsim", CARGO_TARGET_DIR = "target/sim" } |
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't decide how to enable SIMD this way through environments. Thus, the results of JSON parsing might be different due to precision errors like #5487. 🥵
if chunk.is_empty() { | ||
yield pending().await; |
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.
This could be CPU intensive if there are no remaining records to generate, which is problematic with madsim. 🤣
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
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.
LSTM!!!
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
// The connector assumes that the stream will never end, so if the `event_num` is hit, we | ||
// pend the stream forever. | ||
// TODO: should we allow the stream to finish? | ||
let () = pending().await; |
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 think the stream generator themselves should always end the stream gracefully, as long as they are not infinite streams. Even for those down-streams, they should end themselves as well when the upstream is closed. This way the errors can be propagated to the sink. The system won't be blocking implicitly.
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've discussed this issue and decided not to use the Stream terminate
or TryStream error
to represent the stream state in RisingWave as we don't want to propagate the error through the network. 🥵 The error yielded in actor internally should be collected by the Actor
instance and find a way to report it to meta service if possible. cc @fuyufjh
For the stream reader, I find that the refactor just merged has removed the assumption (as we're all-in async stream), so maybe the workaround can be removed. Note that there's a select
of source reader and barrier receiver, the source executor will work correctly after the source is gracefully terminated. On error, it will propagate to the actor of this source executor.
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
After allowing the source reader part to terminate, the |
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
Signed-off-by: Bugen Zhao <i@bugenzhao.com>
I hereby agree to the terms of the Singularity Data, Inc. Contributor License Agreement.
What's changed and what's your intention?
As explained in #5655.
The
nexmark_q4.rs
shows how to manually write scaling cases, and tests issue #5523. I'm planning to test more queries with random plans after resolving some blockers:Checklist
./risedev check
(or alias,./risedev c
)Refer to a related PR or issue link (optional)