@@ -7,6 +7,18 @@ import { stringifyIO } from "@trigger.dev/core/v3";
7
7
import { nextScheduledTimestamps } from "../utils/calculateNextSchedule.server" ;
8
8
import { findCurrentWorkerDeployment } from "../models/workerDeployment.server" ;
9
9
import { 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
+ } ) ;
10
22
11
23
export class TriggerScheduledTaskService extends BaseService {
12
24
public async call ( instanceId : string , finalAttempt : boolean ) {
@@ -57,11 +69,18 @@ export class TriggerScheduledTaskService extends BaseService {
57
69
shouldTrigger = false ;
58
70
}
59
71
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
+ }
65
84
}
66
85
67
86
if ( instance . environment . type !== "DEVELOPMENT" ) {
0 commit comments