@effect-app/infra 4.0.0-beta.263 → 4.0.0-beta.265
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.
- package/CHANGELOG.md +32 -0
- package/dist/ClusterCosmos.d.ts +1 -1
- package/dist/ClusterCosmos.d.ts.map +1 -1
- package/dist/ClusterCosmos.js +158 -126
- package/dist/WorkflowEngineCosmos.d.ts.map +1 -1
- package/dist/WorkflowEngineCosmos.js +58 -37
- package/dist/WorkflowEngineSqlite.js +11 -11
- package/package.json +5 -5
- package/run.sh +7 -1
- package/src/ClusterCosmos.ts +300 -196
- package/src/WorkflowEngineCosmos.ts +70 -40
- package/src/WorkflowEngineSqlite.ts +10 -10
- package/test/cluster-cosmos.test.ts +25 -3
- package/test/cluster-sqlite.test.ts +2 -4
- package/test/dist/cluster-azure-sql.test.d.ts.map +1 -0
- package/test/dist/cluster-storage-parity-sqlite.test.d.ts.map +1 -0
- package/test/workflow-engine-cosmos.test.ts +13 -22
- package/test/workflow-engine-sqlite.test.ts +2 -4
package/dist/ClusterCosmos.js
CHANGED
|
@@ -205,13 +205,7 @@ const replyFromDoc = (doc) => doc.kind === "WithExit"
|
|
|
205
205
|
sequence: doc.sequence ?? 0
|
|
206
206
|
};
|
|
207
207
|
const shardIdFromString = (shardId) => ShardId.fromStringEncoded(shardId);
|
|
208
|
-
const
|
|
209
|
-
let hash = 0;
|
|
210
|
-
for (let i = 0; i < address.length; i++) {
|
|
211
|
-
hash = Math.imul(31, hash) + address.charCodeAt(i) | 0;
|
|
212
|
-
}
|
|
213
|
-
return Math.abs(hash);
|
|
214
|
-
};
|
|
208
|
+
const machineIdCounterDocId = cosmosId("machine-id-counter");
|
|
215
209
|
const createContainer = (prefix) => Effect.fnUntraced(function* () {
|
|
216
210
|
const { db } = yield* CosmosClient;
|
|
217
211
|
const containerId = `${prefix}cluster`;
|
|
@@ -239,47 +233,34 @@ export const makeMessageStorage = Effect.fnUntraced(function* (options) {
|
|
|
239
233
|
? Effect.succeed(Option.none())
|
|
240
234
|
: queryReplies("SELECT * FROM c WHERE c.type = 'reply' AND c.rowid = @id", [{ name: "@id", value: replyId }])
|
|
241
235
|
.pipe(Effect.map((docs) => Option.map(Option.fromNullishOr(docs[0]), replyFromDoc)));
|
|
242
|
-
const markReplyAcked = (requestId, replyId) => Effect
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
accessCondition: { type: "IfMatch", condition: doc._etag ?? "" }
|
|
250
|
-
}))
|
|
251
|
-
.pipe(Effect.tap(annotateItem), Effect.asVoid);
|
|
252
|
-
}), Effect.catchIf(isNotFound, () => Effect.void), Effect.catchIf(isPreconditionFailed, () => Effect.void));
|
|
253
|
-
const replaceMessage = (doc) => Effect
|
|
254
|
-
.tryPromise(() => container.item(doc.id, doc._partitionKey).replace(doc, {
|
|
255
|
-
accessCondition: { type: "IfMatch", condition: doc._etag ?? "" }
|
|
256
|
-
}))
|
|
236
|
+
const markReplyAcked = (requestId, replyId) => Effect
|
|
237
|
+
.tryPromise(() => container.item(cosmosId(replyId), replyPartition(requestId)).patch([
|
|
238
|
+
{ op: "set", path: "/acked", value: true }
|
|
239
|
+
]))
|
|
240
|
+
.pipe(Effect.tap(annotateItem), Effect.asVoid, Effect.catchIf(isNotFound, () => Effect.void), Effect.catchIf(isPreconditionFailed, () => Effect.void));
|
|
241
|
+
const claimMessageRead = (doc, now) => Effect
|
|
242
|
+
.tryPromise(() => container.item(doc.id, doc._partitionKey).patch([{ op: "set", path: "/lastRead", value: now }], { accessCondition: { type: "IfMatch", condition: doc._etag ?? "" } }))
|
|
257
243
|
.pipe(Effect.tap(annotateItem), Effect.as(true), Effect.catchIf(isPreconditionFailed, () => Effect.succeed(false)));
|
|
258
|
-
const
|
|
259
|
-
const operations = chunk.map(
|
|
260
|
-
operationType: "Patch",
|
|
261
|
-
id: doc.id,
|
|
262
|
-
resourceBody: [{ op: "set", path: "/processed", value: true }]
|
|
263
|
-
}));
|
|
244
|
+
const batchDocs = (docs, operation, fallback) => Effect.forEach(Arr.groupByT(docs, (doc) => doc._partitionKey), ([partitionKey, partitionDocs]) => Effect.forEach(Arr.chunksOf(partitionDocs, maxCosmosBatchOperations), (chunk) => {
|
|
245
|
+
const operations = chunk.map(operation);
|
|
264
246
|
return Effect
|
|
265
247
|
.tryPromise(() => container.items.batch(operations, partitionKey))
|
|
266
248
|
.pipe(Effect.tap(annotateItem), Effect.flatMap((resp) => {
|
|
267
249
|
const failed = resp.result?.find((result) => !isSuccessfulStatus(result.statusCode));
|
|
268
|
-
return failed === undefined
|
|
269
|
-
|
|
270
|
-
: Effect.fail(new Error(`cluster cosmos ack batch failed: ${failed.statusCode}`));
|
|
271
|
-
}));
|
|
250
|
+
return failed === undefined ? Effect.void : Effect.fail(failed.statusCode);
|
|
251
|
+
}), Effect.catchIf(() => true, () => Effect.forEach(chunk, fallback, { discard: true })));
|
|
272
252
|
}, { discard: true }), { discard: true });
|
|
273
|
-
const
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
253
|
+
const patchDoc = (doc, resourceBody) => Effect.tryPromise(() => container.item(doc.id, doc._partitionKey).patch(resourceBody)).pipe(Effect.tap(annotateItem), Effect.asVoid, Effect.catchIf(isNotFound, () => Effect.void));
|
|
254
|
+
const patchDocs = (docs, resourceBody) => batchDocs(docs, (doc) => ({
|
|
255
|
+
operationType: "Patch",
|
|
256
|
+
id: doc.id,
|
|
257
|
+
resourceBody: resourceBody(doc)
|
|
258
|
+
}), (doc) => patchDoc(doc, resourceBody(doc)));
|
|
259
|
+
const deleteDoc = (doc) => Effect.tryPromise(() => container.item(doc.id, doc._partitionKey).delete()).pipe(Effect.tap(annotateItem), Effect.asVoid, Effect.catchIf(isNotFound, () => Effect.void));
|
|
260
|
+
const deleteDocs = (docs) => batchDocs(docs, (doc) => ({
|
|
261
|
+
operationType: "Delete",
|
|
262
|
+
id: doc.id
|
|
263
|
+
}), deleteDoc);
|
|
283
264
|
return yield* MessageStorage.makeEncoded({
|
|
284
265
|
saveEnvelope: ({ deliverAt, envelope, primaryKey }) => Effect
|
|
285
266
|
.gen(function* () {
|
|
@@ -287,7 +268,7 @@ export const makeMessageStorage = Effect.fnUntraced(function* (options) {
|
|
|
287
268
|
if (envelope._tag === "AckChunk") {
|
|
288
269
|
yield* markReplyAcked(envelope.requestId, envelope.replyId);
|
|
289
270
|
const pendingAcks = yield* queryMessages("SELECT * FROM c WHERE c.type = 'message' AND c.kind = 'AckChunk' AND c.processed = false AND c.requestId = @requestId", [{ name: "@requestId", value: envelope.requestId }]);
|
|
290
|
-
yield*
|
|
271
|
+
yield* patchDocs(pendingAcks, () => [{ op: "set", path: "/processed", value: true }]);
|
|
291
272
|
}
|
|
292
273
|
return yield* Effect.tryPromise(() => container.items.create(doc)).pipe(Effect.tap(annotateItem), Effect.as(SaveResultEncoded.Success()), Effect.catchIf(isConflict, () => readMessage(doc.id, doc._partitionKey).pipe(Effect.flatMap((found) => Option.match(found, {
|
|
293
274
|
onNone: () => Effect.succeed(SaveResultEncoded.Success()),
|
|
@@ -303,18 +284,15 @@ export const makeMessageStorage = Effect.fnUntraced(function* (options) {
|
|
|
303
284
|
const doc = replyToDoc(reply);
|
|
304
285
|
yield* Effect.tryPromise(() => container.items.create(doc)).pipe(Effect.tap(annotateItem), Effect.catchIf(isConflict, () => Effect.void));
|
|
305
286
|
const messages = yield* queryMessages("SELECT * FROM c WHERE c.type = 'message' AND c.requestId = @requestId", [{ name: "@requestId", value: reply.requestId }]);
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
return true;
|
|
316
|
-
});
|
|
317
|
-
}, { discard: true });
|
|
287
|
+
const updatedMessages = reply._tag === "WithExit"
|
|
288
|
+
? messages
|
|
289
|
+
: messages.filter((message) => message.id === reply.requestId || message.kind === "Request");
|
|
290
|
+
yield* patchDocs(updatedMessages, () => reply._tag === "WithExit"
|
|
291
|
+
? [
|
|
292
|
+
{ op: "set", path: "/processed", value: true },
|
|
293
|
+
{ op: "set", path: "/lastReplyId", value: reply.id }
|
|
294
|
+
]
|
|
295
|
+
: [{ op: "set", path: "/lastReplyId", value: reply.id }]);
|
|
318
296
|
})
|
|
319
297
|
.pipe(annotate("saveReply"), refailPersistence, withTracerDisabled),
|
|
320
298
|
clearReplies: (requestId) => Effect
|
|
@@ -323,19 +301,14 @@ export const makeMessageStorage = Effect.fnUntraced(function* (options) {
|
|
|
323
301
|
const replies = yield* queryReplies("SELECT * FROM c WHERE c.type = 'reply' AND c.requestId = @requestId AND c.kind = 'WithExit'", [
|
|
324
302
|
{ name: "@requestId", value: id }
|
|
325
303
|
]);
|
|
326
|
-
yield*
|
|
327
|
-
.tryPromise(() => container.item(reply.id, reply._partitionKey).delete())
|
|
328
|
-
.pipe(Effect.tap(annotateItem), Effect.catchIf(isNotFound, () => Effect.void)), { discard: true });
|
|
304
|
+
yield* deleteDocs(replies);
|
|
329
305
|
const messages = yield* queryMessages("SELECT * FROM c WHERE c.type = 'message' AND c.requestId = @requestId", [{ name: "@requestId", value: id }]);
|
|
330
|
-
yield*
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
message.lastRead = null;
|
|
337
|
-
return replaceMessage(message).pipe(Effect.asVoid);
|
|
338
|
-
}, { discard: true });
|
|
306
|
+
yield* deleteDocs(messages.filter((message) => message.kind === "Interrupt"));
|
|
307
|
+
yield* patchDocs(messages.filter((message) => message.kind !== "Interrupt"), () => [
|
|
308
|
+
{ op: "set", path: "/processed", value: false },
|
|
309
|
+
{ op: "set", path: "/lastReplyId", value: null },
|
|
310
|
+
{ op: "set", path: "/lastRead", value: null }
|
|
311
|
+
]);
|
|
339
312
|
})
|
|
340
313
|
.pipe(annotate("clearReplies"), refailPersistence, withTracerDisabled),
|
|
341
314
|
requestIdForPrimaryKey: (primaryKey) => queryMessages("SELECT * FROM c WHERE c.type = 'message' AND c.messageId = @primaryKey", [
|
|
@@ -351,60 +324,76 @@ export const makeMessageStorage = Effect.fnUntraced(function* (options) {
|
|
|
351
324
|
{ name: "@lastReadBefore", value: now - tenMinutes },
|
|
352
325
|
{ name: "@now", value: now }
|
|
353
326
|
])
|
|
354
|
-
.pipe(Effect.flatMap((docs) => collectUnprocessed(docs, now,
|
|
327
|
+
.pipe(Effect.flatMap((docs) => collectUnprocessed(docs, now, claimMessageRead, queryReplies)), annotate("unprocessedMessages"), refailPersistence, withTracerDisabled),
|
|
355
328
|
unprocessedMessagesById: (messageIds, now) => queryMessages("SELECT * FROM c WHERE c.type = 'message' AND (ARRAY_CONTAINS(@messageIds, c.id) OR ARRAY_CONTAINS(@messageIds, c.requestId)) AND c.processed = false AND (NOT IS_DEFINED(c.deliverAt) OR IS_NULL(c.deliverAt) OR c.deliverAt <= @now) ORDER BY c.rowid", [
|
|
356
329
|
{ name: "@messageIds", value: Array.from(messageIds, String) },
|
|
357
330
|
{ name: "@now", value: now }
|
|
358
331
|
])
|
|
359
|
-
.pipe(Effect.flatMap((docs) =>
|
|
332
|
+
.pipe(Effect.flatMap((docs) => collectUnprocessedById(docs, queryReplies)), annotate("unprocessedMessagesById"), refailPersistence, withTracerDisabled),
|
|
360
333
|
resetAddress: (address) => queryMessages("SELECT * FROM c WHERE c.type = 'message' AND c.processed = false AND c.shardId = @shardId AND c.entityType = @entityType AND c.entityId = @entityId", [
|
|
361
334
|
{ name: "@shardId", value: ShardId.toString(address.shardId) },
|
|
362
335
|
{ name: "@entityType", value: address.entityType },
|
|
363
336
|
{ name: "@entityId", value: address.entityId }
|
|
364
337
|
])
|
|
365
|
-
.pipe(Effect.flatMap((docs) =>
|
|
366
|
-
doc.lastRead = null;
|
|
367
|
-
return replaceMessage(doc).pipe(Effect.asVoid);
|
|
368
|
-
}, { discard: true })), annotate("resetAddress"), refailPersistence, withTracerDisabled),
|
|
338
|
+
.pipe(Effect.flatMap((docs) => patchDocs(docs, () => [{ op: "set", path: "/lastRead", value: null }])), annotate("resetAddress"), refailPersistence, withTracerDisabled),
|
|
369
339
|
clearAddress: (address) => queryMessages("SELECT * FROM c WHERE c.type = 'message' AND c.entityType = @entityType AND c.entityId = @entityId", [
|
|
370
340
|
{ name: "@entityType", value: address.entityType },
|
|
371
341
|
{ name: "@entityId", value: address.entityId }
|
|
372
342
|
])
|
|
373
|
-
.pipe(Effect.flatMap((messages) =>
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
.pipe(Effect
|
|
381
|
-
.flatMap((replies) => Effect
|
|
382
|
-
.forEach(replies, (reply) => Effect
|
|
383
|
-
.tryPromise(() => container.item(reply.id, reply._partitionKey).delete())
|
|
384
|
-
.pipe(Effect.tap(annotateItem), Effect.catchIf(isNotFound, () => Effect.void)), { discard: true })), Effect.andThen(Effect.tryPromise(() => container.item(message.id, message._partitionKey).delete()).pipe(Effect.tap(annotateItem), Effect.catchIf(isNotFound, () => Effect.void)))), { discard: true })), annotate("clearAddress"), refailPersistence, withTracerDisabled),
|
|
343
|
+
.pipe(Effect.flatMap((messages) => {
|
|
344
|
+
if (!Arr.isArrayNonEmpty(messages))
|
|
345
|
+
return Effect.void;
|
|
346
|
+
const requestIds = Array.from(new Set(messages.map((message) => message.requestId)));
|
|
347
|
+
return queryReplies("SELECT * FROM c WHERE c.type = 'reply' AND ARRAY_CONTAINS(@requestIds, c.requestId)", [{ name: "@requestIds", value: requestIds }])
|
|
348
|
+
.pipe(Effect.flatMap((replies) => deleteDocs(replies)), Effect.andThen(deleteDocs(messages)));
|
|
349
|
+
}), annotate("clearAddress"), refailPersistence, withTracerDisabled),
|
|
385
350
|
resetShards: (shardIds) => queryMessages("SELECT * FROM c WHERE c.type = 'message' AND c.processed = false AND ARRAY_CONTAINS(@shardIds, c.shardId)", [{ name: "@shardIds", value: Array.from(shardIds) }])
|
|
386
|
-
.pipe(Effect.flatMap((docs) =>
|
|
387
|
-
doc.lastRead = null;
|
|
388
|
-
return replaceMessage(doc).pipe(Effect.asVoid);
|
|
389
|
-
}, { discard: true })), annotate("resetShards"), refailPersistence, withTracerDisabled),
|
|
351
|
+
.pipe(Effect.flatMap((docs) => patchDocs(docs, () => [{ op: "set", path: "/lastRead", value: null }])), annotate("resetShards"), refailPersistence, withTracerDisabled),
|
|
390
352
|
withTransaction: (effect) => effect
|
|
391
353
|
});
|
|
392
354
|
});
|
|
393
|
-
const collectUnprocessed = (docs, now,
|
|
355
|
+
const collectUnprocessed = (docs, now, claimMessageRead, queryReplies) => Effect.gen(function* () {
|
|
394
356
|
const messages = [];
|
|
357
|
+
const activeRequestIds = yield* activeReplyRequestIds(docs, queryReplies);
|
|
358
|
+
const lastReplies = yield* lastRepliesById(docs, activeRequestIds, queryReplies);
|
|
395
359
|
for (const doc of docs) {
|
|
396
|
-
|
|
397
|
-
if (Arr.isArrayNonEmpty(replies))
|
|
360
|
+
if (activeRequestIds.has(doc.requestId))
|
|
398
361
|
continue;
|
|
399
|
-
const sentReply =
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
messages.push(envelopeFromDoc(doc, sentReply));
|
|
362
|
+
const sentReply = Option.fromNullishOr(doc.lastReplyId === null ? undefined : lastReplies.get(doc.lastReplyId));
|
|
363
|
+
const claimed = yield* claimMessageRead(doc, now);
|
|
364
|
+
if (claimed) {
|
|
365
|
+
messages.push(envelopeFromDoc({ ...doc, lastRead: now }, sentReply));
|
|
404
366
|
}
|
|
405
367
|
}
|
|
406
368
|
return messages;
|
|
407
369
|
});
|
|
370
|
+
const collectUnprocessedById = (docs, queryReplies) => Effect.gen(function* () {
|
|
371
|
+
const messages = [];
|
|
372
|
+
const activeRequestIds = yield* activeReplyRequestIds(docs, queryReplies);
|
|
373
|
+
const lastReplies = yield* lastRepliesById(docs, activeRequestIds, queryReplies);
|
|
374
|
+
for (const doc of docs) {
|
|
375
|
+
if (activeRequestIds.has(doc.requestId))
|
|
376
|
+
continue;
|
|
377
|
+
const sentReply = Option.fromNullishOr(doc.lastReplyId === null ? undefined : lastReplies.get(doc.lastReplyId));
|
|
378
|
+
messages.push(envelopeFromDoc(doc, sentReply));
|
|
379
|
+
}
|
|
380
|
+
return messages;
|
|
381
|
+
});
|
|
382
|
+
const activeReplyRequestIds = (docs, queryReplies) => {
|
|
383
|
+
const requestIds = Array.from(new Set(docs.map((doc) => doc.requestId)));
|
|
384
|
+
if (!Arr.isArrayNonEmpty(requestIds))
|
|
385
|
+
return Effect.succeed(new Set());
|
|
386
|
+
return queryReplies("SELECT * FROM c WHERE c.type = 'reply' AND ARRAY_CONTAINS(@requestIds, c.requestId) AND (c.kind = 'WithExit' OR (c.kind = 'Chunk' AND c.acked = false))", [{ name: "@requestIds", value: requestIds }])
|
|
387
|
+
.pipe(Effect.map((replies) => new Set(replies.map((reply) => reply.requestId))));
|
|
388
|
+
};
|
|
389
|
+
const lastRepliesById = (docs, activeRequestIds, queryReplies) => {
|
|
390
|
+
const replyIds = Array.from(new Set(docs
|
|
391
|
+
.flatMap((doc) => activeRequestIds.has(doc.requestId) || doc.lastReplyId === null ? [] : [doc.lastReplyId])));
|
|
392
|
+
if (!Arr.isArrayNonEmpty(replyIds))
|
|
393
|
+
return Effect.succeed(new Map());
|
|
394
|
+
return queryReplies("SELECT * FROM c WHERE c.type = 'reply' AND ARRAY_CONTAINS(@replyIds, c.rowid)", [{ name: "@replyIds", value: replyIds }])
|
|
395
|
+
.pipe(Effect.map((replies) => new Map(replies.map((reply) => [reply.rowid, replyFromDoc(reply)]))));
|
|
396
|
+
};
|
|
408
397
|
export const makeRunnerStorage = Effect.fnUntraced(function* (options) {
|
|
409
398
|
const prefix = options?.prefix ?? "cluster-";
|
|
410
399
|
const container = yield* createContainer(prefix)().pipe(Effect.orDie);
|
|
@@ -418,12 +407,42 @@ export const makeRunnerStorage = Effect.fnUntraced(function* (options) {
|
|
|
418
407
|
.query({ query, parameters: Array.from(parameters) }, { partitionKey: "runner" })
|
|
419
408
|
.fetchAll())
|
|
420
409
|
.pipe(Effect.tap(annotateFeed), Effect.map((resp) => resp.resources));
|
|
410
|
+
const deleteRunner = (doc) => Effect
|
|
411
|
+
.tryPromise(() => container.item(doc.id, "runner").delete({
|
|
412
|
+
accessCondition: { type: "IfMatch", condition: doc._etag ?? "" }
|
|
413
|
+
}))
|
|
414
|
+
.pipe(Effect.tap(annotateItem), Effect.asVoid, Effect.catchIf(isNotFound, () => Effect.void), Effect.catchIf(isPreconditionFailed, () => Effect.void));
|
|
415
|
+
const readRunner = (address) => Effect.tryPromise(() => container.item(runnerDocId(address), "runner").read()).pipe(Effect.tap(annotateItem), Effect.map((resp) => Option.fromNullishOr(resp.resource)), Effect.catchIf(isNotFound, () => Effect.succeed(Option.none())));
|
|
416
|
+
// Allocate a unique, monotonically increasing machine id via an atomic
|
|
417
|
+
// server-side `incr` on a single counter doc — mirrors SQL's auto-increment
|
|
418
|
+
// `machine_id` PK. A per-address string hash (the previous approach) could
|
|
419
|
+
// collide mod 1024 across distinct runners, yielding duplicate Snowflake ids.
|
|
420
|
+
// The counter doc is seeded at init below, so it always exists here.
|
|
421
|
+
const allocateMachineId = Effect
|
|
422
|
+
.tryPromise(() => container.item(machineIdCounterDocId, "runner").patch([
|
|
423
|
+
{ op: "incr", path: "/value", value: 1 }
|
|
424
|
+
]))
|
|
425
|
+
.pipe(Effect.tap(annotateItem), Effect.map((resp) => resp.resource.value));
|
|
426
|
+
// Seed the counter once (create-if-missing); a lost create race is fine.
|
|
427
|
+
yield* Effect
|
|
428
|
+
.tryPromise(() => container.items.create({
|
|
429
|
+
id: machineIdCounterDocId,
|
|
430
|
+
_partitionKey: "runner",
|
|
431
|
+
type: "machine-id-counter",
|
|
432
|
+
value: 0
|
|
433
|
+
}))
|
|
434
|
+
.pipe(Effect.catchIf(isConflict, () => Effect.void), Effect.orDie);
|
|
421
435
|
const readLock = (shardId) => Effect.tryPromise(() => container.item(lockDocId(shardId), "lock").read()).pipe(Effect.tap(annotateItem), Effect.map((resp) => Option.fromNullishOr(resp.resource)), Effect.catchIf(isNotFound, () => Effect.succeed(Option.none())));
|
|
422
436
|
const writeLock = (doc) => Effect
|
|
423
437
|
.tryPromise(() => container.item(doc.id, "lock").replace(doc, {
|
|
424
438
|
accessCondition: { type: "IfMatch", condition: doc._etag ?? "" }
|
|
425
439
|
}))
|
|
426
440
|
.pipe(Effect.tap(annotateItem), Effect.as(true), Effect.catchIf(isPreconditionFailed, () => Effect.succeed(false)));
|
|
441
|
+
const deleteLock = (doc) => Effect
|
|
442
|
+
.tryPromise(() => container.item(doc.id, "lock").delete({
|
|
443
|
+
accessCondition: { type: "IfMatch", condition: doc._etag ?? "" }
|
|
444
|
+
}))
|
|
445
|
+
.pipe(Effect.tap(annotateItem), Effect.asVoid, Effect.catchIf(isNotFound, () => Effect.void), Effect.catchIf(isPreconditionFailed, () => Effect.void));
|
|
427
446
|
const createLock = (address, shardId, now) => Effect
|
|
428
447
|
.tryPromise(() => container.items.create({
|
|
429
448
|
id: lockDocId(shardId),
|
|
@@ -449,36 +468,49 @@ export const makeRunnerStorage = Effect.fnUntraced(function* (options) {
|
|
|
449
468
|
getRunners: Effect.sync(() => Date.now()).pipe(Effect.flatMap((now) => queryRunners("SELECT * FROM c WHERE c.type = 'runner' AND c.lastHeartbeat > @expiresAt", [
|
|
450
469
|
{ name: "@expiresAt", value: now - expires }
|
|
451
470
|
])), Effect.map((docs) => docs.map((doc) => [doc.runner, doc.healthy])), annotate("getRunners"), refailPersistence, withTracerDisabled),
|
|
452
|
-
register: (address, runner, healthy) => Effect
|
|
453
|
-
.
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
+
register: (address, runner, healthy) => Effect
|
|
472
|
+
.gen(function* () {
|
|
473
|
+
const now = Date.now();
|
|
474
|
+
// Reuse a previously-allocated machine id for this address (stable per
|
|
475
|
+
// address, like SQL's RETURNING on conflict); allocate a fresh unique
|
|
476
|
+
// one on first registration.
|
|
477
|
+
const existing = yield* readRunner(address);
|
|
478
|
+
const machineId = Option.isSome(existing) && existing.value.machineId !== undefined
|
|
479
|
+
? existing.value.machineId
|
|
480
|
+
: yield* allocateMachineId;
|
|
481
|
+
yield* Effect
|
|
482
|
+
.tryPromise(() => container.items.upsert({
|
|
483
|
+
id: runnerDocId(address),
|
|
484
|
+
_partitionKey: "runner",
|
|
485
|
+
type: "runner",
|
|
486
|
+
address,
|
|
487
|
+
runner,
|
|
488
|
+
healthy,
|
|
489
|
+
lastHeartbeat: now,
|
|
490
|
+
machineId
|
|
491
|
+
}))
|
|
492
|
+
.pipe(Effect.tap(annotateItem));
|
|
493
|
+
return machineId;
|
|
494
|
+
})
|
|
495
|
+
.pipe(annotate("register"), refailPersistence, withTracerDisabled),
|
|
496
|
+
unregister: (address) => Effect.sync(() => Date.now()).pipe(Effect.flatMap((now) => queryRunners("SELECT * FROM c WHERE c.type = 'runner' AND (c.address = @address OR c.lastHeartbeat < @expiresAt)", [
|
|
497
|
+
{ name: "@address", value: address },
|
|
498
|
+
{ name: "@expiresAt", value: now - expires }
|
|
499
|
+
])), Effect.flatMap((docs) => Effect.forEach(docs, deleteRunner, { discard: true })), annotate("unregister"), refailPersistence, withTracerDisabled),
|
|
500
|
+
setRunnerHealth: (address, healthy) => Effect
|
|
501
|
+
.tryPromise(() => container.item(runnerDocId(address), "runner").patch([
|
|
502
|
+
{ op: "set", path: "/healthy", value: healthy }
|
|
503
|
+
]))
|
|
504
|
+
.pipe(Effect.tap(annotateItem), Effect.asVoid, Effect.catchIf(isNotFound, () => Effect.void), annotate("setRunnerHealth"), refailPersistence, withTracerDisabled),
|
|
471
505
|
acquire: (address, shardIds) => Effect.sync(() => Date.now()).pipe(Effect.flatMap((now) => Effect.forEach(shardIds, (shardId) => tryAcquire(address, shardId, now))), Effect.map(Arr.getSomes), annotate("acquire"), refailPersistence, withTracerDisabled),
|
|
472
506
|
refresh: (address, shardIds) => Effect
|
|
473
507
|
.gen(function* () {
|
|
474
508
|
const now = Date.now();
|
|
475
|
-
yield* Effect
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
return Effect.tryPromise(() => container.item(doc.id, "runner").replace(doc)).pipe(Effect.tap(annotateItem));
|
|
481
|
-
}), Effect.catchIf(isNotFound, () => Effect.void));
|
|
509
|
+
yield* Effect
|
|
510
|
+
.tryPromise(() => container.item(runnerDocId(address), "runner").patch([
|
|
511
|
+
{ op: "set", path: "/lastHeartbeat", value: now }
|
|
512
|
+
]))
|
|
513
|
+
.pipe(Effect.tap(annotateItem), Effect.asVoid, Effect.catchIf(isNotFound, () => Effect.void));
|
|
482
514
|
const refreshed = yield* Effect.forEach(shardIds, (shardId) => readLock(shardId).pipe(Effect.flatMap((lock) => Option.match(lock, {
|
|
483
515
|
onNone: () => Effect.succeed(Option.none()),
|
|
484
516
|
onSome: (doc) => {
|
|
@@ -494,7 +526,7 @@ export const makeRunnerStorage = Effect.fnUntraced(function* (options) {
|
|
|
494
526
|
release: (address, shardId) => readLock(shardId).pipe(Effect.flatMap((lock) => Option.match(lock, {
|
|
495
527
|
onNone: () => Effect.void,
|
|
496
528
|
onSome: (doc) => doc.address === address
|
|
497
|
-
?
|
|
529
|
+
? deleteLock(doc)
|
|
498
530
|
: Effect.void
|
|
499
531
|
})), annotate("release"), refailPersistence, withTracerDisabled),
|
|
500
532
|
releaseAll: (address) => Effect
|
|
@@ -505,11 +537,11 @@ export const makeRunnerStorage = Effect.fnUntraced(function* (options) {
|
|
|
505
537
|
parameters: [{ name: "@address", value: address }]
|
|
506
538
|
}, { partitionKey: "lock" })
|
|
507
539
|
.fetchAll())
|
|
508
|
-
.pipe(Effect.tap(annotateFeed), Effect.flatMap((resp) => Effect.forEach(resp.resources,
|
|
540
|
+
.pipe(Effect.tap(annotateFeed), Effect.flatMap((resp) => Effect.forEach(resp.resources, deleteLock, { discard: true })), annotate("releaseAll"), refailPersistence, withTracerDisabled)
|
|
509
541
|
});
|
|
510
542
|
});
|
|
511
543
|
export const layerMessageStorage = (options) => Layer.effect(MessageStorage.MessageStorage, makeMessageStorage(options)).pipe(Layer.provide(Snowflake.layerGenerator));
|
|
512
544
|
export const layerRunnerStorage = (options) => Layer.effect(RunnerStorage.RunnerStorage, makeRunnerStorage(options));
|
|
513
545
|
export const layerStorage = (options) => Layer.merge(layerMessageStorage(options), layerRunnerStorage(options));
|
|
514
546
|
export const layerCosmos = (config) => layerStorage({ prefix: config.prefix }).pipe(Layer.provide(CosmosClientLayer(Redacted.value(config.url), config.dbName)));
|
|
515
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2x1c3RlckNvc21vcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9DbHVzdGVyQ29zbW9zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxHQUFHLE1BQU0sa0JBQWtCLENBQUE7QUFDdkMsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssS0FBSyxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxLQUFLLEtBQUssTUFBTSxjQUFjLENBQUE7QUFDckMsT0FBTyxLQUFLLFFBQVEsTUFBTSxpQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssUUFBUSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBRXZFLE9BQU8sS0FBSyxjQUFjLE1BQU0sd0NBQXdDLENBQUE7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFFMUUsT0FBTyxLQUFLLGFBQWEsTUFBTSx1Q0FBdUMsQ0FBQTtBQUN0RSxPQUFPLEtBQUssT0FBTyxNQUFNLGlDQUFpQyxDQUFBO0FBQzFELE9BQU8sS0FBSyxjQUFjLE1BQU0sd0NBQXdDLENBQUE7QUFDeEUsT0FBTyxLQUFLLFNBQVMsTUFBTSxtQ0FBbUMsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQWdGOUQsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDMUQsTUFBTSxpQkFBaUIsR0FBRyxDQUFVLE1BQThCLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxN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
|
|
547
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2x1c3RlckNvc21vcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9DbHVzdGVyQ29zbW9zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxHQUFHLE1BQU0sa0JBQWtCLENBQUE7QUFDdkMsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssS0FBSyxNQUFNLGtCQUFrQixDQUFBO0FBQ3pDLE9BQU8sS0FBSyxNQUFNLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxLQUFLLEtBQUssTUFBTSxjQUFjLENBQUE7QUFDckMsT0FBTyxLQUFLLFFBQVEsTUFBTSxpQkFBaUIsQ0FBQTtBQUMzQyxPQUFPLEtBQUssUUFBUSxNQUFNLGlCQUFpQixDQUFBO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFBO0FBRXZFLE9BQU8sS0FBSyxjQUFjLE1BQU0sd0NBQXdDLENBQUE7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUE7QUFFMUUsT0FBTyxLQUFLLGFBQWEsTUFBTSx1Q0FBdUMsQ0FBQTtBQUN0RSxPQUFPLEtBQUssT0FBTyxNQUFNLGlDQUFpQyxDQUFBO0FBQzFELE9BQU8sS0FBSyxjQUFjLE1BQU0sd0NBQXdDLENBQUE7QUFDeEUsT0FBTyxLQUFLLFNBQVMsTUFBTSxtQ0FBbUMsQ0FBQTtBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQTJGOUQsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDMUQsTUFBTSxpQkFBaUIsR0FBRyxDQUFVLE1BQThCLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxN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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowEngineCosmos.d.ts","sourceRoot":"","sources":["../src/WorkflowEngineCosmos.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"WorkflowEngineCosmos.d.ts","sourceRoot":"","sources":["../src/WorkflowEngineCosmos.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAIzC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAI3C,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAI3C,OAAO,EAA4B,cAAc,EAAoB,MAAM,yCAAyC,CAAA;AAMpH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAA;IACrC,2DAA2D;IAC3D,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAA;IAC9C,yFAAyF;IACzF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAA;IAC7C,sFAAsF;IACtF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAA;IAC9C,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC3B;AAgqBD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,QAAS,0BAA0B,KAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAGR,CAAA"}
|