Skip to content

Commit 36daca9

Browse files
authored
refactor: improve lifecycle events (#194)
* refactor: improve lifecycle events * chore: refactor env task logging lifecycle * chore: add trace_id to root span
1 parent fa557af commit 36daca9

File tree

5 files changed

+55
-14
lines changed

5 files changed

+55
-14
lines changed

Cargo.lock

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

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "builder"
3-
version = "0.6.0"
3+
version = "0.6.1"
44
description = "signet builder example"
55

66
edition = "2024"

src/tasks/cache/task.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,25 @@ impl CacheTask {
4545
}
4646

4747
if let Some(env) = self.envs.borrow_and_update().as_ref() {
48+
let _guard = env.span().enter();
4849
let sim_env = env.rollup_env();
4950

5051
basefee = sim_env.basefee;
51-
info!(basefee, block_env_number = sim_env.number.to::<u64>(), block_env_timestamp = sim_env.timestamp.to::<u64>(), "rollup block env changed, clearing cache");
52+
info!(
53+
basefee,
54+
block_env_number = sim_env.number.to::<u64>(), block_env_timestamp = sim_env.timestamp.to::<u64>(),
55+
"rollup block env changed, clearing cache"
56+
);
5257
cache.clean(
5358
sim_env.number.to(), sim_env.timestamp.to()
5459
);
5560
}
5661
}
5762
Some(bundle) = self.bundles.recv() => {
58-
59-
let env_block = self.envs.borrow().as_ref().map(|e| e.rollup_env().number.to::<u64>()).unwrap_or_default();
63+
let env_block = self.envs.borrow()
64+
.as_ref()
65+
.map(|e| e.rollup_env().number.to::<u64>())
66+
.unwrap_or_default();
6067
let bundle_block = bundle.bundle.block_number();
6168

6269
// Don't insert bundles for past blocks

src/tasks/cache/tx.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ impl TxPoller {
134134
})
135135
{
136136
let _guard = span.entered();
137-
debug!(count = ?transactions.len(), "found transactions");
137+
trace!(count = ?transactions.len(), "found transactions");
138138
for tx in transactions.into_iter() {
139139
self.spawn_check_nonce(tx, outbound.clone());
140140
}

src/tasks/env.rs

Lines changed: 42 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,14 @@ use alloy::{
1010
primitives::{B256, U256},
1111
providers::{Provider, network::Network},
1212
};
13+
use init4_bin_base::deps::{
14+
opentelemetry::trace::TraceContextExt, tracing_opentelemetry::OpenTelemetrySpanExt,
15+
};
1316
use signet_constants::SignetSystemConstants;
1417
use signet_sim::{HostEnv, RollupEnv};
1518
use tokio::{sync::watch, task::JoinHandle};
1619
use tokio_stream::StreamExt;
17-
use tracing::{Instrument, Span, info_span};
20+
use tracing::{Instrument, Span, debug_span, info_span};
1821
use trevm::revm::{
1922
context::BlockEnv,
2023
context_interface::block::BlobExcessGasAndPrice,
@@ -273,19 +276,41 @@ impl EnvTask {
273276

274277
drop(span);
275278

276-
while let Some(rollup_header) =
277-
rollup_headers.next().instrument(info_span!("EnvTask::task_fut::stream")).await
279+
// This span will be updated at the end of each loop iteration.
280+
let mut span = info_span!(
281+
parent: None,
282+
"SimEnv",
283+
host_block.number = "initial",
284+
rollup_header.number = "initial",
285+
rollup_header.hash = "initial",
286+
trace_id = tracing::field::Empty,
287+
);
288+
289+
while let Some(rollup_header) = rollup_headers
290+
.next()
291+
.instrument(info_span!(parent: &span, "waiting_for_notification"))
292+
.await
278293
{
294+
// Ensure that we record the OpenTelemetry trace ID in the span.
295+
span.record("trace_id", span.context().span().span_context().trace_id().to_string());
296+
279297
let host_block_number =
280298
self.config.constants.rollup_block_to_host_block_num(rollup_header.number);
299+
let rollup_block_number = rollup_header.number;
281300

282-
let span = info_span!("SimEnv", %host_block_number, %rollup_header.hash, %rollup_header.number);
301+
// Populate span fields.
302+
span.record("host_block.number", host_block_number);
303+
span.record("rollup_header.number", rollup_block_number);
304+
span.record("rollup_header.hash", rollup_header.hash.to_string());
283305

284306
let (host_block_res, quincey_res) = tokio::join!(
285-
self.host_provider.get_block_by_number(host_block_number.into()),
307+
self.host_provider
308+
.get_block_by_number(host_block_number.into())
309+
.into_future()
310+
.instrument(debug_span!(parent: &span, "EnvTask::fetch_host_block")),
286311
// We want to check that we're able to sign for the block we're gonna start building.
287312
// If not, we just want to skip all the work.
288-
self.quincey.preflight_check(host_block_number + 1)
313+
self.quincey.preflight_check(host_block_number + 1).in_current_span(),
289314
);
290315

291316
res_unwrap_or_continue!(
@@ -322,18 +347,27 @@ impl EnvTask {
322347
let rollup_env = self.construct_rollup_env(rollup_header.into());
323348
let host_env = self.construct_host_env(host_header);
324349

325-
span_debug!(
350+
span_info!(
326351
span,
327352
rollup_env_number = rollup_env.block_env.number.to::<u64>(),
328353
rollup_env_basefee = rollup_env.block_env.basefee,
329-
"constructed block env"
354+
"constructed block env, dispatching to build process"
330355
);
331356

332357
if sender.send(Some(SimEnv { span, rollup: rollup_env, host: host_env })).is_err() {
333358
// The receiver has been dropped, so we can stop the task.
334359
tracing::debug!("receiver dropped, stopping task");
335360
break;
336361
}
362+
363+
// Create a new span for the next iteration.
364+
span = info_span!(
365+
"SimEnv",
366+
host_block.number = host_block_number + 1,
367+
rollup_header.number = rollup_block_number + 1,
368+
rollup_header.hash = tracing::field::Empty,
369+
trace_id = tracing::field::Empty,
370+
);
337371
}
338372
}
339373

0 commit comments

Comments
 (0)