@snagset/server 0.1.5 → 0.1.7

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.
@@ -15,11 +15,23 @@ import postgres from "postgres";
15
15
  *
16
16
  * The four rules that make an unattended boot safe:
17
17
  *
18
- * 1. **One advisory lock, taken first.** Vercel starts N lambdas; a Railway
19
- * deploy overlaps old and new containers. Without the lock, two processes
20
- * run `CREATE TABLE` concurrently and the loser dies on a duplicate — which
21
- * looks exactly like a corrupt database to whoever reads the logs. With it,
22
- * the loser waits and then finds there is nothing to do.
18
+ * 1. **One advisory lock, per file, inside its transaction.** Vercel starts
19
+ * N lambdas; a Railway deploy overlaps old and new containers. Without
20
+ * the lock, two processes run `CREATE TABLE` concurrently and the loser
21
+ * dies on a duplicate — which looks exactly like a corrupt database to
22
+ * whoever reads the logs. With it, the loser waits, then finds the file
23
+ * already in the ledger and moves on.
24
+ *
25
+ * TRANSACTION-scoped (`pg_advisory_xact_lock`), not session-scoped, and
26
+ * the reason is the pooled `DATABASE_URL` 08 §3.2 blesses. A pooler in
27
+ * transaction mode (Supabase's port 6543, Neon's `-pooler`, PgBouncer)
28
+ * hands a client a backend for one transaction at a time; a session lock
29
+ * taken on one backend and released on another is a lock nobody holds
30
+ * and nobody can release — the fleet wedges on the next deploy. Inside a
31
+ * transaction every statement is on one backend, by the pooler's own
32
+ * rule, so the lock and the work it guards cannot come apart. The lock
33
+ * also dies with a crashed migrator's transaction, so nothing has to be
34
+ * released by hand.
23
35
  * 2. **Checksums, compared every boot.** A migration file that changed after
24
36
  * it was applied is the single most expensive thing to discover late: every
25
37
  * environment is now a different schema wearing the same version number.
@@ -74,7 +86,7 @@ export class MigrationError extends Error {
74
86
  }
75
87
  }
76
88
  export async function migrate(sql, log = console.log) {
77
- // The ledger itself, first and outside the lock: it is `IF NOT EXISTS`, it is
89
+ // The ledger itself, first and outside any lock: it is `IF NOT EXISTS`, it is
78
90
  // the only DDL that can safely race, and every later step reads it.
79
91
  await sql `
80
92
  CREATE TABLE IF NOT EXISTS _migrations (
@@ -84,95 +96,146 @@ export async function migrate(sql, log = console.log) {
84
96
  duration_ms integer NOT NULL
85
97
  )
86
98
  `;
87
- // Rule 1. Session-scoped, released in the `finally` — not `pg_advisory_xact_lock`,
88
- // because each migration wants its own transaction inside the held lock.
89
- const lock = await sql `
90
- SELECT pg_try_advisory_lock(${MIGRATION_LOCK_ID})
91
- `;
92
- if (!lock[0]?.pg_try_advisory_lock) {
93
- // Another instance is mid-migration. Waiting is correct: by the time the
94
- // lock frees, the work is done and this process finds nothing to apply.
95
- log("migrate: another instance holds the lock — waiting");
96
- await sql `SELECT pg_advisory_lock(${MIGRATION_LOCK_ID})`;
99
+ const all = files();
100
+ // Rule 2, and it runs over EVERY file before any of them is applied. A
101
+ // half-migrated database whose next file is the corrupt one is worse than
102
+ // one that refused at the door.
103
+ /*
104
+ * WHEN 0001 STOPS BEING REGENERABLE, and why it still is today.
105
+ *
106
+ * 0001_init.sql is GENERATED from 05 §3 (gen-migration.mjs), so §3 is the
107
+ * single description of the schema and the file is its rendering. That
108
+ * works right up to the moment a second person has applied it, and then it
109
+ * cannot: an applied migration is history, and history that regenerates is
110
+ * a checksum mismatch on somebody else's database.
111
+ *
112
+ * The switch point is M2-35, where schemaVersion freezes for publish
113
+ * (spine §0.2). Before it there is exactly one real install -- the studio's
114
+ * own dogfood -- and correcting §3 plus bringing that one database along by
115
+ * hand is both cheaper and more honest than a numbered ALTER for a schema
116
+ * nobody else has. After it, §3 describes the CURRENT schema, 0001 is
117
+ * frozen at what publish shipped, and every change is a new numbered file.
118
+ * The generator's check has to change shape with it: from "0001 renders §3"
119
+ * to "0001 plus every later file EQUALS §3", which needs a scratch database
120
+ * to answer and is therefore a gate rather than a pure function.
121
+ *
122
+ * The rule below does not soften either way. It is what makes that switch
123
+ * point real rather than aspirational.
124
+ */
125
+ const pending = reconcile(all, await ledger(sql));
126
+ if (!pending.length) {
127
+ log(`migrate: up to date (${all.length} applied)`);
128
+ return { applied: [], alreadyApplied: all.length };
97
129
  }
98
- try {
99
- const done = new Map((await sql `SELECT name, checksum FROM _migrations`).map((r) => [r.name, r.checksum]));
100
- const pending = [];
101
- // Rule 2, and it runs over EVERY file before any of them is applied. A
102
- // half-migrated database whose next file is the corrupt one is worse than
103
- // one that refused at the door.
104
- /*
105
- * WHEN 0001 STOPS BEING REGENERABLE, and why it still is today.
106
- *
107
- * 0001_init.sql is GENERATED from 05 §3 (gen-migration.mjs), so §3 is the
108
- * single description of the schema and the file is its rendering. That
109
- * works right up to the moment a second person has applied it, and then it
110
- * cannot: an applied migration is history, and history that regenerates is
111
- * a checksum mismatch on somebody else's database.
112
- *
113
- * The switch point is M2-35, where schemaVersion freezes for publish
114
- * (spine §0.2). Before it there is exactly one real install -- the studio's
115
- * own dogfood -- and correcting §3 plus bringing that one database along by
116
- * hand is both cheaper and more honest than a numbered ALTER for a schema
117
- * nobody else has. After it, §3 describes the CURRENT schema, 0001 is
118
- * frozen at what publish shipped, and every change is a new numbered file.
119
- * The generator's check has to change shape with it: from "0001 renders §3"
120
- * to "0001 plus every later file EQUALS §3", which needs a scratch database
121
- * to answer and is therefore a gate rather than a pure function.
130
+ const applied = [];
131
+ for (const f of pending) {
132
+ const started = Date.now();
133
+ /**
134
+ * Rule 1, per file: the lock is TRANSACTION-scoped and the ledger is read
135
+ * again under it. Another instance may have applied this file between
136
+ * the reconcile above and here — the loser of that race finds the row,
137
+ * checks the checksum still agrees, and moves on. Two instances booting
138
+ * at once therefore apply each file exactly once between them, and
139
+ * neither needs to know the other exists.
122
140
  *
123
- * The rule below does not soften either way. It is what makes that switch
124
- * point real rather than aspirational.
141
+ * Order matters inside: the advisory lock BEFORE `SET LOCAL lock_timeout`,
142
+ * because lock_timeout applies to advisory locks too, and waiting for the
143
+ * other instance to finish a migration is exactly the wait rule 4 must
144
+ * not cut short.
125
145
  */
126
- for (const f of files()) {
127
- const seen = done.get(f.name);
128
- if (seen === undefined) {
129
- pending.push(f);
146
+ const run = async (tx) => {
147
+ const [got] = await tx `SELECT pg_try_advisory_xact_lock(${MIGRATION_LOCK_ID}) AS ok`;
148
+ if (!got?.ok) {
149
+ log("migrate: another instance holds the lock — waiting");
150
+ await tx `SELECT pg_advisory_xact_lock(${MIGRATION_LOCK_ID})`;
130
151
  }
131
- else if (seen !== f.checksum) {
132
- throw new MigrationError(`${f.name} has changed since it was applied (recorded ${seen.slice(0, 12)}…, ` +
133
- `file is ${f.checksum.slice(0, 12)}…). An applied migration is history: ` +
134
- `add a new file instead of editing this one.`, 4);
152
+ // Rule 4, per file and inside the transaction so it reverts with it.
153
+ await tx `SET LOCAL lock_timeout = '3s'`;
154
+ const [seen] = await tx `SELECT checksum FROM _migrations WHERE name = ${f.name}`;
155
+ if (seen) {
156
+ changed(f, seen.checksum);
157
+ return false;
135
158
  }
136
- done.delete(f.name);
137
- }
138
- // Whatever is left was applied and no longer exists on disk — a rollback to
139
- // an older build against a newer database. Refused for the same reason:
140
- // the code is about to assume a schema that is not the one present.
141
- if (done.size) {
142
- throw new MigrationError(`the database has migrations this build does not ship: ${[...done.keys()].join(", ")}. ` +
143
- `This is an older release running against a newer database.`, 4);
144
- }
145
- if (!pending.length) {
146
- log(`migrate: up to date (${files().length} applied)`);
147
- return { applied: [], alreadyApplied: files().length };
148
- }
149
- const applied = [];
150
- for (const f of pending) {
151
- const started = Date.now();
159
+ await tx.unsafe(f.sql);
160
+ await tx `
161
+ INSERT INTO _migrations (name, checksum, duration_ms)
162
+ VALUES (${f.name}, ${f.checksum}, ${Date.now() - started})
163
+ `;
164
+ return true;
165
+ };
166
+ let did;
167
+ if (f.txn) {
152
168
  log(`migrate: applying ${f.name}…`);
153
- const run = async (tx) => {
154
- // Rule 4, per file and inside the transaction so it reverts with it.
155
- await tx `SET LOCAL lock_timeout = '3s'`;
156
- await tx.unsafe(f.sql);
157
- await tx `
169
+ did = (await sql.begin(run));
170
+ }
171
+ else {
172
+ /**
173
+ * Rule 3's exception. A `.no-txn.sql` file holds the one statement
174
+ * Postgres refuses inside a transaction block, so there is no
175
+ * transaction to carry a lock either: it runs on the bare connection,
176
+ * after its own look at the ledger, and the ledger write tolerates a
177
+ * twin. The file is held to being idempotent (`IF NOT EXISTS`) for
178
+ * exactly this reason — two instances may both run it, and the
179
+ * statement, not the runner, is what makes that harmless.
180
+ */
181
+ const [seen] = await sql `SELECT checksum FROM _migrations WHERE name = ${f.name}`;
182
+ if (seen) {
183
+ changed(f, seen.checksum);
184
+ did = false;
185
+ }
186
+ else {
187
+ log(`migrate: applying ${f.name} (outside a transaction)…`);
188
+ await sql.unsafe(f.sql);
189
+ const won = await sql `
158
190
  INSERT INTO _migrations (name, checksum, duration_ms)
159
191
  VALUES (${f.name}, ${f.checksum}, ${Date.now() - started})
192
+ ON CONFLICT (name) DO NOTHING
193
+ RETURNING name
160
194
  `;
161
- };
162
- // Rule 3. `.no-txn.sql` runs on the connection directly — its statements
163
- // are the ones Postgres refuses inside a transaction block.
164
- if (f.txn)
165
- await sql.begin(run);
166
- else
167
- await run(sql);
195
+ did = won.length > 0;
196
+ }
197
+ }
198
+ if (did) {
168
199
  log(`migrate: applied ${f.name} in ${Date.now() - started} ms`);
169
200
  applied.push(f.name);
170
201
  }
171
- return { applied, alreadyApplied: files().length - applied.length };
202
+ else {
203
+ log(`migrate: ${f.name} was applied by another instance meanwhile`);
204
+ }
172
205
  }
173
- finally {
174
- await sql `SELECT pg_advisory_unlock(${MIGRATION_LOCK_ID})`;
206
+ return { applied, alreadyApplied: all.length - applied.length };
207
+ }
208
+ async function ledger(sql) {
209
+ return new Map((await sql `SELECT name, checksum FROM _migrations`).map((r) => [r.name, r.checksum]));
210
+ }
211
+ /** Rule 2's refusal, in one place: an applied file whose bytes moved. */
212
+ function changed(f, recorded) {
213
+ if (recorded === f.checksum)
214
+ return;
215
+ throw new MigrationError(`${f.name} has changed since it was applied (recorded ${recorded.slice(0, 12)}…, ` +
216
+ `file is ${f.checksum.slice(0, 12)}…). An applied migration is history: ` +
217
+ `add a new file instead of editing this one.`, 4);
218
+ }
219
+ /** The files not yet in the ledger, after rule 2 has refused anything that disagrees with it. */
220
+ function reconcile(all, done) {
221
+ const pending = [];
222
+ const left = new Map(done);
223
+ for (const f of all) {
224
+ const seen = left.get(f.name);
225
+ if (seen === undefined)
226
+ pending.push(f);
227
+ else
228
+ changed(f, seen);
229
+ left.delete(f.name);
230
+ }
231
+ // Whatever is left was applied and no longer exists on disk — a rollback to
232
+ // an older build against a newer database. Refused for the same reason:
233
+ // the code is about to assume a schema that is not the one present.
234
+ if (left.size) {
235
+ throw new MigrationError(`the database has migrations this build does not ship: ${[...left.keys()].join(", ")}. ` +
236
+ `This is an older release running against a newer database.`, 4);
175
237
  }
238
+ return pending;
176
239
  }
177
240
  /**
178
241
  * `pnpm migrate` / `snagset migrate`. The library above takes a connection so a
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"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"}
package/dist/db/rls.js CHANGED
@@ -30,10 +30,11 @@ export async function rlsStatus(sql) {
30
30
  warning =
31
31
  `row-level security is NOT in force: the role "${role?.name}" has BYPASSRLS, ` +
32
32
  `which overrides every policy migration 0001 created. Managed Postgres often ` +
33
- `grants it to the owner role in the connection string it hands you (Neon's ` +
34
- `neondb_owner does). Requests are still scoped by org_id in the application, ` +
35
- `so this is a lost safety net rather than an open door — to get it back, create ` +
36
- `a role without BYPASSRLS, grant it the tables, and point DATABASE_URL at it.`;
33
+ `grants it to the role in the connection string it hands you (Supabase's ` +
34
+ `postgres and Neon's neondb_owner both do). Requests are still scoped by org_id ` +
35
+ `in the application, so this is a lost safety net rather than an open door — to ` +
36
+ `get it back, create a role without BYPASSRLS, grant it the tables, and point ` +
37
+ `DATABASE_URL at it.`;
37
38
  }
38
39
  else if (unprotected.length) {
39
40
  warning =
@@ -1 +1 @@
1
- {"version":3,"file":"rls.js","sourceRoot":"","sources":["../../src/db/rls.ts"],"names":[],"mappings":"AAgDA,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAiB;IAC/C,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,CAAqC;;;GAG5D,CAAC;IAEF,iEAAiE;IACjE,8EAA8E;IAC9E,4EAA4E;IAC5E,gEAAgE;IAChE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAuD;;;;;;;;;;;;;GAa9E,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC;IACrC,MAAM,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAE3F,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO;YACL,iDAAiD,IAAI,EAAE,IAAI,mBAAmB;gBAC9E,8EAA8E;gBAC9E,4EAA4E;gBAC5E,8EAA8E;gBAC9E,iFAAiF;gBACjF,8EAA8E,CAAC;IACnF,CAAC;SAAM,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QAC9B,OAAO;YACL,qCAAqC,WAAW,CAAC,MAAM,yBAAyB;gBAChF,mBAAmB,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC;IACjF,CAAC;SAAM,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO;YACL,2DAA2D,SAAS,CAAC,MAAM,GAAG;gBAC9E,aAAa,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iCAAiC;gBAC9E,+BAA+B,CAAC;IACpC,CAAC;IAED,OAAO;QACL,SAAS;QACT,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,SAAS;QAC7B,eAAe,EAAE,MAAM;QACvB,SAAS;QACT,WAAW;QACX,OAAO;KACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"rls.js","sourceRoot":"","sources":["../../src/db/rls.ts"],"names":[],"mappings":"AAkDA,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAiB;IAC/C,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,CAAqC;;;GAG5D,CAAC;IAEF,iEAAiE;IACjE,8EAA8E;IAC9E,4EAA4E;IAC5E,gEAAgE;IAChE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAuD;;;;;;;;;;;;;GAa9E,CAAC;IAEF,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC;IACrC,MAAM,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAE3F,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO;YACL,iDAAiD,IAAI,EAAE,IAAI,mBAAmB;gBAC9E,8EAA8E;gBAC9E,0EAA0E;gBAC1E,iFAAiF;gBACjF,iFAAiF;gBACjF,+EAA+E;gBAC/E,qBAAqB,CAAC;IAC1B,CAAC;SAAM,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QAC9B,OAAO;YACL,qCAAqC,WAAW,CAAC,MAAM,yBAAyB;gBAChF,mBAAmB,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC;IACjF,CAAC;SAAM,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO;YACL,2DAA2D,SAAS,CAAC,MAAM,GAAG;gBAC9E,aAAa,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iCAAiC;gBAC9E,+BAA+B,CAAC;IACpC,CAAC;IAED,OAAO;QACL,SAAS;QACT,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,SAAS;QAC7B,eAAe,EAAE,MAAM;QACvB,SAAS;QACT,WAAW;QACX,OAAO;KACR,CAAC;AACJ,CAAC"}
package/dist/explain.js CHANGED
@@ -46,7 +46,7 @@ export function explain(e) {
46
46
  case "ECONNREFUSED":
47
47
  return (`✗ no Postgres answered${where}.\n` +
48
48
  ` Start one, or point DATABASE_URL at a database that is running —\n` +
49
- ` a free Neon or Supabase branch works, so does a local install.`);
49
+ ` a free Supabase or Neon project works, so does a local install.`);
50
50
  case "ENOTFOUND":
51
51
  return `✗ that database host does not resolve${where}.\n Check the hostname in DATABASE_URL.`;
52
52
  case "ETIMEDOUT":
@@ -1 +1 @@
1
- {"version":3,"file":"explain.js","sourceRoot":"","sources":["../src/explain.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,qEAAqE;AACrE,MAAM,UAAU,OAAO,CAAC,CAAU;IAChC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,OAAQ,CAAwB,CAAC,IAAI,KAAK,QAAQ;QAC9F,CAAC,CAAE,CAAsB,CAAC,IAAI;QAC9B,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,OAAO,CAAC,CAAU;IAChC,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvD,IAAI,GAAG;QAAE,OAAO,KAAK,GAAG,EAAE,CAAC;IAE3B,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QACrD,KAAK,GAAG,OAAO,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,4EAA4E;IAC9E,CAAC;IAED,QAAQ,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACnB,KAAK,cAAc;YACjB,OAAO,CACL,yBAAyB,KAAK,KAAK;gBACnC,sEAAsE;gBACtE,kEAAkE,CACnE,CAAC;QACJ,KAAK,WAAW;YACd,OAAO,wCAAwC,KAAK,0CAA0C,CAAC;QACjG,KAAK,WAAW;YACd,OAAO,CACL,wCAAwC,KAAK,KAAK;gBAClD,kEAAkE,CACnE,CAAC;QACJ;YACE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,wDAAwD,EAAE,CAAC;IACzF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"explain.js","sourceRoot":"","sources":["../src/explain.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,qEAAqE;AACrE,MAAM,UAAU,OAAO,CAAC,CAAU;IAChC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,OAAQ,CAAwB,CAAC,IAAI,KAAK,QAAQ;QAC9F,CAAC,CAAE,CAAsB,CAAC,IAAI;QAC9B,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,OAAO,CAAC,CAAU;IAChC,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvD,IAAI,GAAG;QAAE,OAAO,KAAK,GAAG,EAAE,CAAC;IAE3B,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QACrD,KAAK,GAAG,OAAO,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,4EAA4E;IAC9E,CAAC;IAED,QAAQ,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACnB,KAAK,cAAc;YACjB,OAAO,CACL,yBAAyB,KAAK,KAAK;gBACnC,sEAAsE;gBACtE,mEAAmE,CACpE,CAAC;QACJ,KAAK,WAAW;YACd,OAAO,wCAAwC,KAAK,0CAA0C,CAAC;QACjG,KAAK,WAAW;YACd,OAAO,CACL,wCAAwC,KAAK,KAAK;gBAClD,kEAAkE,CACnE,CAAC;QACJ;YACE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,wDAAwD,EAAE,CAAC;IACzF,CAAC;AACH,CAAC"}
@@ -2,6 +2,7 @@ import { randomUUID } from "node:crypto";
2
2
  import { sanitise } from "../vendor/adapters/index.js";
3
3
  import { briefMarkdown } from "../vendor/types/brief.js";
4
4
  import { ID_PREFIX, param } from "../vendor/types/names.js";
5
+ import { noteQueued } from "../jobs/soon.js";
5
6
  import { githubClient, GitHubError, issueTitle } from "./github.js";
6
7
  import { linearClient, LinearError, linearStateFor } from "./linear.js";
7
8
  import { escapeForJiraWiki, jiraCategoryFor, jiraClient, JiraError } from "./jira.js";
@@ -17,6 +18,8 @@ export async function queueIntegrationEvent(tx, q) {
17
18
  ${tx.json((q.event ?? {}))})
18
19
  ON CONFLICT (provider, dedupe_key) DO NOTHING
19
20
  `;
21
+ // D119: the request drains this once its response is ready.
22
+ noteQueued();
20
23
  }
21
24
  const BACKOFF_MIN = [1, 5, 15, 30, 60];
22
25
  /** The thread as the brief wants it, under the org's claim. */
@@ -1 +1 @@
1
- {"version":3,"file":"outbox.js","sourceRoot":"","sources":["../../src/integrations/outbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"outbox.js","sourceRoot":"","sources":["../../src/integrations/outbox.ts"],"names":[],"mappings":"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"}
@@ -68,7 +68,7 @@ export async function runDueJobs(sql, jobs, opts) {
68
68
  const previous = last.get(job.name);
69
69
  // No row at all means never run, which is due. `>=` rather than `>` so a
70
70
  // job with everyMs 0 — "every tick" — actually runs every tick.
71
- if (previous && now.getTime() - previous.getTime() < job.everyMs) {
71
+ if (!opts.force && previous && now.getTime() - previous.getTime() < job.everyMs) {
72
72
  skipped.push({ name: job.name, why: "not-due" });
73
73
  continue;
74
74
  }
@@ -79,7 +79,7 @@ export async function runDueJobs(sql, jobs, opts) {
79
79
  let lockedOut = false;
80
80
  try {
81
81
  for (;;) {
82
- const outcome = await runOnce(sql, job, clock(), log);
82
+ const outcome = await runOnce(sql, job, clock(), log, opts.waitForLockMs);
83
83
  if (outcome === "locked") {
84
84
  lockedOut = true;
85
85
  break;
@@ -128,17 +128,38 @@ export async function runDueJobs(sql, jobs, opts) {
128
128
  * role does not bypass RLS. `LOCAL` is the half that makes it an exemption
129
129
  * rather than a hole: it cannot outlive this transaction, so nothing that runs
130
130
  * after it inherits cross-tenant reach.
131
+ *
132
+ * With `waitMs` the lock is WAITED for, up to that long (D119), under a
133
+ * `lock_timeout` set with `set_config(…, true)` — the `SET LOCAL` that takes a
134
+ * parameter — and put back to the default once the lock is held, so the job's
135
+ * own statements wait on rows exactly as they always did. Running out of time
136
+ * is `lock_not_available` (55P03), which aborts the transaction; it is caught
137
+ * outside and reported as "locked", the answer the try-lock would have given.
131
138
  */
132
- async function runOnce(sql, job, now, log) {
133
- return sql.begin(async (tx) => {
134
- const [lock] = await tx `
135
- SELECT pg_try_advisory_xact_lock(${JOB_LOCK_NAMESPACE}, ${jobLockKey(job.name)}) AS ok
136
- `;
137
- if (!lock?.ok)
139
+ async function runOnce(sql, job, now, log, waitMs) {
140
+ try {
141
+ return (await sql.begin(async (tx) => {
142
+ if (waitMs) {
143
+ await tx `SELECT set_config('lock_timeout', ${`${Math.max(1, Math.round(waitMs))}ms`}, true)`;
144
+ await tx `SELECT pg_advisory_xact_lock(${JOB_LOCK_NAMESPACE}, ${jobLockKey(job.name)})`;
145
+ await tx `SET LOCAL lock_timeout TO DEFAULT`;
146
+ }
147
+ else {
148
+ const [lock] = await tx `
149
+ SELECT pg_try_advisory_xact_lock(${JOB_LOCK_NAMESPACE}, ${jobLockKey(job.name)}) AS ok
150
+ `;
151
+ if (!lock?.ok)
152
+ return "locked";
153
+ }
154
+ await tx `SET LOCAL app.maintenance = 'on'`;
155
+ return job.run({ sql: tx, now, log });
156
+ }));
157
+ }
158
+ catch (e) {
159
+ if (waitMs && e.code === "55P03")
138
160
  return "locked";
139
- await tx `SET LOCAL app.maintenance = 'on'`;
140
- return job.run({ sql: tx, now, log });
141
- });
161
+ throw e;
162
+ }
142
163
  }
143
164
  /** Bookkeeping, in its own transaction so a rolled-back job still records the
144
165
  * attempt. Every job is idempotent, so the worst case if this write is lost
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/jobs/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/jobs/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { addressSource } from "../instance/address.js";
2
+ import { resolveMailer } from "../mail/resolve.js";
3
+ import { deliverEmail } from "../mail/notify.js";
4
+ import { pushToTrackers } from "../integrations/outbox.js";
5
+ import { getBucket } from "../storage/settings.js";
6
+ import { l1Jobs } from "./reaper.js";
7
+ export function jobSet(d) {
8
+ // D106: the address as it is when each job runs, not when this was built.
9
+ const address = addressSource(d.sql, d.keys, d.cfg);
10
+ const githubApiBase = d.githubApiBase ?? d.cfg.get("SNAGSET_GITHUB_API_BASE");
11
+ const linearApiBase = d.linearApiBase ?? d.cfg.get("SNAGSET_LINEAR_API_BASE");
12
+ const slackApiBase = d.slackApiBase ?? d.cfg.get("SNAGSET_SLACK_API_BASE");
13
+ const push = {
14
+ keys: d.keys,
15
+ baseUrl: address,
16
+ ...(githubApiBase ? { githubApiBase } : {}),
17
+ ...(linearApiBase ? { linearApiBase } : {}),
18
+ ...(slackApiBase ? { slackApiBase } : {}),
19
+ };
20
+ const outbox = async () => [
21
+ // D89: the environment first, then the transport connected on Studio › General.
22
+ deliverEmail((await resolveMailer(d.sql, d.keys, d.cfg)).status, address, d.keys),
23
+ pushToTrackers(d.sql, push),
24
+ ];
25
+ return {
26
+ outbox,
27
+ async all() {
28
+ const bucket = await getBucket(d.sql, d.keys).catch(() => null);
29
+ // The reaper first, as `l1Jobs` orders it: cheapest and most visible
30
+ // first, so a budget that runs out costs the least.
31
+ return [...l1Jobs(bucket), ...(await outbox())];
32
+ },
33
+ };
34
+ }
35
+ //# sourceMappingURL=set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.js","sourceRoot":"","sources":["../../src/jobs/set.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAiB,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAmCrC,MAAM,UAAU,MAAM,CAAC,CAAa;IAClC,0EAA0E;IAC1E,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAC9E,MAAM,aAAa,GAAG,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAC9E,MAAM,YAAY,GAAG,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAC3E,MAAM,IAAI,GAAa;QACrB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,OAAO;QAChB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK,IAAoB,EAAE,CAAC;QACzC,gFAAgF;QAChF,YAAY,CAAC,CAAC,MAAM,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC;QACjF,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC;KAC5B,CAAC;IAEF,OAAO;QACL,MAAM;QACN,KAAK,CAAC,GAAG;YACP,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAChE,qEAAqE;YACrE,oDAAoD;YACpD,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC;QAClD,CAAC;KACF,CAAC;AACJ,CAAC"}