@@ -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
@@ -575,7 +576,6 @@ kj::Promise<WorkerInterface::ScheduledResult> WorkerEntrypoint::runScheduled(
575576 auto incomingRequest =
576577 kj::mv (KJ_REQUIRE_NONNULL (this ->incomingRequest , " runScheduled() can only be called once" ));
577578 this ->incomingRequest = kj::none;
578- incomingRequest->delivered ();
579579 auto & context = incomingRequest->getContext ();
580580
581581 KJ_ASSERT (context.getActor () == kj::none);
@@ -585,10 +585,12 @@ kj::Promise<WorkerInterface::ScheduledResult> WorkerEntrypoint::runScheduled(
585585
586586 double eventTime = (scheduledTime - kj::UNIX_EPOCH) / kj::MILLISECONDS;
587587
588- KJ_IF_SOME (t, context. getWorkerTracer ()) {
588+ KJ_IF_SOME (t, incomingRequest-> getWorkerTracer ()) {
589589 t.setEventInfo (*incomingRequest, tracing::ScheduledEventInfo (eventTime, kj::str (cron)));
590590 }
591591
592+ incomingRequest->delivered ();
593+
592594 // Scheduled handlers run entirely in waitUntil() tasks.
593595 context.addWaitUntil (context.run (
594596 [scheduledTime, cron, entrypointName = entrypointName, props = kj::mv (props), &context,
@@ -642,13 +644,14 @@ kj::Promise<WorkerInterface::AlarmResult> WorkerEntrypoint::runAlarmImpl(
642644 co_return result;
643645 }
644646
645- // There isn't a pre-existing alarm, we can call `delivered()` (and emit metrics events).
646- incomingRequest->delivered ();
647-
647+ // There isn't a pre-existing alarm, we can set event info and call `delivered()` (which emits
648+ // metrics events).
648649 KJ_IF_SOME (t, incomingRequest->getWorkerTracer ()) {
649650 t.setEventInfo (*incomingRequest, tracing::AlarmEventInfo (scheduledTime));
650651 }
651652
653+ incomingRequest->delivered ();
654+
652655 auto scheduleAlarmResult = co_await actor.scheduleAlarm (scheduledTime);
653656 KJ_SWITCH_ONEOF (scheduleAlarmResult) {
654657 KJ_CASE_ONEOF (af, WorkerInterface::AlarmFulfiller) {
@@ -736,13 +739,13 @@ kj::Promise<bool> WorkerEntrypoint::test() {
736739 auto incomingRequest =
737740 kj::mv (KJ_REQUIRE_NONNULL (this ->incomingRequest , " test() can only be called once" ));
738741 this ->incomingRequest = kj::none;
739- incomingRequest->delivered ();
740-
741742 auto & context = incomingRequest->getContext ();
742- KJ_IF_SOME (t, context. getWorkerTracer ()) {
743+ KJ_IF_SOME (t, incomingRequest-> getWorkerTracer ()) {
743744 t.setEventInfo (*incomingRequest, tracing::CustomEventInfo ());
744745 }
745746
747+ incomingRequest->delivered ();
748+
746749 context.addWaitUntil (context.run ([entrypointName = entrypointName, props = kj::mv (props),
747750 &context, &metrics = incomingRequest->getMetrics ()](
748751 Worker::Lock& lock) mutable -> kj::Promise<void > {
0 commit comments