Skip to content

Commit 61509fa

Browse files
committed
Set tracing event info before marking request as delivered.
1 parent 7d8cacd commit 61509fa

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

src/workerd/io/worker-entrypoint.c++

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,6 @@ kj::Promise<void> WorkerEntrypoint::request(kj::HttpMethod method,
252252
auto incomingRequest =
253253
kj::mv(KJ_REQUIRE_NONNULL(this->incomingRequest, "request() can only be called once"));
254254
this->incomingRequest = kj::none;
255-
incomingRequest->delivered();
256255
auto& context = incomingRequest->getContext();
257256

258257
auto wrappedResponse = kj::heap<ResponseSentTracker>(response);
@@ -292,6 +291,8 @@ kj::Promise<void> WorkerEntrypoint::request(kj::HttpMethod method,
292291
workerTracer = t;
293292
}
294293

294+
incomingRequest->delivered();
295+
295296
auto metricsForCatch = kj::addRef(incomingRequest->getMetrics());
296297
auto metricsForProxyTask = kj::addRef(incomingRequest->getMetrics());
297298

@@ -576,7 +577,6 @@ kj::Promise<WorkerInterface::ScheduledResult> WorkerEntrypoint::runScheduled(
576577
auto incomingRequest =
577578
kj::mv(KJ_REQUIRE_NONNULL(this->incomingRequest, "runScheduled() can only be called once"));
578579
this->incomingRequest = kj::none;
579-
incomingRequest->delivered();
580580
auto& context = incomingRequest->getContext();
581581

582582
KJ_ASSERT(context.getActor() == kj::none);
@@ -586,10 +586,12 @@ kj::Promise<WorkerInterface::ScheduledResult> WorkerEntrypoint::runScheduled(
586586

587587
double eventTime = (scheduledTime - kj::UNIX_EPOCH) / kj::MILLISECONDS;
588588

589-
KJ_IF_SOME(t, context.getWorkerTracer()) {
589+
KJ_IF_SOME(t, incomingRequest->getWorkerTracer()) {
590590
t.setEventInfo(*incomingRequest, tracing::ScheduledEventInfo(eventTime, kj::str(cron)));
591591
}
592592

593+
incomingRequest->delivered();
594+
593595
// Scheduled handlers run entirely in waitUntil() tasks.
594596
context.addWaitUntil(context.run(
595597
[scheduledTime, cron, entrypointName = entrypointName, props = kj::mv(props), &context,
@@ -643,13 +645,14 @@ kj::Promise<WorkerInterface::AlarmResult> WorkerEntrypoint::runAlarmImpl(
643645
co_return result;
644646
}
645647

646-
// There isn't a pre-existing alarm, we can call `delivered()` (and emit metrics events).
647-
incomingRequest->delivered();
648-
648+
// There isn't a pre-existing alarm, we can set event info and call `delivered()` (which emits
649+
// metrics events).
649650
KJ_IF_SOME(t, incomingRequest->getWorkerTracer()) {
650651
t.setEventInfo(*incomingRequest, tracing::AlarmEventInfo(scheduledTime));
651652
}
652653

654+
incomingRequest->delivered();
655+
653656
auto scheduleAlarmResult = co_await actor.scheduleAlarm(scheduledTime);
654657
KJ_SWITCH_ONEOF(scheduleAlarmResult) {
655658
KJ_CASE_ONEOF(af, WorkerInterface::AlarmFulfiller) {
@@ -737,13 +740,13 @@ kj::Promise<bool> WorkerEntrypoint::test() {
737740
auto incomingRequest =
738741
kj::mv(KJ_REQUIRE_NONNULL(this->incomingRequest, "test() can only be called once"));
739742
this->incomingRequest = kj::none;
740-
incomingRequest->delivered();
741-
742743
auto& context = incomingRequest->getContext();
743-
KJ_IF_SOME(t, context.getWorkerTracer()) {
744+
KJ_IF_SOME(t, incomingRequest->getWorkerTracer()) {
744745
t.setEventInfo(*incomingRequest, tracing::CustomEventInfo());
745746
}
746747

748+
incomingRequest->delivered();
749+
747750
context.addWaitUntil(context.run([entrypointName = entrypointName, props = kj::mv(props),
748751
&context, &metrics = incomingRequest->getMetrics()](
749752
Worker::Lock& lock) mutable -> kj::Promise<void> {

0 commit comments

Comments
 (0)