Skip to content

Commit 651b567

Browse files
committed
chore: fix hws on startup
1 parent 9e5ea4b commit 651b567

1 file changed

Lines changed: 9 additions & 4 deletions

File tree

rivetkit-typescript/packages/rivetkit/src/drivers/engine/actor-driver.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -702,6 +702,12 @@ export class EngineActorDriver implements ActorDriver {
702702
preloadMap,
703703
);
704704

705+
// Resolve start promise after start() fully completes
706+
// (including resetSleepTimer). This ensures forceStopActor
707+
// cannot call onStop until the actor is fully initialized.
708+
handler.actorStartPromise?.resolve();
709+
handler.actorStartPromise = undefined;
710+
705711
logger().debug({ msg: "runner actor started", actorId, name, key });
706712
} catch (innerError) {
707713
const error =
@@ -1153,14 +1159,13 @@ export class EngineActorDriver implements ActorDriver {
11531159
}
11541160

11551161
async onBeforeActorStart(actor: AnyActorInstance): Promise<void> {
1156-
// Resolve promise if waiting
11571162
const handler = this.#actors.get(actor.id);
11581163
invariant(handler, "missing actor handler in onBeforeActorReady");
11591164
handler.actorStartError = undefined;
1160-
handler.actorStartPromise?.resolve();
1161-
handler.actorStartPromise = undefined;
11621165

1163-
// Restore hibernating requests
1166+
// Restore hibernating requests. The start promise is resolved in
1167+
// #runnerOnActorStart after start() fully completes (including
1168+
// resetSleepTimer), so forceStopActor cannot interfere here.
11641169
const metaEntries = await this.#hwsLoadAll(actor.id);
11651170
await this.#runner.restoreHibernatingRequests(actor.id, metaEntries);
11661171
}

0 commit comments

Comments
 (0)