scheduler_coordination

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.

Classes

RedisCoordinator

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