@baasix/baasix 0.1.52 → 0.1.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -182,10 +182,15 @@ export class PermissionService {
182
182
  // Clear all permissions caches
183
183
  await cache.invalidateModel("permissions");
184
184
  }
185
- // Cache permissions by role
185
+ // Group permissions by role in memory first
186
+ // This avoids N sequential Redis round-trips (one per permission record)
187
+ const rolePermissionsMap = new Map();
186
188
  for (const permission of permissions) {
187
- const cacheKey = `permissions:role:${permission.role_Id}`;
188
- const rolePermissions = (await cache.get(cacheKey)) || {};
189
+ const roleId = permission.role_Id;
190
+ if (!rolePermissionsMap.has(roleId)) {
191
+ rolePermissionsMap.set(roleId, {});
192
+ }
193
+ const rolePermissions = rolePermissionsMap.get(roleId);
189
194
  const collectionName = permission.collection;
190
195
  rolePermissions[collectionName] = rolePermissions[collectionName] || {};
191
196
  rolePermissions[collectionName][permission.action] = {
@@ -194,9 +199,15 @@ export class PermissionService {
194
199
  relConditions: permission.relConditions || {},
195
200
  defaultValues: permission.defaultValues || {},
196
201
  };
197
- // Use infinite TTL (-1) for permissions cache
198
- await cache.set(cacheKey, rolePermissions, -1);
199
202
  }
203
+ // Batch write all role permissions in a single Redis pipeline round-trip
204
+ // (N_roles writes instead of N_permissions, typically 6 vs hundreds)
205
+ const entries = [...rolePermissionsMap].map(([roleId, perms]) => ({
206
+ key: `permissions:role:${roleId}`,
207
+ value: perms,
208
+ expiresIn: -1,
209
+ }));
210
+ await cache.setBatch(entries);
200
211
  }
