@effect/cluster 0.52.8 → 0.52.9

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.
@@ -33,14 +33,24 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
33
33
  const acquireLockConn = sql.onDialectOrElse({
34
34
  pg: () => Effect.fnUntraced(function* (scope) {
35
35
  const conn = yield* Effect.orDie(sql.reserve).pipe(Scope.extend(scope));
36
+ const pid = (yield* conn.executeValues("SELECT pg_backend_pid()", []))[0][0];
36
37
  yield* Scope.addFinalizerExit(scope, () => Effect.orDie(conn.executeRaw("SELECT pg_advisory_unlock_all()", [])));
37
- return conn;
38
- }),
38
+ return [conn, pid];
39
+ }, Effect.orDie),
39
40
  mysql: () => Effect.fnUntraced(function* (scope) {
40
41
  const conn = yield* Effect.orDie(sql.reserve).pipe(Scope.extend(scope));
42
+ // we need to get the connection id using IS_USED_LOCK to properly
43
+ // support vitess
44
+ let pid = undefined;
45
+ while (pid === undefined) {
46
+ const address = `cluster:pid:${Math.random() * Number.MAX_SAFE_INTEGER | 0}`;
47
+ const taken = (yield* conn.executeValues(`SELECT GET_LOCK('${address}', 10), IS_USED_LOCK('${address}')`, []))[0];
48
+ if (taken[0] === null) continue;
49
+ pid = taken[1];
50
+ }
41
51
  yield* Scope.addFinalizerExit(scope, () => Effect.orDie(conn.executeRaw("SELECT RELEASE_ALL_LOCKS()", [])));
42
- return conn;
43
- }),
52
+ return [conn, pid];
53
+ }, Effect.orDie),
44
54
  orElse: () => undefined
45
55
  });
46
56
  const lockConn = acquireLockConn && (yield* _resourceRef.ResourceRef.from(yield* Effect.scope, acquireLockConn));
@@ -186,19 +196,19 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
186
196
  const execWithLockConn = effect => {
187
197
  if (!lockConn) return effect;
188
198
  const [query, params] = effect.compile();
189
- return lockConn.await.pipe(Effect.flatMap(conn => conn.executeRaw(query, params)), Effect.onError(() => lockConn.unsafeRebuild()));
199
+ return lockConn.await.pipe(Effect.flatMap(([conn]) => conn.executeRaw(query, params)), Effect.onError(() => lockConn.unsafeRebuild()));
190
200
  };
191
201
  const execWithLockConnValues = effect => {
192
202
  if (!lockConn) return effect.values;
193
203
  const [query, params] = effect.compile();
194
- return lockConn.await.pipe(Effect.flatMap(conn => conn.executeValues(query, params)), Effect.onError(() => lockConn.unsafeRebuild()));
204
+ return lockConn.await.pipe(Effect.flatMap(([conn]) => conn.executeValues(query, params)), Effect.onError(() => lockConn.unsafeRebuild()));
195
205
  };
