@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.
@@ -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
  }
@@ -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;
@@ -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} where ns = ${ns} order by pos, task_id`);
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) => ({ id: i.id, lane: i.lane, pin: i.pin, 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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"}
@@ -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} where ns = ${ns} order by pos, task_id`
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) => ({ id: i.id, lane: i.lane, pin: i.pin, 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(tx, item.id, holder, leaseMs, { lane: item.lane, pin: item.pin });
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
- return { store: pgCoord2({ ...o, db: drizzle2(sql2) }), close: () => sql2.end({ timeout: 1 }) };
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;