@@ -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