196
206
  const acquireLock = sql.onDialectOrElse({
197
207
  pg: () => Effect.fnUntraced(function* (_address, shardIds) {
198
- const conn = yield* lockConn.await;
208
+ const [conn, pid] = yield* lockConn.await;
199
209
  const acquiredShardIds = [];
200
210
  const toAcquire = new Map(shardIds.map(shardId => [lockNumbers.get(shardId), shardId]));
201
- const takenLocks = yield* conn.executeValues(`SELECT objid FROM pg_locks WHERE locktype = 'advisory' AND granted = true AND pid = pg_backend_pid() ORDER BY objid`, []);
211
+ const takenLocks = yield* conn.executeValues(`SELECT objid FROM pg_locks WHERE locktype = 'advisory' AND granted = true AND pid = ${pid} ORDER BY objid`, []);
202
212
  for (let i = 0; i < takenLocks.length; i++) {
203
213
  const lockNum = takenLocks[i][0];
204
214
  acquiredShardIds.push(lockNumbersReverse.get(lockNum));
@@ -217,12 +227,14 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
217
227
  return acquiredShardIds;
218
228
  }, Effect.onError(() => lockConn.unsafeRebuild())),
219
229
  mysql: () => Effect.fnUntraced(function* (_address, shardIds) {
220
- const conn = yield* lockConn.await;
221
- const takenLocks = (yield* conn.executeUnprepared(`SELECT ${allMySqlTakenLocks}`, [], undefined))[0];
230
+ const [conn, pid] = yield* lockConn.await;
231
+ const takenLocks = (yield* conn.executeValues(`SELECT ${allMySqlTakenLocks}`, []))[0];
222
232
  const acquiredShardIds = [];
223
233
  const toAcquire = [];
224
- for (const shardId in takenLocks) {
225
- if (takenLocks[shardId] === 1) {
234
+ for (let i = 0; i < shardIds.length; i++) {
235
+ const shardId = shardIds[i];
236
+ const lockTakenBy = takenLocks[shardIdsIndex.get(shardId)];
237
+ if (lockTakenBy === pid) {
226
238
  acquiredShardIds.push(shardId);
227
239
  } else if (shardIds.includes(shardId)) {
228
240
  toAcquire.push(shardId);
@@ -231,10 +243,10 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
231
243
  if (toAcquire.length === 0) {
232
244
  return acquiredShardIds;
233
245
  }
234
- const results = (yield* conn.executeUnprepared(`SELECT ${mysqlLocks(toAcquire)}`, [], undefined))[0];
235
- for (const shardId in results) {
236
- if (results[shardId] === 1) {
237
- acquiredShardIds.push(shardId);
246
+ const results = (yield* conn.executeValues(`SELECT ${mysqlLocks(toAcquire)}`, []))[0];
247
+ for (let i = 0; i < results.length; i++) {
248
+ if (results[i] === 1) {
249
+ acquiredShardIds.push(toAcquire[i]);
238
250
  }
239
251
  }
240
252
  return acquiredShardIds;
@@ -282,20 +294,25 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
282
294
  lockNumbersReverse.set(lockNum, shardId);
283
295
  }
284
296
  }
297
+ const shardIdsIndex = new Map();
285
298
  const lockNames = new Map();
286
299
  const lockNamesReverse = new Map();
287
- for (let i = 0; i < config.shardGroups.length; i++) {
288
- const group = config.shardGroups[i];
289
- for (let shard = 1; shard <= config.shardsPerGroup; shard++) {
290
- const shardId = ShardId.make(group, shard).toString();
291
- const lockName = `${prefix}.${shardId}`;
292
- lockNames.set(shardId, lockName);
293
- lockNamesReverse.set(lockName, shardId);
300
+ {
301
+ let index = 0;
302
+ for (let i = 0; i < config.shardGroups.length; i++) {
303
+ const group = config.shardGroups[i];
304
+ for (let shard = 1; shard <= config.shardsPerGroup; shard++) {
305
+ const shardId = ShardId.make(group, shard).toString();
306
+ const lockName = `${prefix}.${shardId}`;
307
+ shardIdsIndex.set(shardId, index++);
308
+ lockNames.set(shardId, lockName);
309
+ lockNamesReverse.set(lockName, shardId);
310
+ }
294
311
  }
295
312
  }
296
313
  const pgLocks = shardIdsMap => Array.from(shardIdsMap.entries(), ([lockNum, shardId]) => `pg_try_advisory_lock(${lockNum}) AS "${shardId}"`).join(", ");
297
314
  const mysqlLocks = shardIds => shardIds.map(shardId => `GET_LOCK('${lockNames.get(shardId)}', 0) AS "${shardId}"`).join(", ");
298
- const allMySqlTakenLocks = Array.from(lockNames.entries(), ([shardId, lockName]) => `IS_USED_LOCK('${lockName}') = CONNECTION_ID() AS "${shardId}"`).join(", ");
315
+ const allMySqlTakenLocks = Array.from(lockNames.entries(), ([shardId, lockName]) => `IS_USED_LOCK('${lockName}') AS "${shardId}"`).join(", ");
299
316
  const acquiredLocks = (address, shardIds) => sql`
300
317
  SELECT shard_id FROM ${sql(locksTable)}
301
318
  WHERE address = ${address}
@@ -335,21 +352,21 @@ const make = exports.make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
335
352
  pg: () => Effect.fnUntraced(function* (_address, shardId) {
336
353
  const lockNum = lockNumbers.get(shardId);
337
354
  for (let i = 0; i < 5; i++) {
338
- const conn = yield* lockConn.await;
355
+ const [conn] = yield* lockConn.await;
339
356
  yield* conn.executeRaw(`SELECT pg_advisory_unlock(${lockNum})`, []);
340
357
  const takenLocks = yield* conn.executeValues(`SELECT 1 FROM pg_locks WHERE locktype = 'advisory' AND granted = true AND pid = pg_backend_pid() AND objid = ${lockNum}`, []);
341
358
  if (takenLocks.length === 0) return;
342
359
  }
343
- const conn = yield* lockConn.await;
360
+ const [conn] = yield* lockConn.await;
344
361
  yield* conn.executeRaw(`SELECT pg_advisory_unlock_all()`, []);
345
362
  }, Effect.onError(() => lockConn.unsafeRebuild()), Effect.asVoid, _ClusterError.PersistenceError.refail),
346
363
  mysql: () => Effect.fnUntraced(function* (_address, shardId) {
347
364
  const lockName = lockNames.get(shardId);
348
365
  while (true) {
349
- const conn = yield* lockConn.await;
366
+ const [conn, pid] = yield* lockConn.await;
350
367
  yield* conn.executeRaw(`SELECT RELEASE_LOCK('${lockName}')`, []);
351
- const takenLocks = yield* conn.executeValues(`SELECT IS_USED_LOCK('${lockName}') = CONNECTION_ID() AS is_taken`, []);
352
- if (takenLocks.length === 0 || takenLocks[0][0] !== 1) return;
368
+ const takenLocks = yield* conn.executeValues(`SELECT IS_USED_LOCK('${lockName}')`, []);
369
+ if (takenLocks.length === 0 || takenLocks[0][0] !== pid) return;
353
370
  }
354
371
  }, Effect.onError(() => lockConn.unsafeRebuild()), Effect.asVoid, _ClusterError.PersistenceError.refail),
355
372
  orElse: () => (address, shardId) => sql`DELETE FROM ${locksTableSql} WHERE address = ${address} AND shard_id = ${shardId}`.pipe(_ClusterError.PersistenceError.refail)
@@ -1 +1 @@
1
- {"version":3,"file":"SqlRunnerStorage.js","names":["SqlClient","_interopRequireWildcard","require","Arr","Duration","Effect","Layer","Scope","_ClusterError","_resourceRef","RunnerStorage","ShardId","ShardingConfig","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","withTracerDisabled","withTracerEnabled","make","exports","fnUntraced","options","config","sql","withoutTransforms","prefix","table","name","acquireLockConn","onDialectOrElse","pg","scope","conn","orDie","reserve","pipe","extend","addFinalizerExit","executeRaw","mysql","orElse","undefined","lockConn","ResourceRef","from","runnersTable","runnersTableSql","hasOldTables","isSuccess","ignore","mssql","locksTable","locksTableSql","void","sqlNowString","sqlNow","literal","expiresSeconds","Math","ceil","toSeconds","shardLockExpiration","toString","lockExpiresAt","encodeBoolean","b","sqlite","insertRunner","address","runner","healthy","values","unprepared","map","results","machine_id","execWithLockConn","effect","query","params","compile","await","flatMap","onError","unsafeRebuild","execWithLockConnValues","executeValues","acquireLock","_address","shardIds","acquiredShardIds","toAcquire","Map","shardId","lockNumbers","takenLocks","length","lockNum","push","lockNumbersReverse","delete","size","rows","executeUnprepared","pgLocks","allMySqlTakenLocks","includes","mysqlLocks","stringLiteral","csv","andThen","acquiredLocks","withTransaction","shardGroups","group","base","shard","shardsPerGroup","lockNames","lockNamesReverse","lockName","shardIdsMap","Array","entries","join","stringLiteralArr","row","wrapString","s","arr","refreshShards","makeEncoded","getRunners","PersistenceError","refail","String","Boolean","register","Number","unregister","asVoid","setRunnerHealth","acquire","refresh","as","release","releaseAll","layer","scoped","layerWith"],"sources":["../../src/SqlRunnerStorage.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SqlRunnerStorage.js","names":["SqlClient","_interopRequireWildcard","require","Arr","Duration","Effect","Layer","Scope","_ClusterError","_resourceRef","RunnerStorage","ShardId","ShardingConfig","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","withTracerDisabled","withTracerEnabled","make","exports","fnUntraced","options","config","sql","withoutTransforms","prefix","table","name","acquireLockConn","onDialectOrElse","pg","scope","conn","orDie","reserve","pipe","extend","pid","executeValues","addFinalizerExit","executeRaw","mysql","undefined","address","Math","random","Number","MAX_SAFE_INTEGER","taken","orElse","lockConn","ResourceRef","from","runnersTable","runnersTableSql","hasOldTables","isSuccess","ignore","mssql","locksTable","locksTableSql","void","sqlNowString","sqlNow","literal","expiresSeconds","ceil","toSeconds","shardLockExpiration","toString","lockExpiresAt","encodeBoolean","b","sqlite","insertRunner","runner","healthy","values","unprepared","map","results","machine_id","execWithLockConn","effect","query","params","compile","await","flatMap","onError","unsafeRebuild","execWithLockConnValues","acquireLock","_address","shardIds","acquiredShardIds","toAcquire","Map","shardId","lockNumbers","takenLocks","length","lockNum","push","lockNumbersReverse","delete","size","rows","executeUnprepared","pgLocks","allMySqlTakenLocks","lockTakenBy","shardIdsIndex","includes","mysqlLocks","stringLiteral","csv","andThen","acquiredLocks","withTransaction","shardGroups","group","base","shard","shardsPerGroup","lockNames","lockNamesReverse","index","lockName","shardIdsMap","Array","entries","join","stringLiteralArr","row","wrapString","s","arr","refreshShards","makeEncoded","getRunners","PersistenceError","refail","String","Boolean","register","unregister","asVoid","setRunnerHealth","acquire","refresh","as","release","releaseAll","layer","scoped","layerWith"],"sources":["../../src/SqlRunnerStorage.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"SqlRunnerStorage.d.ts","sourceRoot":"","sources":["../../src/SqlRunnerStorage.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAA;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAIpD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAIrD;;;GAGG;AACH,eAAO,MAAM,IAAI;sBACG,MAAM,GAAG,SAAS;;;;;;;;;;+EA4ehB,CAAA;AAEtB;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAC7B,aAAa,CAAC,aAAa,EAC3B,QAAQ,EACR,SAAS,CAAC,SAAS,GAAG,cAAc,CAAC,cAAc,CACE,CAAA;AAEvD;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,SAAS;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC,KAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC,SAAS,GAAG,cAAc,CAAC,cAAc,CAChD,CAAA"}
1
+ {"version":3,"file":"SqlRunnerStorage.d.ts","sourceRoot":"","sources":["../../src/SqlRunnerStorage.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAA;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAIpD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AACnD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AACvC,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAIrD;;;GAGG;AACH,eAAO,MAAM,IAAI;sBACG,MAAM,GAAG,SAAS;;;;;;;;;;+EA0fhB,CAAA;AAEtB;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAC7B,aAAa,CAAC,aAAa,EAC3B,QAAQ,EACR,SAAS,CAAC,SAAS,GAAG,cAAc,CAAC,cAAc,CACE,CAAA;AAEvD;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,SAAS;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CACrC,KAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC,SAAS,GAAG,cAAc,CAAC,cAAc,CAChD,CAAA"}
@@ -25,14 +25,24 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
25
25
  const acquireLockConn = sql.onDialectOrElse({
26
26
  pg: () => Effect.fnUntraced(function* (scope) {
27
27
  const conn = yield* Effect.orDie(sql.reserve).pipe(Scope.extend(scope));
28
+ const pid = (yield* conn.executeValues("SELECT pg_backend_pid()", []))[0][0];
28
29
  yield* Scope.addFinalizerExit(scope, () => Effect.orDie(conn.executeRaw("SELECT pg_advisory_unlock_all()", [])));
29
- return conn;
30
- }),
30
+ return [conn, pid];
31
+ }, Effect.orDie),
31
32
  mysql: () => Effect.fnUntraced(function* (scope) {
32
33
  const conn = yield* Effect.orDie(sql.reserve).pipe(Scope.extend(scope));
34
+ // we need to get the connection id using IS_USED_LOCK to properly
35
+ // support vitess
36
+ let pid = undefined;
37
+ while (pid === undefined) {
38
+ const address = `cluster:pid:${Math.random() * Number.MAX_SAFE_INTEGER | 0}`;
39
+ const taken = (yield* conn.executeValues(`SELECT GET_LOCK('${address}', 10), IS_USED_LOCK('${address}')`, []))[0];
40
+ if (taken[0] === null) continue;
41
+ pid = taken[1];
42
+ }
33
43
  yield* Scope.addFinalizerExit(scope, () => Effect.orDie(conn.executeRaw("SELECT RELEASE_ALL_LOCKS()", [])));
34
- return conn;
35
- }),
44
+ return [conn, pid];
45
+ }, Effect.orDie),
36
46
  orElse: () => undefined
37
47
  });
38
48
  const lockConn = acquireLockConn && (yield* ResourceRef.from(yield* Effect.scope, acquireLockConn));
@@ -178,19 +188,19 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
178
188
  const execWithLockConn = effect => {
179
189
  if (!lockConn) return effect;
180
190
  const [query, params] = effect.compile();
181
- return lockConn.await.pipe(Effect.flatMap(conn => conn.executeRaw(query, params)), Effect.onError(() => lockConn.unsafeRebuild()));
191
+ return lockConn.await.pipe(Effect.flatMap(([conn]) => conn.executeRaw(query, params)), Effect.onError(() => lockConn.unsafeRebuild()));
182
192
  };
183
193
  const execWithLockConnValues = effect => {
184
194
  if (!lockConn) return effect.values;
185
195
  const [query, params] = effect.compile();
186
- return lockConn.await.pipe(Effect.flatMap(conn => conn.executeValues(query, params)), Effect.onError(() => lockConn.unsafeRebuild()));
196
+ return lockConn.await.pipe(Effect.flatMap(([conn]) => conn.executeValues(query, params)), Effect.onError(() => lockConn.unsafeRebuild()));
187
197
  };
188
198
  const acquireLock = sql.onDialectOrElse({
189
199
  pg: () => Effect.fnUntraced(function* (_address, shardIds) {
190
- const conn = yield* lockConn.await;
200
+ const [conn, pid] = yield* lockConn.await;
191
201
  const acquiredShardIds = [];
192
202
  const toAcquire = new Map(shardIds.map(shardId => [lockNumbers.get(shardId), shardId]));
193
- const takenLocks = yield* conn.executeValues(`SELECT objid FROM pg_locks WHERE locktype = 'advisory' AND granted = true AND pid = pg_backend_pid() ORDER BY objid`, []);
203
+ const takenLocks = yield* conn.executeValues(`SELECT objid FROM pg_locks WHERE locktype = 'advisory' AND granted = true AND pid = ${pid} ORDER BY objid`, []);
194
204
  for (let i = 0; i < takenLocks.length; i++) {
195
205
  const lockNum = takenLocks[i][0];
196
206
  acquiredShardIds.push(lockNumbersReverse.get(lockNum));
@@ -209,12 +219,14 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
209
219
  return acquiredShardIds;
210
220
  }, Effect.onError(() => lockConn.unsafeRebuild())),
211
221
  mysql: () => Effect.fnUntraced(function* (_address, shardIds) {
212
- const conn = yield* lockConn.await;
213
- const takenLocks = (yield* conn.executeUnprepared(`SELECT ${allMySqlTakenLocks}`, [], undefined))[0];
222
+ const [conn, pid] = yield* lockConn.await;
223
+ const takenLocks = (yield* conn.executeValues(`SELECT ${allMySqlTakenLocks}`, []))[0];
214
224
  const acquiredShardIds = [];
215
225
  const toAcquire = [];
216
- for (const shardId in takenLocks) {
217
- if (takenLocks[shardId] === 1) {
226
+ for (let i = 0; i < shardIds.length; i++) {
227
+ const shardId = shardIds[i];
228
+ const lockTakenBy = takenLocks[shardIdsIndex.get(shardId)];
229
+ if (lockTakenBy === pid) {
218
230
  acquiredShardIds.push(shardId);
219
231
  } else if (shardIds.includes(shardId)) {
220
232
  toAcquire.push(shardId);
@@ -223,10 +235,10 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
223
235
  if (toAcquire.length === 0) {
224
236
  return acquiredShardIds;
225
237
  }
226
- const results = (yield* conn.executeUnprepared(`SELECT ${mysqlLocks(toAcquire)}`, [], undefined))[0];
227
- for (const shardId in results) {
228
- if (results[shardId] === 1) {
229
- acquiredShardIds.push(shardId);
238
+ const results = (yield* conn.executeValues(`SELECT ${mysqlLocks(toAcquire)}`, []))[0];
239
+ for (let i = 0; i < results.length; i++) {
240
+ if (results[i] === 1) {
241
+ acquiredShardIds.push(toAcquire[i]);
230
242
  }
231
243
  }
232
244
  return acquiredShardIds;
@@ -274,20 +286,25 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
274
286
  lockNumbersReverse.set(lockNum, shardId);
275
287
  }
276
288
  }
289
+ const shardIdsIndex = new Map();
277
290
  const lockNames = new Map();
278
291
  const lockNamesReverse = new Map();
279
- for (let i = 0; i < config.shardGroups.length; i++) {
280
- const group = config.shardGroups[i];
281
- for (let shard = 1; shard <= config.shardsPerGroup; shard++) {
282
- const shardId = ShardId.make(group, shard).toString();
283
- const lockName = `${prefix}.${shardId}`;
284
- lockNames.set(shardId, lockName);
285
- lockNamesReverse.set(lockName, shardId);
292
+ {
293
+ let index = 0;
294
+ for (let i = 0; i < config.shardGroups.length; i++) {
295
+ const group = config.shardGroups[i];
296
+ for (let shard = 1; shard <= config.shardsPerGroup; shard++) {
297
+ const shardId = ShardId.make(group, shard).toString();
298
+ const lockName = `${prefix}.${shardId}`;
299
+ shardIdsIndex.set(shardId, index++);
300
+ lockNames.set(shardId, lockName);
301
+ lockNamesReverse.set(lockName, shardId);
302
+ }
286
303
  }
287
304
  }
288
305
  const pgLocks = shardIdsMap => Array.from(shardIdsMap.entries(), ([lockNum, shardId]) => `pg_try_advisory_lock(${lockNum}) AS "${shardId}"`).join(", ");
289
306
  const mysqlLocks = shardIds => shardIds.map(shardId => `GET_LOCK('${lockNames.get(shardId)}', 0) AS "${shardId}"`).join(", ");
290
- const allMySqlTakenLocks = Array.from(lockNames.entries(), ([shardId, lockName]) => `IS_USED_LOCK('${lockName}') = CONNECTION_ID() AS "${shardId}"`).join(", ");
307
+ const allMySqlTakenLocks = Array.from(lockNames.entries(), ([shardId, lockName]) => `IS_USED_LOCK('${lockName}') AS "${shardId}"`).join(", ");
291
308
  const acquiredLocks = (address, shardIds) => sql`
292
309
  SELECT shard_id FROM ${sql(locksTable)}
293
310
  WHERE address = ${address}
@@ -327,21 +344,21 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
327
344
  pg: () => Effect.fnUntraced(function* (_address, shardId) {
328
345
  const lockNum = lockNumbers.get(shardId);
329
346
  for (let i = 0; i < 5; i++) {
330
- const conn = yield* lockConn.await;
347
+ const [conn] = yield* lockConn.await;
331
348
  yield* conn.executeRaw(`SELECT pg_advisory_unlock(${lockNum})`, []);
332
349
  const takenLocks = yield* conn.executeValues(`SELECT 1 FROM pg_locks WHERE locktype = 'advisory' AND granted = true AND pid = pg_backend_pid() AND objid = ${lockNum}`, []);
333
350
  if (takenLocks.length === 0) return;
334
351
  }
335
- const conn = yield* lockConn.await;
352
+ const [conn] = yield* lockConn.await;
336
353
  yield* conn.executeRaw(`SELECT pg_advisory_unlock_all()`, []);
337
354
  }, Effect.onError(() => lockConn.unsafeRebuild()), Effect.asVoid, PersistenceError.refail),
338
355
  mysql: () => Effect.fnUntraced(function* (_address, shardId) {
339
356
  const lockName = lockNames.get(shardId);
340
357
  while (true) {
341
- const conn = yield* lockConn.await;
358
+ const [conn, pid] = yield* lockConn.await;
342
359
  yield* conn.executeRaw(`SELECT RELEASE_LOCK('${lockName}')`, []);
343
- const takenLocks = yield* conn.executeValues(`SELECT IS_USED_LOCK('${lockName}') = CONNECTION_ID() AS is_taken`, []);
344
- if (takenLocks.length === 0 || takenLocks[0][0] !== 1) return;
360
+ const takenLocks = yield* conn.executeValues(`SELECT IS_USED_LOCK('${lockName}')`, []);
361
+ if (takenLocks.length === 0 || takenLocks[0][0] !== pid) return;
345
362
  }
346
363
  }, Effect.onError(() => lockConn.unsafeRebuild()), Effect.asVoid, PersistenceError.refail),
347
364
  orElse: () => (address, shardId) => sql`DELETE FROM ${locksTableSql} WHERE address = ${address} AND shard_id = ${shardId}`.pipe(PersistenceError.refail)
@@ -1 +1 @@
1
- {"version":3,"file":"SqlRunnerStorage.js","names":["SqlClient","Arr","Duration","Effect","Layer","Scope","PersistenceError","ResourceRef","RunnerStorage","ShardId","ShardingConfig","withTracerDisabled","withTracerEnabled","make","fnUntraced","options","config","sql","withoutTransforms","prefix","table","name","acquireLockConn","onDialectOrElse","pg","scope","conn","orDie","reserve","pipe","extend","addFinalizerExit","executeRaw","mysql","orElse","undefined","lockConn","from","runnersTable","runnersTableSql","hasOldTables","isSuccess","ignore","mssql","locksTable","locksTableSql","void","sqlNowString","sqlNow","literal","expiresSeconds","Math","ceil","toSeconds","shardLockExpiration","toString","lockExpiresAt","encodeBoolean","b","sqlite","insertRunner","address","runner","healthy","values","unprepared","map","results","machine_id","execWithLockConn","effect","query","params","compile","await","flatMap","onError","unsafeRebuild","execWithLockConnValues","executeValues","acquireLock","_address","shardIds","acquiredShardIds","toAcquire","Map","shardId","lockNumbers","get","takenLocks","i","length","lockNum","push","lockNumbersReverse","delete","size","rows","executeUnprepared","pgLocks","allMySqlTakenLocks","includes","mysqlLocks","stringLiteral","csv","andThen","acquiredLocks","withTransaction","shardGroups","group","base","shard","shardsPerGroup","set","lockNames","lockNamesReverse","lockName","shardIdsMap","Array","entries","join","stringLiteralArr","row","wrapString","s","arr","refreshShards","makeEncoded","getRunners","refail","String","Boolean","register","Number","unregister","asVoid","setRunnerHealth","acquire","refresh","as","release","releaseAll","layer","scoped","layerWith"],"sources":["../../src/SqlRunnerStorage.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SqlRunnerStorage.js","names":["SqlClient","Arr","Duration","Effect","Layer","Scope","PersistenceError","ResourceRef","RunnerStorage","ShardId","ShardingConfig","withTracerDisabled","withTracerEnabled","make","fnUntraced","options","config","sql","withoutTransforms","prefix","table","name","acquireLockConn","onDialectOrElse","pg","scope","conn","orDie","reserve","pipe","extend","pid","executeValues","addFinalizerExit","executeRaw","mysql","undefined","address","Math","random","Number","MAX_SAFE_INTEGER","taken","orElse","lockConn","from","runnersTable","runnersTableSql","hasOldTables","isSuccess","ignore","mssql","locksTable","locksTableSql","void","sqlNowString","sqlNow","literal","expiresSeconds","ceil","toSeconds","shardLockExpiration","toString","lockExpiresAt","encodeBoolean","b","sqlite","insertRunner","runner","healthy","values","unprepared","map","results","machine_id","execWithLockConn","effect","query","params","compile","await","flatMap","onError","unsafeRebuild","execWithLockConnValues","acquireLock","_address","shardIds","acquiredShardIds","toAcquire","Map","shardId","lockNumbers","get","takenLocks","i","length","lockNum","push","lockNumbersReverse","delete","size","rows","executeUnprepared","pgLocks","allMySqlTakenLocks","lockTakenBy","shardIdsIndex","includes","mysqlLocks","stringLiteral","csv","andThen","acquiredLocks","withTransaction","shardGroups","group","base","shard","shardsPerGroup","set","lockNames","lockNamesReverse","index","lockName","shardIdsMap","Array","entries","join","stringLiteralArr","row","wrapString","s","arr","refreshShards","makeEncoded","getRunners","refail","String","Boolean","register","unregister","asVoid","setRunnerHealth","acquire","refresh","as","release","releaseAll","layer","scoped","layerWith"],"sources":["../../src/SqlRunnerStorage.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/cluster",
3
- "version": "0.52.8",
3
+ "version": "0.52.9",
4
4
  "description": "Unified interfaces for common cluster-specific services",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -11,11 +11,11 @@
11
11
  "sideEffects": [],
12
12
  "homepage": "https://effect.website",
13
13
  "peerDependencies": {
14
- "@effect/platform": "^0.93.0",
15
14
  "@effect/rpc": "^0.72.1",
16
15
  "@effect/sql": "^0.48.0",
16
+ "effect": "^3.19.3",
17
17
  "@effect/workflow": "^0.12.2",
18
- "effect": "^3.19.3"
18
+ "@effect/platform": "^0.93.0"
19
19
  },
20
20
  "publishConfig": {
21
21
  "provenance": true
@@ -35,17 +35,30 @@ export const make = Effect.fnUntraced(function*(options: {
35
35
  const conn = yield* Effect.orDie(sql.reserve).pipe(
36
36
  Scope.extend(scope)
37
37
  )
38
+ const pid = (yield* conn.executeValues("SELECT pg_backend_pid()", []))[0][0] as number
38
39
  yield* Scope.addFinalizerExit(scope, () => Effect.orDie(conn.executeRaw("SELECT pg_advisory_unlock_all()", [])))
39
- return conn
40
- }),
40
+ return [conn, pid] as const
41
+ }, Effect.orDie),
41
42
  mysql: () =>
42
43
  Effect.fnUntraced(function*(scope: Scope.Scope) {
43
44
  const conn = yield* Effect.orDie(sql.reserve).pipe(
44
45
  Scope.extend(scope)
45
46
  )
47
+ // we need to get the connection id using IS_USED_LOCK to properly
48
+ // support vitess
49
+ let pid: number | undefined = undefined
50
+ while (pid === undefined) {
51
+ const address = `cluster:pid:${(Math.random() * Number.MAX_SAFE_INTEGER) | 0}`
52
+ const taken = (yield* conn.executeValues(
53
+ `SELECT GET_LOCK('${address}', 10), IS_USED_LOCK('${address}')`,
54
+ []
55
+ ))[0] as [1 | null, number]
56
+ if (taken[0] === null) continue
57
+ pid = taken[1]
58
+ }
46
59
  yield* Scope.addFinalizerExit(scope, () => Effect.orDie(conn.executeRaw("SELECT RELEASE_ALL_LOCKS()", [])))
47
- return conn
48
- }),
60
+ return [conn, pid] as const
61
+ }, Effect.orDie),
49
62
  orElse: () => undefined
50
63
  })
51
64
  const lockConn = acquireLockConn && (yield* ResourceRef.from(yield* Effect.scope, acquireLockConn))
@@ -215,7 +228,7 @@ export const make = Effect.fnUntraced(function*(options: {
215
228
  if (!lockConn) return effect
216
229
  const [query, params] = effect.compile()
217
230
  return lockConn.await.pipe(
218
- Effect.flatMap((conn) => conn.executeRaw(query, params)),
231
+ Effect.flatMap(([conn]) => conn.executeRaw(query, params)),
219
232
  Effect.onError(() => lockConn.unsafeRebuild())
220
233
  )
221
234
  }
@@ -225,7 +238,7 @@ export const make = Effect.fnUntraced(function*(options: {
225
238
  if (!lockConn) return effect.values
226
239
  const [query, params] = effect.compile()
227
240
  return lockConn.await.pipe(
228
- Effect.flatMap((conn) => conn.executeValues(query, params)),
241
+ Effect.flatMap(([conn]) => conn.executeValues(query, params)),
229
242
  Effect.onError(() => lockConn.unsafeRebuild())
230
243
  )
231
244
  }
@@ -233,11 +246,11 @@ export const make = Effect.fnUntraced(function*(options: {
233
246
  const acquireLock = sql.onDialectOrElse({
234
247
  pg: () =>
235
248
  Effect.fnUntraced(function*(_address: string, shardIds: ReadonlyArray<string>) {
236
- const conn = yield* lockConn!.await
249
+ const [conn, pid] = yield* lockConn!.await
237
250
  const acquiredShardIds: Array<string> = []
238
251
  const toAcquire = new Map(shardIds.map((shardId) => [lockNumbers.get(shardId)!, shardId]))
239
252
  const takenLocks = yield* conn.executeValues(
240
- `SELECT objid FROM pg_locks WHERE locktype = 'advisory' AND granted = true AND pid = pg_backend_pid() ORDER BY objid`,
253
+ `SELECT objid FROM pg_locks WHERE locktype = 'advisory' AND granted = true AND pid = ${pid} ORDER BY objid`,
241
254
  []
242
255
  )
243
256
  for (let i = 0; i < takenLocks.length; i++) {
@@ -260,15 +273,14 @@ export const make = Effect.fnUntraced(function*(options: {
260
273
 
261
274
  mysql: () =>
262
275
  Effect.fnUntraced(function*(_address: string, shardIds: ReadonlyArray<string>) {
263
- const conn = yield* lockConn!.await
264
- const takenLocks = (yield* conn.executeUnprepared(`SELECT ${allMySqlTakenLocks}`, [], undefined))[0] as Record<
265
- string,
266
- 1 | null
267
- >
276
+ const [conn, pid] = yield* lockConn!.await
277
+ const takenLocks = (yield* conn.executeValues(`SELECT ${allMySqlTakenLocks}`, []))[0] as Array<number | null>
268
278
  const acquiredShardIds: Array<string> = []
269
279
  const toAcquire: Array<string> = []
270
- for (const shardId in takenLocks) {
271
- if (takenLocks[shardId] === 1) {
280
+ for (let i = 0; i < shardIds.length; i++) {
281
+ const shardId = shardIds[i]
282
+ const lockTakenBy = takenLocks[shardIdsIndex.get(shardId)!]
283
+ if (lockTakenBy === pid) {
272
284
  acquiredShardIds.push(shardId)
273
285
  } else if (shardIds.includes(shardId)) {
274
286
  toAcquire.push(shardId)
@@ -277,13 +289,10 @@ export const make = Effect.fnUntraced(function*(options: {
277
289
  if (toAcquire.length === 0) {
278
290
  return acquiredShardIds
279
291
  }
280
- const results = (yield* conn.executeUnprepared(`SELECT ${mysqlLocks(toAcquire)}`, [], undefined))[0] as Record<
281
- string,
282
- number
283
- >
284
- for (const shardId in results) {
285
- if (results[shardId] === 1) {
286
- acquiredShardIds.push(shardId)
292
+ const results = (yield* conn.executeValues(`SELECT ${mysqlLocks(toAcquire)}`, []))[0] as Array<number>
293
+ for (let i = 0; i < results.length; i++) {
294
+ if (results[i] === 1) {
295
+ acquiredShardIds.push(toAcquire[i])
287
296
  }
288
297
  }
289
298
  return acquiredShardIds
@@ -341,15 +350,20 @@ export const make = Effect.fnUntraced(function*(options: {
341
350
  }
342
351
  }
343
352
 
353
+ const shardIdsIndex = new Map<string, number>()
344
354
  const lockNames = new Map<string, string>()
345
355
  const lockNamesReverse = new Map<string, string>()
346
- for (let i = 0; i < config.shardGroups.length; i++) {
347
- const group = config.shardGroups[i]
348
- for (let shard = 1; shard <= config.shardsPerGroup; shard++) {
349
- const shardId = ShardId.make(group, shard).toString()
350
- const lockName = `${prefix}.${shardId}`
351
- lockNames.set(shardId, lockName)
352
- lockNamesReverse.set(lockName, shardId)
356
+ {
357
+ let index = 0
358
+ for (let i = 0; i < config.shardGroups.length; i++) {
359
+ const group = config.shardGroups[i]
360
+ for (let shard = 1; shard <= config.shardsPerGroup; shard++) {
361
+ const shardId = ShardId.make(group, shard).toString()
362
+ const lockName = `${prefix}.${shardId}`
363
+ shardIdsIndex.set(shardId, index++)
364
+ lockNames.set(shardId, lockName)
365
+ lockNamesReverse.set(lockName, shardId)
366
+ }
353
367
  }
354
368
  }
355
369
 
@@ -364,7 +378,7 @@ export const make = Effect.fnUntraced(function*(options: {
364
378
 
365
379
  const allMySqlTakenLocks = Array.from(
366
380
  lockNames.entries(),
367
- ([shardId, lockName]) => `IS_USED_LOCK('${lockName}') = CONNECTION_ID() AS "${shardId}"`
381
+ ([shardId, lockName]) => `IS_USED_LOCK('${lockName}') AS "${shardId}"`
368
382
  ).join(", ")
369
383
 
370
384
  const acquiredLocks = (address: string, shardIds: ReadonlyArray<string>) =>
@@ -453,7 +467,7 @@ export const make = Effect.fnUntraced(function*(options: {
453
467
  function*(_address, shardId) {
454
468
  const lockNum = lockNumbers.get(shardId)!
455
469
  for (let i = 0; i < 5; i++) {
456
- const conn = yield* lockConn!.await
470
+ const [conn] = yield* lockConn!.await
457
471
  yield* conn.executeRaw(`SELECT pg_advisory_unlock(${lockNum})`, [])
458
472
  const takenLocks = yield* conn.executeValues(
459
473
  `SELECT 1 FROM pg_locks WHERE locktype = 'advisory' AND granted = true AND pid = pg_backend_pid() AND objid = ${lockNum}`,
@@ -461,7 +475,7 @@ export const make = Effect.fnUntraced(function*(options: {
461
475
  )
462
476
  if (takenLocks.length === 0) return
463
477
  }
464
- const conn = yield* lockConn!.await
478
+ const [conn] = yield* lockConn!.await
465
479
  yield* conn.executeRaw(`SELECT pg_advisory_unlock_all()`, [])
466
480
  },
467
481
  Effect.onError(() => lockConn!.unsafeRebuild()),
@@ -473,13 +487,13 @@ export const make = Effect.fnUntraced(function*(options: {
473
487
  function*(_address, shardId) {
474
488
  const lockName = lockNames.get(shardId)!
475
489
  while (true) {
476
- const conn = yield* lockConn!.await
490
+ const [conn, pid] = yield* lockConn!.await
477
491
  yield* conn.executeRaw(`SELECT RELEASE_LOCK('${lockName}')`, [])
478
492
  const takenLocks = yield* conn.executeValues(
479
- `SELECT IS_USED_LOCK('${lockName}') = CONNECTION_ID() AS is_taken`,
493
+ `SELECT IS_USED_LOCK('${lockName}')`,
480
494
  []
481
495
  )
482
- if (takenLocks.length === 0 || takenLocks[0][0] !== 1) return
496
+ if (takenLocks.length === 0 || takenLocks[0][0] !== pid) return
483
497
  }
484
498
  },
485
499
  Effect.onError(() => lockConn!.unsafeRebuild()),