@wrenautomation/aerie 0.7.0 → 0.7.1
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/dist/bin.js +45 -8
- package/dist/bin.js.map +2 -2
- package/dist/coord/port.d.ts +11 -0
- package/dist/coord/postgres.d.ts +4 -0
- package/dist/coord/postgres.js +34 -6
- package/dist/coord/postgres.js.map +1 -1
- package/dist/peers-coord.js +68 -9
- package/dist/peers-coord.js.map +2 -2
- package/dist/schema.d.ts +17 -0
- package/dist/schema.js +2 -0
- package/dist/schema.js.map +1 -1
- package/drizzle/0010_coord_notify.sql +29 -0
- package/drizzle/meta/0010_snapshot.json +1781 -0
- package/drizzle/meta/_journal.json +7 -0
- package/package.json +1 -1
package/dist/coord/port.d.ts
CHANGED
|
@@ -34,7 +34,11 @@ export type QueueItem = {
|
|
|
34
34
|
lane: string | null;
|
|
35
35
|
pin: string | null;
|
|
36
36
|
pos: number;
|
|
37
|
+
/** the task's title; absent when the store does not hold the task */
|
|
38
|
+
title?: string;
|
|
37
39
|
};
|
|
40
|
+
/** what changed: the queue, or a lease (claim, renew, release) */
|
|
41
|
+
export type CoordChange = "queue" | "lease";
|
|
38
42
|
export interface CoordStore {
|
|
39
43
|
name: string;
|
|
40
44
|
/** true: the store also sets the task's status in the same transaction (Aerie); false: peers calls the board after */
|
|
@@ -87,17 +91,24 @@ export interface CoordStore {
|
|
|
87
91
|
* an unpinned one only by a holder serving its lane ('*' = all). Taken off the queue and claimed in one
|
|
88
92
|
* transaction. "Told" is the claim's, kept in peers' local claim file, never in the store.
|
|
89
93
|
* A `run:*` pin (D21) first puts its lapsed leases back at the queue head; `cap` = most live leases on it.
|
|
94
|
+
* `key`: the take's own id. A second take with the same holder and key returns the lease it made, while live
|
|
95
|
+
* (a replay after a timeout that committed).
|
|
90
96
|
*/
|
|
91
97
|
queueTake(o: {
|
|
92
98
|
lanes: string[] | "*";
|
|
93
99
|
pin?: string | null;
|
|
94
100
|
cap?: number;
|
|
101
|
+
key?: string;
|
|
95
102
|
}, holder: Holder, leaseMs: number): Promise<{
|
|
96
103
|
id: string;
|
|
97
104
|
gen: number;
|
|
98
105
|
} | null>;
|
|
99
106
|
/** true while `holder` still holds `id` at `gen`: before each board write and each commit trailer. */
|
|
100
107
|
fence(id: string, holder: Holder, gen: number): Promise<boolean>;
|
|
108
|
+
/** each queue or lease change on this backing, from any writer; holds a connection until `end` */
|
|
109
|
+
listen?(onChange: (what: CoordChange) => void): Promise<{
|
|
110
|
+
end(): Promise<void>;
|
|
111
|
+
}>;
|
|
101
112
|
/** end the connection (CLI exit) */
|
|
102
113
|
end?(): Promise<void>;
|
|
103
114
|
}
|
package/dist/coord/postgres.d.ts
CHANGED
|
@@ -14,5 +14,9 @@ export interface PgCoordOptions {
|
|
|
14
14
|
queued: string;
|
|
15
15
|
};
|
|
16
16
|
end?: () => Promise<void>;
|
|
17
|
+
/** LISTEN on a channel (a connection of its own); gives `listen` */
|
|
18
|
+
subscribe?: (channel: string, fn: (payload: string) => void) => Promise<() => Promise<void>>;
|
|
17
19
|
}
|
|
20
|
+
/** NOTIFY channel of the coord tables; payload `<queue|lease>:<ns>` (migration 0010) */
|
|
21
|
+
export declare const COORD_CHANNEL = "aerie_coord";
|
|
18
22
|
export declare function pgCoord(o: PgCoordOptions): CoordStore;
|
package/dist/coord/postgres.js
CHANGED
|
@@ -9,6 +9,8 @@ import { sql } from "drizzle-orm";
|
|
|
9
9
|
import { atomic } from "../db.js";
|
|
10
10
|
import * as s from "../schema.js";
|
|
11
11
|
import { aerieStore } from "../store.js";
|
|
12
|
+
/** NOTIFY channel of the coord tables; payload `<queue|lease>:<ns>` (migration 0010) */
|
|
13
|
+
export const COORD_CHANNEL = "aerie_coord";
|
|
12
14
|
/** rows from any drizzle pg driver (postgres-js: array; PGlite, node-postgres: { rows }) */
|
|
13
15
|
async function rows(q, query) {
|
|
14
16
|
const r = (await q.execute(query));
|
|
@@ -42,16 +44,17 @@ export function pgCoord(o) {
|
|
|
42
44
|
await aerieStore({ db: tx }).edit(id, { status: name }, by);
|
|
43
45
|
};
|
|
44
46
|
/** new lease, under the task lock */
|
|
45
|
-
const lease = async (tx, id, holder, leaseMs, queued) => {
|
|
47
|
+
const lease = async (tx, id, holder, leaseMs, queued, key) => {
|
|
46
48
|
const t = clock();
|
|
47
49
|
const others = await rows(tx, sql `select holder from ${L} where ns = ${ns} and task_id = ${id} and holder <> ${holder}
|
|
48
50
|
and expires >= ${t} order by gen`);
|
|
49
51
|
const [g] = await rows(tx, sql `select nextval('aerie.coord_gen')::float8 as gen`);
|
|
50
52
|
const gen = num(g?.gen);
|
|
51
53
|
await tx.execute(sql `
|
|
52
|
-
insert into ${L} (ns, task_id, holder, gen, expires, queued, lane, pin)
|
|
53
|
-
values (${ns}, ${id}, ${holder}, ${gen}, ${plus(t, leaseMs)}, ${!!queued}, ${queued?.lane ?? null}, ${queued?.pin ?? null})
|
|
54
|
+
insert into ${L} (ns, task_id, holder, gen, expires, queued, lane, pin, take_key)
|
|
55
|
+
values (${ns}, ${id}, ${holder}, ${gen}, ${plus(t, leaseMs)}, ${!!queued}, ${queued?.lane ?? null}, ${queued?.pin ?? null}, ${key ?? null})
|
|
54
56
|
on conflict (ns, task_id, holder) do update set gen = excluded.gen, expires = excluded.expires,
|
|
57
|
+
take_key = coalesce(excluded.take_key, ${L}.take_key),
|
|
55
58
|
queued = excluded.queued or ${L}.queued,
|
|
56
59
|
lane = case when excluded.queued then excluded.lane else ${L}.lane end,
|
|
57
60
|
pin = case when excluded.queued then excluded.pin else ${L}.pin end`);
|
|
@@ -96,7 +99,9 @@ export function pgCoord(o) {
|
|
|
96
99
|
return { last: true, closeNow: false, status: "ready" };
|
|
97
100
|
};
|
|
98
101
|
/** queue rows in order */
|
|
99
|
-
const queueRows = (q) => rows(q, sql `select task_id as id, lane, pin, pos from ${Q}
|
|
102
|
+
const queueRows = (q) => rows(q, sql `select q.task_id as id, q.lane, q.pin, q.pos, k.title from ${Q} q
|
|
103
|
+
left join ${s.task} k on k.id = upper(q.task_id)
|
|
104
|
+
where q.ns = ${ns} order by q.pos, q.task_id`);
|
|
100
105
|
const store = {
|
|
101
106
|
name: "aerie",
|
|
102
107
|
ownsStatus: !!o.status,
|
|
@@ -221,9 +226,22 @@ export function pgCoord(o) {
|
|
|
221
226
|
await lockQueue(tx);
|
|
222
227
|
await tx.execute(sql `delete from ${Q} where ns = ${ns} and task_id = any(${textArr(ids)})`);
|
|
223
228
|
}),
|
|
224
|
-
queueList: async () => (await queueRows(db)).map((i, pos) => ({
|
|
229
|
+
queueList: async () => (await queueRows(db)).map((i, pos) => ({
|
|
230
|
+
id: i.id,
|
|
231
|
+
lane: i.lane,
|
|
232
|
+
pin: i.pin,
|
|
233
|
+
pos,
|
|
234
|
+
...(i.title ? { title: i.title } : {}),
|
|
235
|
+
})),
|
|
225
236
|
queueTake: (x, holder, leaseMs) => atomic(db, async (tx) => {
|
|
226
237
|
await lockQueue(tx);
|
|
238
|
+
if (x.key) {
|
|
239
|
+
// a replay: the lease this take made, if still live
|
|
240
|
+
const [had] = await rows(tx, sql `select task_id as id, gen::float8 as gen from ${L} where ns = ${ns} and holder = ${holder}
|
|
241
|
+
and take_key = ${x.key} and expires >= ${clock()}`);
|
|
242
|
+
if (had)
|
|
243
|
+
return { id: had.id, gen: num(had.gen) };
|
|
244
|
+
}
|
|
227
245
|
// run lanes (D21): only workers hold them, and a live one renews at lease/3
|
|
228
246
|
if (x.pin?.startsWith("run:")) {
|
|
229
247
|
const t = clock();
|
|
@@ -257,7 +275,7 @@ export function pgCoord(o) {
|
|
|
257
275
|
return null;
|
|
258
276
|
await lockTasks(tx, [item.id]);
|
|
259
277
|
await tx.execute(sql `delete from ${Q} where ns = ${ns} and task_id = ${item.id}`);
|
|
260
|
-
const r = await lease(tx, item.id, holder, leaseMs, { lane: item.lane, pin: item.pin });
|
|
278
|
+
const r = await lease(tx, item.id, holder, leaseMs, { lane: item.lane, pin: item.pin }, x.key);
|
|
261
279
|
return { id: item.id, gen: r.gen };
|
|
262
280
|
}),
|
|
263
281
|
fence: async (id, holder, gen) => (await rows(db, sql `select 1 from ${L} where ns = ${ns} and task_id = ${id} and holder = ${holder}
|
|
@@ -266,6 +284,16 @@ export function pgCoord(o) {
|
|
|
266
284
|
await o.end?.();
|
|
267
285
|
},
|
|
268
286
|
};
|
|
287
|
+
const sub = o.subscribe;
|
|
288
|
+
if (sub)
|
|
289
|
+
store.listen = async (onChange) => {
|
|
290
|
+
const stop = await sub(COORD_CHANNEL, (payload) => {
|
|
291
|
+
const [what, ...rest] = payload.split(":");
|
|
292
|
+
if (rest.join(":") === ns && (what === "queue" || what === "lease"))
|
|
293
|
+
onChange(what);
|
|
294
|
+
});
|
|
295
|
+
return { end: stop };
|
|
296
|
+
};
|
|
269
297
|
return store;
|
|
270
298
|
}
|
|
271
299
|
//# sourceMappingURL=postgres.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/coord/postgres.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAY,GAAG,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAoC,MAAM,UAAU,CAAC;AACpE,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAiBzC,4FAA4F;AAC5F,KAAK,UAAU,IAAI,CAAU,CAAY,EAAE,KAAU;IACnD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAmC,CAAC;IACrE,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,CAAC;AAED,MAAM,EAAE,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,GAAG,CAAA,uBAAuB,CAAC,mBAAmB,CAAC;AACtE,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAA,gBAAgB,CAAC,kBAAkB,CAAC;AACjE,MAAM,GAAG,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,MAAM,OAAO,GAAG,CAAC,CAAW,EAAE,EAAE,CAAC,GAAG,CAAA,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;AAElG,MAAM,UAAU,OAAO,CAAC,CAAiB;IACvC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;IAChB,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC;IAC1B,MAAM,KAAK,GAAG,GAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA,OAAO,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,CAAC,CAAM,EAAE,EAAU,EAAE,EAAE,CAAC,GAAG,CAAA,IAAI,CAAC,MAAM,EAAE,sCAAsC,CAAC;IAC5F,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;IACvB,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;IACzB,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;IACtB,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;IAEvB,MAAM,SAAS,GAAG,CAAC,EAAM,EAAE,EAAE,CAC3B,EAAE,CAAC,OAAO,CACR,GAAG,CAAA,iDAAiD,eAAe,EAAE,QAAQ,OAAO,CACrF,CAAC;IACJ,MAAM,SAAS,GAAG,KAAK,EAAE,EAAM,EAAE,GAAa,EAAE,EAAE;QAChD,KAAK,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;YACvC,MAAM,EAAE,CAAC,OAAO,CACd,GAAG,CAAA,iDAAiD,eAAe,EAAE,SAAS,EAAE,EAAE,OAAO,CAC1F,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,EAAE,EAAM,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAE;QACrE,IAAI,CAAC,CAAC,CAAC,MAAM;YAAE,OAAO;QACtB,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,GAAG,GAAG,MAAM,IAAI,CACpB,EAAE,EACF,GAAG,CAAA,sBAAsB,CAAC,CAAC,IAAI,eAAe,EAAE,CAAC,WAAW,EAAE,EAAE,CACjE,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI;YAAE,OAAO,CAAC,+CAA+C;QAC9F,MAAM,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC;IAEF,qCAAqC;IACrC,MAAM,KAAK,GAAG,KAAK,EACjB,EAAM,EACN,EAAU,EACV,MAAc,EACd,OAAe,EACf,MAAoD,EACpD,EAAE;QACF,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CACvB,EAAE,EACF,GAAG,CAAA,sBAAsB,CAAC,eAAe,EAAE,kBAAkB,EAAE,kBAAkB,MAAM;2BAClE,CAAC,eAAe,CACtC,CAAC;QACF,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CACpB,EAAE,EACF,GAAG,CAAA,kDAAkD,CACtD,CAAC;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACxB,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA;oBACJ,CAAC;gBACL,EAAE,KAAK,EAAE,KAAK,MAAM,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,IAAI,IAAI,IAAI,KAAK,MAAM,EAAE,GAAG,IAAI,IAAI;;sCAEzF,CAAC;mEAC4B,CAAC;iEACH,CAAC,UAAU,CAAC,CAAC;QAC1E,MAAM,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACvB,MAAM,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACzC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACtD,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,EAAM,EAAE,EAAU,EAAE,CAAM,EAAE,EAAE,CAC3C,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,eAAe,CAAC,mCAAmC,EAAE,KAAK,EAAE,KAAK,CAAC;yEACX,CAAC,CAAC;IAEzE,2FAA2F;IAC3F,MAAM,IAAI,GAAG,KAAK,EAChB,EAAM,EACN,EAAU,EACV,OAAiB,EACjB,CAAqF,EACtB,EAAE;QACjE,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,EAAE,GAAG,CAAA,iBAAiB,CAAC,eAAe,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QACzE,MAAM,IAAI,GAAG,MAAM,IAAI,CAMrB,EAAE,EACF,GAAG,CAAA,eAAe,CAAC,eAAe,EAAE,kBAAkB,EAAE,qBAAqB,OAAO,CAAC,OAAO,CAAC;8CACrD,CACzC,CAAC;QACF,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,eAAe,CAAC;kBACxB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CACrB,EAAE,EACF,GAAG,CAAA,iBAAiB,CAAC,eAAe,EAAE,kBAAkB,EAAE,UAAU,CACrE,CAAC;QACF,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QAC1E,MAAM,MAAM,GAAG,MAAM,IAAI,CACvB,EAAE,EACF,GAAG,CAAA,eAAe,CAAC,eAAe,EAAE,kBAAkB,EAAE,cAAc,CACvE,CAAC;QACF,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,eAAe,CAAC,eAAe,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;QAC7E,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QAChB,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YACpC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACxD,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3D,IAAI,CAAC,EAAE,CAAC;YACN,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,eAAe,CAAC,eAAe,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAC7E,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,eAAe,CAAC;kBACxB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG;2CACL,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;YACrE,MAAM,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;YACtC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC3D,CAAC;QACD,MAAM,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACrC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC1D,CAAC,CAAC;IAEF,0BAA0B;IAC1B,MAAM,SAAS,GAAG,CAAC,CAAY,EAAE,EAAE,CACjC,IAAI,CACF,CAAC,EACD,GAAG,CAAA,6CAA6C,CAAC,eAAe,EAAE,wBAAwB,CAC3F,CAAC;IAEJ,MAAM,KAAK,GAAe;QACxB,IAAI,EAAE,OAAO;QACb,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM;QAEtB,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAC7B,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACtB,0EAA0E;YAC1E,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;YACpB,MAAM,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1B,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CACpB,EAAE,EACF,GAAG,CAAA,eAAe,CAAC,eAAe,EAAE,kBAAkB,EAAE,sBAAsB,CAC/E,CAAC;YACF,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CACpB,EAAE,EACF,GAAG,CAAA,qBAAqB,CAAC,CAAC,IAAI,eAAe,EAAE,CAAC,WAAW,EAAE,EAAE,CAChE,CAAC;YACF,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;QACnE,CAAC,CAAC;QAEJ,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAC1B,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACtB,IAAI,CAAC,OAAO,CAAC,MAAM;gBAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CACvB,EAAE,EACF,GAAG,CAAA,6CAA6C,CAAC;2BAChC,EAAE,qBAAqB,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC;oCAClD,CAC3B,CAAC;YACF,MAAM,IAAI,GAAqC,EAAE,CAAC;YAClD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;oBAAE,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;gBACtD,MAAM,SAAS,CACb,EAAE,EACF,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACxB,CAAC;gBACF,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;oBACvB,6DAA6D;oBAC7D,MAAM,KAAK,GAAG,MAAM,IAAI,CACtB,EAAE,EACF,GAAG,CAAA,iBAAiB,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,MAAM;kCACjE,CAAC,EAAE,CACxB,CAAC;oBACF,IAAI,CAAC,KAAK,CAAC,MAAM;wBAAE,SAAS;oBAC5B,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC1C,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC;YACD,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,UAAU,CAAC,kBAAkB,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC;uBAClD,EAAE,qBAAqB,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;YAC/E,OAAO,EAAE,IAAI,EAAE,CAAC;QAClB,CAAC,CAAC;QAEJ,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAC9B,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACtB,IAAI,CAAC,CAAC,KAAK;gBAAE,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;YACjC,MAAM,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE;gBACjD,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,EAAE,EAAE,MAAM;aACX,CAAC,CAAC;QACL,CAAC,CAAC;QAEJ,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,MAAM,CAAC,GAAG,MAAM,IAAI,CAOlB,EAAE,EACF,GAAG,CAAA,oCAAoC,EAAE,CAAC,GAAG,CAAA,WAAW,CAAC;;2BAEtC,EAAE,CAAC,GAAG,CAAA,WAAW,CAAC;mBAC1B,CAAC;;sBAEE,EAAE,CAAC,GAAG,CAAA,MAAM,CAAC;mBAChB,CAAC;eACL,CAAC,gBAAgB,CAAC,CAAC,IAAI;uBACf,EAAE,qBAAqB,CACvC,CAAC;YACF,MAAM,KAAK,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAU,CAAC;YACnF,OAAO,CAAC,CAAC,GAAG,CACV,CAAC,CAAC,EAAY,EAAE,CAAC,CAAC;gBAChB,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI;gBACtB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAC3B,CAAC,CAAC,EAAS,EAAE,CAAC,CAAC;oBACb,MAAM,EAAE,CAAC,CAAC,MAAgB;oBAC1B,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;oBACf,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;oBACvB,GAAG,CAAC,CAAC,CAAC,MAAM;wBACV,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAG,CAAC,CAAC,IAAe,IAAI,IAAI,EAAE,GAAG,EAAG,CAAC,CAAC,GAAc,IAAI,IAAI,EAAE,EAAE;wBAClF,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC,CACH;gBACD,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;gBAClD,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACpC,MAAM,EAAE,CAAC,CAAC,MAAgB;oBAC1B,MAAM,EAAE,CAAC,CAAC,MAAgB;oBAC1B,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;iBACd,CAAC,CAAC;aACJ,CAAC,CACH,CAAC;QACJ,CAAC;QAED,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CACxB,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACtB,IAAI,CAAC,GAAG,CAAC,MAAM;gBAAE,OAAO;YACxB,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;YACpB,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,eAAe,CAAC,eAAe,EAAE,sBAAsB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5F,IAAI,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;YAC/B,MAAM,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC;YAC5B,IAAI,EAAU,CAAC;YACf,IAAI,EAAU,CAAC;YACf,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;gBACpB,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;gBACpC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3B,CAAC;iBAAM,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;gBAC3B,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;gBAC3B,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC1B,MAAM,GAAG,GAAG,GAAG,EAAE;oBACf,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;oBAChD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBACrB,IAAI,CAAC,IAAI;wBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,gBAAgB,CAAC,CAAC;oBACrD,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAU,CAAC;gBAC5E,CAAC,CAAC;gBACF,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC;gBACjB,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;oBACtC,wCAAwC;oBACxC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,UAAU,CAAC;qBACtB,CAAC,eAAe,EAAE,oBAAoB,EAAE,4BAA4B,CAAC,CAAC;oBAC/E,IAAI,GAAG,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;oBAC3B,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC1C,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,eAAe,CAAC;mBACzB,EAAE,SAAS,CAAC,CAAC,IAAI,IAAI,IAAI,WAAW,CAAC,CAAC,GAAG,IAAI,IAAI,WAAW,EAAE,cAAc,IAAI;wBAC3E,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC/D,CAAC,CAAC;QAEJ,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CACnB,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACtB,IAAI,CAAC,GAAG,CAAC,MAAM;gBAAE,OAAO;YACxB,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;YACpB,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,eAAe,CAAC,eAAe,EAAE,sBAAsB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9F,CAAC,CAAC;QAEJ,SAAS,EAAE,KAAK,IAAI,EAAE,CACpB,CAAC,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CACvB,CAAC,CAAC,EAAE,GAAG,EAAa,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CACrE;QAEH,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAChC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACtB,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;YACpB,4EAA4E;YAC5E,IAAI,CAAC,CAAC,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;gBAClB,6DAA6D;gBAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CACvB,EAAE,EACF,GAAG,CAAA,6CAA6C,CAAC;6BAChC,EAAE,cAAc,CAAC,CAAC,GAAG,kBAAkB,CAAC,mBAAmB,CAC7E,CAAC;gBACF,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAClB,MAAM,SAAS,CACb,EAAE,EACF,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACxB,CAAC;oBACF,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;wBACvB,6DAA6D;wBAC7D,MAAM,KAAK,GAAG,MAAM,IAAI,CACtB,EAAE,EACF,GAAG,CAAA,iBAAiB,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,MAAM;oCACjE,CAAC,EAAE,CACxB,CAAC;wBACF,IAAI,KAAK,CAAC,MAAM;4BAAE,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;oBACxF,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;oBACxB,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CACpB,EAAE,EACF,GAAG,CAAA,kCAAkC,CAAC;+BACrB,EAAE,cAAc,CAAC,CAAC,GAAG,mBAAmB,CAAC,EAAE,CAC7D,CAAC;oBACF,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG;wBAAE,OAAO,IAAI,CAAC;gBACtC,CAAC;YACH,CAAC;YACD,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC;YAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CACvB,EAAE,EACF,GAAG,CAAA,wCAAwC,CAAC,eAAe,EAAE;yDACd,CAAC,CAAC,GAAG,IAAI,IAAI;8BACxC,GAAG,kBAAkB,OAAO,CAAC,KAAK,CAAC;4CACrB,CACnC,CAAC;YACF,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC;YACvB,MAAM,SAAS,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/B,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAA,eAAe,CAAC,eAAe,EAAE,kBAAkB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAClF,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACxF,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;QACrC,CAAC,CAAC;QAEJ,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAC/B,CACE,MAAM,IAAI,CACR,EAAE,EACF,GAAG,CAAA,iBAAiB,CAAC,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,MAAM;0BACjE,GAAG,mBAAmB,KAAK,EAAE,EAAE,CAChD,CACF,CAAC,MAAM,GAAG,CAAC;QAEd,GAAG,EAAE,KAAK,IAAI,EAAE;YACd,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;QAClB,CAAC;KACF,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/coord/postgres.ts"],"names":[],"mappings":"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"}
|
package/dist/peers-coord.js
CHANGED
|
@@ -8645,7 +8645,9 @@ var init_schema2 = __esm({
|
|
|
8645
8645
|
/** taken from the queue: where release(queue) puts it back */
|
|
8646
8646
|
queued: boolean().notNull().default(false),
|
|
8647
8647
|
lane: text(),
|
|
8648
|
-
pin: text()
|
|
8648
|
+
pin: text(),
|
|
8649
|
+
/** the take's own key: a replayed take with it gets this lease back, not the next row */
|
|
8650
|
+
takeKey: text("take_key")
|
|
8649
8651
|
},
|
|
8650
8652
|
(t) => [primaryKey({ columns: [t.ns, t.taskId, t.holder], name: "pk_coord_lease" })]
|
|
8651
8653
|
);
|
|
@@ -9976,6 +9978,7 @@ var init_store = __esm({
|
|
|
9976
9978
|
// src/coord/postgres.ts
|
|
9977
9979
|
var postgres_exports = {};
|
|
9978
9980
|
__export(postgres_exports, {
|
|
9981
|
+
COORD_CHANNEL: () => COORD_CHANNEL,
|
|
9979
9982
|
pgCoord: () => pgCoord
|
|
9980
9983
|
});
|
|
9981
9984
|
async function rows(q, query) {
|
|
@@ -10010,7 +10013,7 @@ function pgCoord(o) {
|
|
|
10010
10013
|
if (!hit[0] || hit[0].status === name) return;
|
|
10011
10014
|
await aerieStore({ db: tx }).edit(id, { status: name }, by);
|
|
10012
10015
|
};
|
|
10013
|
-
const lease = async (tx, id, holder, leaseMs, queued) => {
|
|
10016
|
+
const lease = async (tx, id, holder, leaseMs, queued, key) => {
|
|
10014
10017
|
const t = clock();
|
|
10015
10018
|
const others = await rows(
|
|
10016
10019
|
tx,
|
|
@@ -10023,9 +10026,10 @@ function pgCoord(o) {
|
|
|
10023
10026
|
);
|
|
10024
10027
|
const gen = num(g?.gen);
|
|
10025
10028
|
await tx.execute(sql`
|
|
10026
|
-
insert into ${L} (ns, task_id, holder, gen, expires, queued, lane, pin)
|
|
10027
|
-
values (${ns}, ${id}, ${holder}, ${gen}, ${plus(t, leaseMs)}, ${!!queued}, ${queued?.lane ?? null}, ${queued?.pin ?? null})
|
|
10029
|
+
insert into ${L} (ns, task_id, holder, gen, expires, queued, lane, pin, take_key)
|
|
10030
|
+
values (${ns}, ${id}, ${holder}, ${gen}, ${plus(t, leaseMs)}, ${!!queued}, ${queued?.lane ?? null}, ${queued?.pin ?? null}, ${key ?? null})
|
|
10028
10031
|
on conflict (ns, task_id, holder) do update set gen = excluded.gen, expires = excluded.expires,
|
|
10032
|
+
take_key = coalesce(excluded.take_key, ${L}.take_key),
|
|
10029
10033
|
queued = excluded.queued or ${L}.queued,
|
|
10030
10034
|
lane = case when excluded.queued then excluded.lane else ${L}.lane end,
|
|
10031
10035
|
pin = case when excluded.queued then excluded.pin else ${L}.pin end`);
|
|
@@ -10077,7 +10081,9 @@ function pgCoord(o) {
|
|
|
10077
10081
|
};
|
|
10078
10082
|
const queueRows = (q) => rows(
|
|
10079
10083
|
q,
|
|
10080
|
-
sql`select task_id as id, lane, pin, pos from ${Q}
|
|
10084
|
+
sql`select q.task_id as id, q.lane, q.pin, q.pos, k.title from ${Q} q
|
|
10085
|
+
left join ${task} k on k.id = upper(q.task_id)
|
|
10086
|
+
where q.ns = ${ns} order by q.pos, q.task_id`
|
|
10081
10087
|
);
|
|
10082
10088
|
const store = {
|
|
10083
10089
|
name: "aerie",
|
|
@@ -10212,10 +10218,24 @@ function pgCoord(o) {
|
|
|
10212
10218
|
await tx.execute(sql`delete from ${Q} where ns = ${ns} and task_id = any(${textArr(ids)})`);
|
|
10213
10219
|
}),
|
|
10214
10220
|
queueList: async () => (await queueRows(db)).map(
|
|
10215
|
-
(i, pos) => ({
|
|
10221
|
+
(i, pos) => ({
|
|
10222
|
+
id: i.id,
|
|
10223
|
+
lane: i.lane,
|
|
10224
|
+
pin: i.pin,
|
|
10225
|
+
pos,
|
|
10226
|
+
...i.title ? { title: i.title } : {}
|
|
10227
|
+
})
|
|
10216
10228
|
),
|
|
10217
10229
|
queueTake: (x, holder, leaseMs) => atomic(db, async (tx) => {
|
|
10218
10230
|
await lockQueue(tx);
|
|
10231
|
+
if (x.key) {
|
|
10232
|
+
const [had] = await rows(
|
|
10233
|
+
tx,
|
|
10234
|
+
sql`select task_id as id, gen::float8 as gen from ${L} where ns = ${ns} and holder = ${holder}
|
|
10235
|
+
and take_key = ${x.key} and expires >= ${clock()}`
|
|
10236
|
+
);
|
|
10237
|
+
if (had) return { id: had.id, gen: num(had.gen) };
|
|
10238
|
+
}
|
|
10219
10239
|
if (x.pin?.startsWith("run:")) {
|
|
10220
10240
|
const t = clock();
|
|
10221
10241
|
const lapsed = await rows(
|
|
@@ -10258,7 +10278,14 @@ function pgCoord(o) {
|
|
|
10258
10278
|
if (!item) return null;
|
|
10259
10279
|
await lockTasks(tx, [item.id]);
|
|
10260
10280
|
await tx.execute(sql`delete from ${Q} where ns = ${ns} and task_id = ${item.id}`);
|
|
10261
|
-
const r = await lease(
|
|
10281
|
+
const r = await lease(
|
|
10282
|
+
tx,
|
|
10283
|
+
item.id,
|
|
10284
|
+
holder,
|
|
10285
|
+
leaseMs,
|
|
10286
|
+
{ lane: item.lane, pin: item.pin },
|
|
10287
|
+
x.key
|
|
10288
|
+
);
|
|
10262
10289
|
return { id: item.id, gen: r.gen };
|
|
10263
10290
|
}),
|
|
10264
10291
|
fence: async (id, holder, gen) => (await rows(
|
|
@@ -10270,9 +10297,18 @@ function pgCoord(o) {
|
|
|
10270
10297
|
await o.end?.();
|
|
10271
10298
|
}
|
|
10272
10299
|
};
|
|
10300
|
+
const sub = o.subscribe;
|
|
10301
|
+
if (sub)
|
|
10302
|
+
store.listen = async (onChange) => {
|
|
10303
|
+
const stop = await sub(COORD_CHANNEL, (payload) => {
|
|
10304
|
+
const [what, ...rest] = payload.split(":");
|
|
10305
|
+
if (rest.join(":") === ns && (what === "queue" || what === "lease")) onChange(what);
|
|
10306
|
+
});
|
|
10307
|
+
return { end: stop };
|
|
10308
|
+
};
|
|
10273
10309
|
return store;
|
|
10274
10310
|
}
|
|
10275
|
-
var ms, at2, num, textArr;
|
|
10311
|
+
var COORD_CHANNEL, ms, at2, num, textArr;
|
|
10276
10312
|
var init_postgres = __esm({
|
|
10277
10313
|
"src/coord/postgres.ts"() {
|
|
10278
10314
|
"use strict";
|
|
@@ -10280,6 +10316,7 @@ var init_postgres = __esm({
|
|
|
10280
10316
|
init_db2();
|
|
10281
10317
|
init_schema2();
|
|
10282
10318
|
init_store();
|
|
10319
|
+
COORD_CHANNEL = "aerie_coord";
|
|
10283
10320
|
ms = (v) => sql`(extract(epoch from ${v}) * 1000)::float8`;
|
|
10284
10321
|
at2 = (v) => sql`to_timestamp(${v}::float8 / 1000)`;
|
|
10285
10322
|
num = (v) => Math.round(Number(v));
|
|
@@ -10319,7 +10356,24 @@ function coordFromUrl(url, o = {}) {
|
|
|
10319
10356
|
connect_timeout: 2,
|
|
10320
10357
|
connection: { statement_timeout: 2e3 }
|
|
10321
10358
|
});
|
|
10322
|
-
|
|
10359
|
+
let quiet;
|
|
10360
|
+
const subscribe = async (channel, fn) => {
|
|
10361
|
+
quiet ??= postgres(url, {
|
|
10362
|
+
max: 1,
|
|
10363
|
+
fetch_types: false,
|
|
10364
|
+
onnotice: () => {
|
|
10365
|
+
},
|
|
10366
|
+
connect_timeout: 2
|
|
10367
|
+
});
|
|
10368
|
+
const l = await quiet.listen(channel, fn);
|
|
10369
|
+
return () => l.unlisten();
|
|
10370
|
+
};
|
|
10371
|
+
return {
|
|
10372
|
+
store: pgCoord2({ ...o, db: drizzle2(sql2), subscribe }),
|
|
10373
|
+
close: async () => {
|
|
10374
|
+
await Promise.all([sql2.end({ timeout: 1 }), quiet?.end({ timeout: 1 })]);
|
|
10375
|
+
}
|
|
10376
|
+
};
|
|
10323
10377
|
})();
|
|
10324
10378
|
const call = (k) => (
|
|
10325
10379
|
// biome-ignore lint/suspicious/noExplicitAny: forwards each port call as is
|
|
@@ -10340,6 +10394,11 @@ function coordFromUrl(url, o = {}) {
|
|
|
10340
10394
|
queueList: call("queueList"),
|
|
10341
10395
|
queueTake: call("queueTake"),
|
|
10342
10396
|
fence: call("fence"),
|
|
10397
|
+
listen: async (onChange) => {
|
|
10398
|
+
const store = (await open()).store;
|
|
10399
|
+
if (!store.listen) throw new Error("aerie coord: listen needs a subscribe");
|
|
10400
|
+
return store.listen(onChange);
|
|
10401
|
+
},
|
|
10343
10402
|
end: async () => {
|
|
10344
10403
|
if (ready) await (await ready).close();
|
|
10345
10404
|
ready = void 0;
|