Skip to content

Commit bcd0de1

Browse files
committed
feat(webapp): give the realtime runs feed its own pub/sub Redis
Run the realtime runs feed's run-changed pub/sub on a dedicated REALTIME_RUNS_PUBSUB_REDIS_* connection set (falling back to PUBSUB_REDIS_* / REDIS_*), so its publish/subscribe traffic can be isolated from the shared pub/sub Redis.
1 parent 94c5a03 commit bcd0de1

2 files changed

Lines changed: 37 additions & 6 deletions

File tree

apps/webapp/app/env.server.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,37 @@ const EnvironmentSchema = z
357357
PUBSUB_REDIS_TLS_DISABLED: z.string().default(process.env.REDIS_TLS_DISABLED ?? "false"),
358358
PUBSUB_REDIS_CLUSTER_MODE_ENABLED: z.string().default("0"),
359359

360+
// Dedicated pub/sub Redis for the realtime runs feed's run-changed notifier, so
361+
// its publish/subscribe traffic can run on its own instance. Each value falls
362+
// back to the shared PUBSUB_REDIS_* (then REDIS_*) when unset, so the default is
363+
// unchanged until explicitly pointed at a dedicated instance.
364+
REALTIME_RUNS_PUBSUB_REDIS_HOST: z
365+
.string()
366+
.optional()
367+
.transform((v) => v ?? process.env.PUBSUB_REDIS_HOST ?? process.env.REDIS_HOST),
368+
REALTIME_RUNS_PUBSUB_REDIS_PORT: z.coerce
369+
.number()
370+
.optional()
371+
.transform((v) => {
372+
if (v !== undefined) return v;
373+
const raw = process.env.PUBSUB_REDIS_PORT ?? process.env.REDIS_PORT;
374+
return raw ? parseInt(raw) : undefined;
375+
}),
376+
REALTIME_RUNS_PUBSUB_REDIS_USERNAME: z
377+
.string()
378+
.optional()
379+
.transform((v) => v ?? process.env.PUBSUB_REDIS_USERNAME ?? process.env.REDIS_USERNAME),
380+
REALTIME_RUNS_PUBSUB_REDIS_PASSWORD: z
381+
.string()
382+
.optional()
383+
.transform((v) => v ?? process.env.PUBSUB_REDIS_PASSWORD ?? process.env.REDIS_PASSWORD),
384+
REALTIME_RUNS_PUBSUB_REDIS_TLS_DISABLED: z
385+
.string()
386+
.default(process.env.PUBSUB_REDIS_TLS_DISABLED ?? process.env.REDIS_TLS_DISABLED ?? "false"),
387+
REALTIME_RUNS_PUBSUB_REDIS_CLUSTER_MODE_ENABLED: z
388+
.string()
389+
.default(process.env.PUBSUB_REDIS_CLUSTER_MODE_ENABLED ?? "0"),
390+
360391
DEFAULT_ENV_EXECUTION_CONCURRENCY_LIMIT: z.coerce.number().int().default(100),
361392
DEFAULT_ENV_EXECUTION_CONCURRENCY_BURST_FACTOR: z.coerce.number().default(1.0),
362393
DEFAULT_ORG_EXECUTION_CONCURRENCY_LIMIT: z.coerce.number().int().default(300),

apps/webapp/app/services/realtime/runChangeNotifierInstance.server.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ const notifierEnabled = env.REALTIME_NOTIFIER_ENABLED === "1";
2121
function initializeRunChangeNotifier(): RunChangeNotifier {
2222
const notifier = new RunChangeNotifier({
2323
redis: {
24-
host: env.PUBSUB_REDIS_HOST,
25-
port: env.PUBSUB_REDIS_PORT,
26-
username: env.PUBSUB_REDIS_USERNAME,
27-
password: env.PUBSUB_REDIS_PASSWORD,
28-
tlsDisabled: env.PUBSUB_REDIS_TLS_DISABLED === "true",
29-
clusterMode: env.PUBSUB_REDIS_CLUSTER_MODE_ENABLED === "1",
24+
host: env.REALTIME_RUNS_PUBSUB_REDIS_HOST,
25+
port: env.REALTIME_RUNS_PUBSUB_REDIS_PORT,
26+
username: env.REALTIME_RUNS_PUBSUB_REDIS_USERNAME,
27+
password: env.REALTIME_RUNS_PUBSUB_REDIS_PASSWORD,
28+
tlsDisabled: env.REALTIME_RUNS_PUBSUB_REDIS_TLS_DISABLED === "true",
29+
clusterMode: env.REALTIME_RUNS_PUBSUB_REDIS_CLUSTER_MODE_ENABLED === "1",
3030
},
3131
});
3232

0 commit comments

Comments
 (0)