Multi-node scheduler coordination via Redis.
Config shape matches queue/cache redis pattern (sibling blocks under scheduler):
"scheduler": {
"coordination": { "driver": "none"|"redis", "strategy": "tick"|"leader", ... },
"redis": { "url"|"host"/"port"/..., "key_prefix": "gingee:scheduler:" }
}
Strategies:
-
tick (default): per app+job+fire-slot lock so only one node runs each occurrence.
- leader: global leader lease; only the leader runs any scheduled job.
Fail-closed when Redis is required but unavailable (skip fire; log + metric).
Engine-internal — not for sandboxed require.- Description:
- Multi-node scheduler coordination via Redis.
Config shape matches queue/cache redis pattern (sibling blocks under scheduler):
"scheduler": {
"coordination": { "driver": "none"|"redis", "strategy": "tick"|"leader", ... },
"redis": { "url"|"host"/"port"/..., "key_prefix": "gingee:scheduler:" }
}
Strategies:
-
tick(default): per app+job+fire-slot lock so only one node runs each occurrence. -leader: global leader lease; only the leader runs any scheduled job. Fail-closed when Redis is required but unavailable (skip fire; log + metric). Engine-internal — not for sandboxed require.
- Multi-node scheduler coordination via Redis.
Config shape matches queue/cache redis pattern (sibling blocks under scheduler):
"scheduler": {
"coordination": { "driver": "none"|"redis", "strategy": "tick"|"leader", ... },
"redis": { "url"|"host"/"port"/..., "key_prefix": "gingee:scheduler:" }
}
Strategies:
-
Classes
Members
(inner, constant) REDIS_DEFAULTS
- Description:
- Redis connection defaults — same field names as queue.redis / cache redis.
Redis connection defaults — same field names as queue.redis / cache redis.
Methods
(inner) computeFireSlot(runtime, granularityMs, nowOverrideopt) → {string}
- Description:
- Compute a fire slot id for tick locks. Prefers planned fire time from croner currentRun(); else wall clock bucketed.
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
runtime |
object | null | scheduler job runtime (optional cronJob) | |
granularityMs |
number | ||
nowOverride |
Date | number | null |
<optional> |
tests |
Returns:
- Type
- string
(inner) createRedisClient(redisCfg, logger) → {object}
- Description:
- Build an ioredis client the same way as queue_drivers/redis.js.
Parameters:
| Name | Type | Description |
|---|---|---|
redisCfg |
object | normalized redis block |
logger |
object |
Returns:
ioredis client
- Type
- object
(inner) leaderKey(prefix) → {string}
Parameters:
| Name | Type | Description |
|---|---|---|
prefix |
string |
Returns:
- Type
- string
(inner) normalizeCoordination(schedulerOrCoord, redisOverrideopt) → {Object}
- Description:
- Normalize coordination + redis from a full scheduler config object. Accepts legacy shapes for one release: - coordination.mode → coordination.driver - coordination.redis → scheduler.redis (merged under top-level redis)
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
schedulerOrCoord |
object | null | undefined | Full `scheduler` section preferred; also accepts a bare coordination object plus optional second arg (tests). | |
redisOverride |
object | null | undefined |
<optional> |
Returns:
- Type
- Object
(inner) normalizeRedis(raw) → {object}
- Description:
- Normalize redis connection object (queue/cache field set).
Parameters:
| Name | Type | Description |
|---|---|---|
raw |
object | null | undefined |
Returns:
- Type
- object
(inner) tickLockKey(prefix, appName, jobName, slot) → {string}
Parameters:
| Name | Type | Description |
|---|---|---|
prefix |
string | |
appName |
string | |
jobName |
string | |
slot |
string |
Returns:
- Type
- string