diff --git a/.changeset/young-ligers-suffer.md b/.changeset/young-ligers-suffer.md new file mode 100644 index 0000000000..2ca4508b57 --- /dev/null +++ b/.changeset/young-ligers-suffer.md @@ -0,0 +1,6 @@ +--- +"trigger.dev": patch +--- + +- dev runs will no longer get stuck in DEQUEUED status +- prevent an ENOENT "System failure" in some dev runs when making the first change after running the dev CLI. diff --git a/packages/cli-v3/src/dev/devSession.ts b/packages/cli-v3/src/dev/devSession.ts index 6445c1f75d..27e31b85ed 100644 --- a/packages/cli-v3/src/dev/devSession.ts +++ b/packages/cli-v3/src/dev/devSession.ts @@ -148,14 +148,6 @@ export async function startDevSession({ if (bundled) { eventBus.emit("rebuildStarted", "dev"); } - - const outdir = b.initialOptions.outdir; - if (outdir && existsSync(outdir)) { - logger.debug("Removing outdir", { outdir }); - - rmSync(outdir, { recursive: true, force: true }); - mkdirSync(outdir, { recursive: true }); - } }); b.onEnd(async (result: esbuild.BuildResult) => { const errors = result.errors; diff --git a/packages/cli-v3/src/dev/devSupervisor.ts b/packages/cli-v3/src/dev/devSupervisor.ts index fdbc3795fb..ac2a4afbb1 100644 --- a/packages/cli-v3/src/dev/devSupervisor.ts +++ b/packages/cli-v3/src/dev/devSupervisor.ts @@ -264,15 +264,11 @@ class DevSupervisor implements WorkerRuntime { return; } - //get relevant versions - //ignore deprecated and the latest worker - const oldWorkerIds = this.#getActiveOldWorkers(); - try { //todo later we should track available resources and machines used, and pass them in here (it supports it) const result = await this.options.client.dev.dequeue({ currentWorker: this.latestWorkerId, - oldWorkers: oldWorkerIds, + oldWorkers: [], // This isn't even used on the server side, so we can just pass an empty array }); if (!result.success) { @@ -285,10 +281,6 @@ class DevSupervisor implements WorkerRuntime { //no runs, try again later if (result.data.dequeuedMessages.length === 0) { - // logger.debug(`No dequeue runs for versions`, { - // oldWorkerIds, - // latestWorkerId: this.latestWorkerId, - // }); setTimeout(() => this.#dequeueRuns(), this.config.dequeueIntervalWithoutRun); return; } @@ -599,42 +591,9 @@ class DevSupervisor implements WorkerRuntime { this.socket.emit("run:unsubscribe", { version: "1", runFriendlyIds: [friendlyId] }); } - #getActiveOldWorkers() { - return Array.from(this.workers.values()) - .filter((worker) => { - //exclude the latest - if (worker.serverWorker?.id === this.latestWorkerId) { - return false; - } - - //if it's deprecated AND there are no executing runs, then filter it out - if (worker.deprecated && worker.serverWorker?.id) { - return this.#workerHasInProgressRuns(worker.serverWorker.id); - } - - return true; - }) - .map((worker) => worker.serverWorker?.id) - .filter((id): id is string => id !== undefined); - } - - #workerHasInProgressRuns(friendlyId: string) { - for (const controller of this.runControllers.values()) { - logger.debug("[DevSupervisor] Checking controller", { - controllerFriendlyId: controller.workerFriendlyId, - friendlyId, - }); - if (controller.workerFriendlyId === friendlyId) { - return true; - } - } - - return false; - } - /** Deletes the worker if there are no active runs, after a delay */ async #tryDeleteWorker(friendlyId: string) { - await awaitTimeout(1_000); + await awaitTimeout(5_000); this.#deleteWorker(friendlyId); } @@ -651,13 +610,6 @@ class DevSupervisor implements WorkerRuntime { if (worker.serverWorker?.version) { this.taskRunProcessPool?.deprecateVersion(worker.serverWorker?.version); } - - if (this.#workerHasInProgressRuns(friendlyId)) { - return; - } - - worker.stop(); - this.workers.delete(friendlyId); } }