@@ -7,6 +7,18 @@ import { stringifyIO } from "@trigger.dev/core/v3";
77import { nextScheduledTimestamps } from "../utils/calculateNextSchedule.server" ;
88import { findCurrentWorkerDeployment } from "../models/workerDeployment.server" ;
99import { logger } from "~/services/logger.server" ;
10+ import { env } from "~/env.server" ;
11+ import Redis from "ioredis" ;
12+ import { DevPresenceStream } from "~/presenters/v3/DevPresenceStream.server" ;
13+
14+ const redis = new Redis ( {
15+ port : env . RUN_ENGINE_DEV_PRESENCE_REDIS_PORT ?? undefined ,
16+ host : env . RUN_ENGINE_DEV_PRESENCE_REDIS_HOST ?? undefined ,
17+ username : env . RUN_ENGINE_DEV_PRESENCE_REDIS_USERNAME ?? undefined ,
18+ password : env . RUN_ENGINE_DEV_PRESENCE_REDIS_PASSWORD ?? undefined ,
19+ enableAutoPipelining : true ,
20+ ...( env . RUN_ENGINE_DEV_PRESENCE_REDIS_TLS_DISABLED === "true" ? { } : { tls : { } } ) ,
21+ } ) ;
1022
1123export class TriggerScheduledTaskService extends BaseService {
1224 public async call ( instanceId : string , finalAttempt : boolean ) {
@@ -57,11 +69,18 @@ export class TriggerScheduledTaskService extends BaseService {
5769 shouldTrigger = false ;
5870 }
5971
60- if (
61- instance . environment . type === "DEVELOPMENT" &&
62- ( ! instance . environment . currentSession || instance . environment . currentSession . disconnectedAt )
63- ) {
64- shouldTrigger = false ;
72+ if ( instance . environment . type === "DEVELOPMENT" ) {
73+ //v3
74+ const v3Disconnected =
75+ ! instance . environment . currentSession ||
76+ instance . environment . currentSession . disconnectedAt ;
77+ //v4
78+ const presenceKey = DevPresenceStream . getPresenceKey ( instance . environment . id ) ;
79+ const v4Disconnected = await redis . get ( presenceKey ) ;
80+
81+ if ( v3Disconnected && v4Disconnected ) {
82+ shouldTrigger = false ;
83+ }
6584 }
6685
6786 if ( instance . environment . type !== "DEVELOPMENT" ) {
0 commit comments