201
212
  catch (error) {
202
213
  console.error('Error loading permissions:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionService.js","sourceRoot":"","sources":["../../baasix/services/PermissionService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PermissionService.js","sourceRoot":"","sources":["../../baasix/services/PermissionService.ts"],"names":[],"mappings":"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"}
@@ -2,38 +2,69 @@ import type { BackgroundTask } from '../types/index.js';
2
2
  declare class TasksService {
3
3
  private cache;
4
4
  private cacheKey;
5
- private taskRunningKey;
6
5
  private refreshInterval;
7
6
  private refreshIntervalId;
8
7
  private initialized;
8
+ private shuttingDown;
9
+ private concurrency;
10
+ private runningCount;
11
+ private stallTimeout;
9
12
  private redisClient;
10
13
  private useTaskRedis;
11
14
  private instanceId;
12
15
  private lockRenewalInterval;
16
+ private hasInstanceLock;
17
+ private static readonly LOCK_KEY;
13
18
  private static readonly LOCK_TTL_SECONDS;
14
19
  private static readonly LOCK_RENEWAL_INTERVAL;
15
20
  init(): Promise<void>;
16
21
  ensureInitialized(): Promise<void>;
17
22
  refreshCache(): Promise<void>;
18
23
  getNotStartedTasks(): Promise<BackgroundTask[]>;
19
- setTaskRunning(isRunning: boolean): Promise<void>;
20
- isTaskRunning(): Promise<boolean>;
21
24
  /**
22
- * Try to acquire a distributed lock for task processing
23
- * This ensures only one instance processes tasks at a time
25
+ * Atomically claim a task for processing.
26
+ * Uses UPDATE ... WHERE task_status = 'Not started' to prevent duplicate processing.
27
+ * If another worker already claimed the task, returns null (0 rows updated).
24
28
  *
25
- * In multi-instance mode (TASK_REDIS_ENABLED=true):
26
- * Uses Redis SETNX for atomic lock acquisition
29
+ * @param taskId - The task ID to claim
30
+ * @returns The claimed task record, or null if already claimed/not found
31
+ */
32
+ claimTask(taskId: string | number): Promise<BackgroundTask | null>;
33
+ /**
34
+ * Recover tasks stuck in "Running" state beyond the stall timeout.
35
+ * - If retry_count < max_retries: resets to "Not started" for automatic retry
36
+ * - Otherwise: marks as "Error" with stall information
27
37
  *
28
- * In single-instance mode:
29
- * Falls back to cache-based locking
38
+ * Called during initialization and each periodic cache refresh.
39
+ */
40
+ recoverStalledTasks(): Promise<void>;
41
+ /**
42
+ * @deprecated Use tryAcquireLock()/releaseLock() for atomic task coordination.
43
+ * setTaskRunning(true) now delegates to tryAcquireLock() internally.
44
+ */
45
+ setTaskRunning(isRunning: boolean): Promise<void>;
46
+ /**
47
+ * Check if task processing is at capacity.
48
+ * Returns true when running task count >= configured TASK_CONCURRENCY.
49
+ * With default concurrency of 1, returns true if any task is running.
50
+ */
51
+ isTaskRunning(): Promise<boolean>;
52
+ /**
53
+ * Get the number of currently running tasks.
54
+ */
55
+ getRunningCount(): number;
56
+ /**
57
+ * Try to acquire a task processing slot.
58
+ * Respects TASK_CONCURRENCY — allows up to N concurrent tasks per instance.
59
+ * In multi-instance mode, only one instance can hold the processing lock at a time.
30
60
  *
31
- * @param lockTimeout - Lock expiration time in seconds (default: 60 seconds)
32
- * @returns True if lock acquired, false otherwise
61
+ * @param lockTimeout - Redis lock TTL in seconds (multi-instance only, default: 60s)
62
+ * @returns True if slot acquired, false if at capacity or lock held by another instance
33
63
  */
34
64
  tryAcquireLock(lockTimeout?: number): Promise<boolean>;
35
65
  /**
36
- * Start automatic lock renewal to prevent expiry during long-running tasks
66
+ * Start automatic lock renewal to prevent expiry during long-running tasks.
67
+ * Uses Lua script for atomic check-and-renew (prevents race between GET and EXPIRE).
37
68
  */
38
69
  private startLockRenewal;
39
70
  /**
@@ -41,16 +72,69 @@ declare class TasksService {
41
72
  */
42
73
  private stopLockRenewal;
43
74
  /**
44
- * Release the distributed lock
45
- * Only releases if the current instance owns the lock
46
- * @returns True if lock released, false otherwise
75
+ * Release a task processing slot.
76
+ * When all slots are released, the instance lock (Redis) is also released.
77
+ * @returns True if slot released, false otherwise
47
78
  */
48
79
  releaseLock(): Promise<boolean>;
80
+ /**
81
+ * In-memory set of job locks held by this instance (single-instance fallback).
82
+ */
83
+ private heldJobLocks;
84
+ /**
85
+ * Acquire a named distributed lock for a scheduled job.
86
+ * Prevents the same job from running on multiple instances simultaneously.
87
+ *
88
+ * - With Redis (`TASK_REDIS_ENABLED=true`): uses `SET NX EX` for cross-instance locking
89
+ * - Without Redis: uses in-memory set (prevents re-entry within same process)
90
+ *
91
+ * @param jobName - Unique job identifier (e.g., "attendance-cron", "cleanup-job")
92
+ * @param ttlSeconds - Lock TTL in seconds. Should be >= your job's max execution time.
93
+ * Lock auto-expires after this, so a crashed instance won't block forever.
94
+ * Default: 300 (5 minutes)
95
+ * @returns `true` if lock acquired, `false` if already held (by this or another instance)
96
+ *
97
+ * @example
98
+ * ```ts
99
+ * schedule.scheduleJob(everyFifteenMinutes, async () => {
100
+ * const locked = await tasksService.acquireJobLock("attendance-cron", 600);
101
+ * if (!locked) return; // another instance is running this job
102
+ * try {
103
+ * await AttendanceUtils.ProcessScheduleAttendance(...);
104
+ * } finally {
105
+ * await tasksService.releaseJobLock("attendance-cron");
106
+ * }
107
+ * });
108
+ * ```
109
+ */
110
+ acquireJobLock(jobName: string, ttlSeconds?: number): Promise<boolean>;
111
+ /**
112
+ * Release a named job lock.
113
+ * Only releases if this instance owns the lock (atomic check via Lua in Redis mode).
114
+ *
115
+ * @param jobName - The job name used in acquireJobLock()
116
+ * @returns `true` if released, `false` if not owned or error
117
+ */
118
+ releaseJobLock(jobName: string): Promise<boolean>;
49
119
  startPeriodicRefresh(): void;
50
120
  stopPeriodicRefresh(): void;
121
+ /**
122
+ * Add a task to the cached "not started" list without querying the DB.
123
+ * Only adds if the task is "Not started" and scheduled within 4 hours.
124
+ */
125
+ private addTaskToCache;
126
+ /**
127
+ * Remove a task from the cached "not started" list by ID without querying the DB.
128
+ */
129
+ private removeTaskFromCache;
130
+ /**
131
+ * Update a task in the cached "not started" list without querying the DB.
132
+ * Replaces the cached task object with the new document.
133
+ */
134
+ private updateTaskInCache;
51
135
  registerHooks(): void;
52
136
  /**
53
- * Wait for any running task to complete (with timeout)
137
+ * Wait for all running tasks to complete (with timeout)
54
138
  */
55
139
  waitForTaskCompletion(timeoutMs?: number): Promise<void>;
56
140
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"TasksService.d.ts","sourceRoot":"","sources":["../../baasix/services/TasksService.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,cAAM,YAAY;IAChB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,QAAQ,CAAsC;IACtD,OAAO,CAAC,cAAc,CAAuC;IAC7D,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,WAAW,CAAkB;IAGrC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,mBAAmB,CAA+B;IAC1D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAM;IAC9C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAEhD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmDrB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B7B,kBAAkB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAuB/C,cAAc,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAejD,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAgBvC;;;;;;;;;;;;OAYG;IACG,cAAc,CAAC,WAAW,GAAE,MAAsC,GAAG,OAAO,CAAC,OAAO,CAAC;IA+C3F;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuBxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IA4CrC,oBAAoB,IAAI,IAAI;IAc5B,mBAAmB,IAAI,IAAI;IAQ3B,aAAa,IAAI,IAAI;IAuBrB;;OAEG;IACG,qBAAqB,CAAC,SAAS,GAAE,MAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBrE;;OAEG;IACG,QAAQ,CAAC,SAAS,GAAE,MAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBxD;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CA0CpD;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,qBAAqB,EAAE,YAAY,GAAG,SAAS,CAAC;CACrD;AAOD,QAAA,MAAM,YAAY,cAAmC,CAAC;AAEtD,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"TasksService.d.ts","sourceRoot":"","sources":["../../baasix/services/TasksService.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,cAAM,YAAY;IAChB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,QAAQ,CAAsC;IACtD,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,WAAW,CAAkB;IAGrC,OAAO,CAAC,YAAY,CAAkB;IAGtC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,YAAY,CAAa;IAGjC,OAAO,CAAC,YAAY,CAAe;IAGnC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,mBAAmB,CAA+B;IAC1D,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IACtD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAM;IAC9C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAEhD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA0DrB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B7B,kBAAkB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IA4BrD;;;;;;;OAOG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAgDxE;;;;;;OAMG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmE1C;;;OAGG;IACG,cAAc,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBvD;;;;OAIG;IACG,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IAMvC;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;;;;;;OAOG;IACG,cAAc,CAAC,WAAW,GAAE,MAAsC,GAAG,OAAO,CAAC,OAAO,CAAC;IAgD3F;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAiCxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;;;OAIG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAiDrC;;OAEG;IACH,OAAO,CAAC,YAAY,CAA0B;IAE9C;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,GAAE,MAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IA4CjF;;;;;;OAMG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyCvD,oBAAoB,IAAI,IAAI;IAa5B,mBAAmB,IAAI,IAAI;IAU3B;;;OAGG;YACW,cAAc;IAyB5B;;OAEG;YACW,mBAAmB;IAiBjC;;;OAGG;YACW,iBAAiB;IAkB/B,aAAa,IAAI,IAAI;IA8CrB;;OAEG;IACG,qBAAqB,CAAC,SAAS,GAAE,MAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBrE;;OAEG;IACG,QAAQ,CAAC,SAAS,GAAE,MAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCxD;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAmDpD;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,qBAAqB,EAAE,YAAY,GAAG,SAAS,CAAC;CACrD;AAOD,QAAA,MAAM,YAAY,cAAmC,CAAC;AAEtD,eAAe,YAAY,CAAC"}