Skip to content

Commit ec41171

Browse files
committed
chore(cubestore): Add tracing for analysis and optimization pass
1 parent b79eac8 commit ec41171

File tree

4 files changed

+16
-0
lines changed

4 files changed

+16
-0
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

datafusion/optimizer/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ log = { workspace = true }
5252
recursive = { workspace = true, optional = true }
5353
regex = { workspace = true }
5454
regex-syntax = "0.8.0"
55+
tracing = { workspace = true }
5556

5657
[dev-dependencies]
5758
async-trait = { workspace = true }

datafusion/optimizer/src/analyzer/mod.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,9 @@ impl Analyzer {
140140
where
141141
F: FnMut(&LogicalPlan, &dyn AnalyzerRule),
142142
{
143+
let analyzer_span = tracing::trace_span!("logical_plan_analyzer");
144+
let _guard = analyzer_span.enter();
145+
143146
// verify the logical plan required invariants at the start, before analyzer
144147
plan.check_invariants(InvariantLevel::Always)
145148
.map_err(|e| e.context("Invalid input plan passed to Analyzer"))?;
@@ -165,6 +168,8 @@ impl Analyzer {
165168

166169
// TODO add common rule executor for Analyzer and Optimizer
167170
for rule in rules {
171+
let rule_span = tracing::trace_span!("analyze", name = rule.name());
172+
let _rule_span_guard = rule_span.enter();
168173
new_plan = rule
169174
.analyze(new_plan, config)
170175
.map_err(|e| e.context(rule.name()))?;

datafusion/optimizer/src/optimizer.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,9 @@ impl Optimizer {
356356
where
357357
F: FnMut(&LogicalPlan, &dyn OptimizerRule),
358358
{
359+
let span = tracing::trace_span!("optimize");
360+
let _span_guard = span.enter();
361+
359362
// verify LP is valid, before the first LP optimizer pass.
360363
plan.check_invariants(InvariantLevel::Executable)
361364
.map_err(|e| e.context("Invalid input plan before LP Optimizers"))?;
@@ -373,7 +376,13 @@ impl Optimizer {
373376
while i < options.optimizer.max_passes {
374377
log_plan(&format!("Optimizer input (pass {i})"), &new_plan);
375378

379+
let optimizer_pass_span = tracing::trace_span!("pass", number = i);
380+
let _optimizer_pass_span_guard = optimizer_pass_span.enter();
381+
376382
for rule in &self.rules {
383+
let rule_span = tracing::trace_span!("rule", name = rule.name());
384+
let _rule_span_guard = rule_span.enter();
385+
377386
// If skipping failed rules, copy plan before attempting to rewrite
378387
// as rewriting is destructive
379388
let prev_plan = options

0 commit comments

Comments
 (0)