diff --git a/crates/autopilot/src/infra/solvers/mod.rs b/crates/autopilot/src/infra/solvers/mod.rs index b953e577c3..c35e0862aa 100644 --- a/crates/autopilot/src/infra/solvers/mod.rs +++ b/crates/autopilot/src/infra/solvers/mod.rs @@ -60,6 +60,7 @@ impl Driver { .post(url) .json(request) .timeout(timeout) + .header("X-REQUEST-ID", request.auction_id.to_string()) .send() .await .context("send")?; diff --git a/crates/driver/src/domain/competition/mod.rs b/crates/driver/src/domain/competition/mod.rs index e8c8d964ed..aa888d10ea 100644 --- a/crates/driver/src/domain/competition/mod.rs +++ b/crates/driver/src/domain/competition/mod.rs @@ -355,6 +355,8 @@ impl Competition { solution_id, submission_deadline, response_sender, + request_id: ::observe::request_id::get_task_local_storage() + .unwrap_or_else(|| auction_id.to_string()), }; self.settle_queue.try_send(request).map_err(|err| { @@ -387,9 +389,10 @@ impl Competition { solution_id, submission_deadline, response_sender, + request_id, } = request; let solver = self.solver.name().as_str(); - async { + let submission_task = async { if self.eth.current_block().borrow().number >= submission_deadline { if let Err(err) = response_sender.send(Err(DeadlineExceeded.into())) { tracing::error!( @@ -410,8 +413,9 @@ impl Competition { tracing::error!(?err, "Failed to send /settle response"); } } - .instrument(tracing::info_span!("/settle", solver, %auction_id)) - .await + .instrument(tracing::info_span!("/settle", solver, %auction_id)); + + ::observe::request_id::set_task_local_storage(request_id, submission_task).await; } } @@ -533,6 +537,7 @@ struct SettleRequest { solution_id: u64, submission_deadline: BlockNo, response_sender: oneshot::Sender>, + request_id: String, } /// Solution information sent to the protocol by the driver before the solution