@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 =
|
|
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.
|
|
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 (
|
|
225
|
-
|
|
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.
|
|
235
|
-
for (
|
|
236
|
-
if (results[
|
|
237
|
-
acquiredShardIds.push(
|
|
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
|
-
|
|
288
|
-
|
|
289
|
-
for (let
|
|
290
|
-
const
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
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}')
|
|
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}')
|
|
352
|
-
if (takenLocks.length === 0 || takenLocks[0][0] !==
|
|
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;;;;;;;;;;+
|
|
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 =
|
|
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.
|
|
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 (
|
|
217
|
-
|
|
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.
|
|
227
|
-
for (
|
|
228
|
-
if (results[
|
|
229
|
-
acquiredShardIds.push(
|
|
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
|
-
|
|
280
|
-
|
|
281
|
-
for (let
|
|
282
|
-
const
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
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}')
|
|
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}')
|
|
344
|
-
if (takenLocks.length === 0 || takenLocks[0][0] !==
|
|
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.
|
|
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": "^
|
|
18
|
+
"@effect/platform": "^0.93.0"
|
|
19
19
|
},
|
|
20
20
|
"publishConfig": {
|
|
21
21
|
"provenance": true
|
package/src/SqlRunnerStorage.ts
CHANGED
|
@@ -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 =
|
|
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.
|
|
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 (
|
|
271
|
-
|
|
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.
|
|
281
|
-
|
|
282
|
-
|
|
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
|
-
|
|
347
|
-
|
|
348
|
-
for (let
|
|
349
|
-
const
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
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}')
|
|
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}')
|
|
493
|
+
`SELECT IS_USED_LOCK('${lockName}')`,
|
|
480
494
|
[]
|
|
481
495
|
)
|
|
482
|
-
if (takenLocks.length === 0 || takenLocks[0][0] !==
|
|
496
|
+
if (takenLocks.length === 0 || takenLocks[0][0] !== pid) return
|
|
483
497
|
}
|
|
484
498
|
},
|
|
485
499
|
Effect.onError(() => lockConn!.unsafeRebuild()),
|