Skip to content
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

Hard to debug in standalone mode due to logs of different components being in the same file #13988

Closed
lmatz opened this issue Dec 14, 2023 · 7 comments
Milestone

Comments

@lmatz
Copy link
Contributor

lmatz commented Dec 14, 2023

          > use standalone mode.

We will recommend users to use standalone mode by default once it is integrated into the test pipelines and we found no problem

@lmatz After change the integration pipeline to use standalone mode, all logs printed by different components (cn, compactor, etc) are interleaved. And we cannot easily grep by component name, since there is no component name prefix in the log, only crate prefix. That makes it hard to analyze the failed test case.

So what about change the docker-compose.yml of integration test to inherit from docker-compose-distributed.yml instead of docker-compose.yml.

Originally posted by @StrikeW in #13235 (comment)

@github-actions github-actions bot added this to the release-1.6 milestone Dec 14, 2023
@kwannoel
Copy link
Contributor

Hmm isn't crate prefix mostly sufficient (risingwave_meta, risingwave_stream, etc...)? Could you share some examples @StrikeW ?

@StrikeW
Copy link
Contributor

StrikeW commented Dec 14, 2023

Some crates are shared by multiple components. IMO the extent of interleave depends on the workload. In the integration test scenario, workload is usually light, so it is still acceptable. But if we run complex workload e.g. ch-benchmark, I think it would be hard to analyze issue specific to a component.

@kwannoel
Copy link
Contributor

Some crates are shared by multiple components. IMO the extent of interleave depends on the workload. In the integration test scenario, workload is usually light, so it is still acceptable. But if we run complex workload e.g. ch-benchmark, I think it would be hard to analyze issue specific to a component.

What I'm thinking is if the solution can be as simple as providing a script or tool to partition the logs by crate.

@BugenZhao
Copy link
Member

IIRC, most of our workloads run under their specific runtimes, where the custom thread names are set.

let runtime = {
let mut builder = tokio::runtime::Builder::new_multi_thread();
if let Some(worker_threads_num) = config.actor_runtime_worker_threads_num {
builder.worker_threads(worker_threads_num);
}
builder
.thread_name("risingwave-streaming-actor")
.enable_all()
.build()
.unwrap()
};

Do you think including the thread name in the logs will help?

https://docs.rs/tracing-subscriber/latest/tracing_subscriber/fmt/format/struct.Format.html#method.with_thread_names

@StrikeW
Copy link
Contributor

StrikeW commented Dec 15, 2023

Do you think including the thread name in the logs will help?

This one looks better to me. But I think it may not cover the case of the embedded jvm, those log printed in java side is running in a dedicated thread. Or we may need to assign a name to it.

Do we will use standalone on the cloud? I am not sure whether the plugin can collect the logs belonging to different components with the above solutions.

@lmatz
Copy link
Contributor Author

lmatz commented Dec 15, 2023

Do we will use standalone on the cloud?

Yes, for dev tier

@fuyufjh
Copy link
Member

fuyufjh commented Jan 9, 2024

Closed by #14114

@fuyufjh fuyufjh closed this as completed Jan 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants