@snagset/server 0.1.4 → 0.1.6

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.
Files changed (87) hide show
  1. package/README.md +7 -5
  2. package/dist/bin.js +3 -1
  3. package/dist/bin.js.map +1 -1
  4. package/dist/db/connect.js +68 -31
  5. package/dist/db/connect.js.map +1 -1
  6. package/dist/db/migrate.js +144 -81
  7. package/dist/db/migrate.js.map +1 -1
  8. package/dist/db/rls.js +5 -4
  9. package/dist/db/rls.js.map +1 -1
  10. package/dist/explain.js +1 -1
  11. package/dist/explain.js.map +1 -1
  12. package/dist/platform.js +5 -1
  13. package/dist/platform.js.map +1 -1
  14. package/dist/serverless.js +1 -1
  15. package/dist/serverless.js.map +1 -1
  16. package/package.json +1 -1
  17. package/static/dashboard/assets/{CompositeItem-DooiJvYh.js → CompositeItem-B5AtyrD6.js} +1 -1
  18. package/static/dashboard/assets/ConfirmDialog-ClUMXHe1.js +1 -0
  19. package/static/dashboard/assets/{CopyButton-BX1ldjjz.js → CopyButton-DCsj-LZV.js} +1 -1
  20. package/static/dashboard/assets/{FieldItemContext-DkOlIwHg.js → FieldItemContext-DVEWRsEB.js} +1 -1
  21. package/static/dashboard/assets/{InstallTag-DahspVU0.js → InstallTag-B_qg9P2r.js} +1 -1
  22. package/static/dashboard/assets/SaveState-B-6cG0nU.js +1 -0
  23. package/static/dashboard/assets/{_app-CRQzX614.js → _app-DKjbkrkj.js} +2 -2
  24. package/static/dashboard/assets/{_app-Cd9_WR6L.js → _app-DQfqCcnn.js} +1 -1
  25. package/static/dashboard/assets/{activity-B-59HYua.js → activity-D8OAqMBy.js} +1 -1
  26. package/static/dashboard/assets/{arrow-left-aeWIKOlS.js → arrow-left-D2obUiWw.js} +1 -1
  27. package/static/dashboard/assets/{avatar-KLKmXBKs.js → avatar-DlHbKa1H.js} +1 -1
  28. package/static/dashboard/assets/{badge-Dly0Vqky.js → badge-CQoGgFU8.js} +1 -1
  29. package/static/dashboard/assets/{card-D3S4369l.js → card-YnwmM74t.js} +1 -1
  30. package/static/dashboard/assets/{check-CjehM7M4.js → check-CLHnIgiu.js} +1 -1
  31. package/static/dashboard/assets/{chevron-right-CtWPB3ox.js → chevron-right-BX_QQNXH.js} +1 -1
  32. package/static/dashboard/assets/{copy-DbrG17rp.js → copy-ZOZ0pLVD.js} +1 -1
  33. package/static/dashboard/assets/{dialog-GyPeOagK.js → dialog-BO8bYmy1.js} +2 -2
  34. package/static/dashboard/assets/{dropdown-menu-BOoXJZ3W.js → dropdown-menu-NLHjhAUe.js} +3 -3
  35. package/static/dashboard/assets/{image-off-BYE-vNh9.js → image-off-Dg9jTwH7.js} +1 -1
  36. package/static/dashboard/assets/index-B7_Oj3hr.js +169 -0
  37. package/static/dashboard/assets/{label-BGuYH_Ll.js → label-Dpq7t35_.js} +1 -1
  38. package/static/dashboard/assets/{layout-grid-DJ_OjGVc.js → layout-grid-Bf2WS_DV.js} +1 -1
  39. package/static/dashboard/assets/me-DoCJgtG9.js +1 -0
  40. package/static/dashboard/assets/{parts-DJaBw8EG.js → parts-C1QjM02Y.js} +1 -1
  41. package/static/dashboard/assets/{plus-x0wkLget.js → plus-D247LXUb.js} +1 -1
  42. package/static/dashboard/assets/s._site-BDWAQaIb.js +1 -0
  43. package/static/dashboard/assets/{s._site.comments-Bt0AsQ8j.js → s._site.comments-DEzj9S7b.js} +9 -9
  44. package/static/dashboard/assets/s._site.reviewers-DZ5GqGMU.js +1 -0
  45. package/static/dashboard/assets/s._site.settings-BIjpyBsc.js +1 -0
  46. package/static/dashboard/assets/{setup-DTi8FBnt.js → setup-ONHVc5kM.js} +1 -1
  47. package/static/dashboard/assets/sign-in-H0jNzIrs.js +1 -0
  48. package/static/dashboard/assets/{sign-up-CfU4RCfo.js → sign-up-DyiLEKht.js} +1 -1
  49. package/static/dashboard/assets/sites-Dnmo-2Me.js +1 -0
  50. package/static/dashboard/assets/studio-DxOnhxuB.js +1 -0
  51. package/static/dashboard/assets/studio-enyabWEx.js +1 -0
  52. package/static/dashboard/assets/studio.index-nkeq6PME.js +1 -0
  53. package/static/dashboard/assets/studio.integrations-BWPo36fJ.js +1 -0
  54. package/static/dashboard/assets/studio.members-DXS5CJK_.js +1 -0
  55. package/static/dashboard/assets/{sun-BLhaKyhb.js → sun-BzkBukC4.js} +1 -1
  56. package/static/dashboard/assets/{switch-En3PhTzh.js → switch-ElcxbE6-.js} +1 -1
  57. package/static/dashboard/assets/{table-DuU_ZP-u.js → table-DdjoxL3-.js} +1 -1
  58. package/static/dashboard/assets/{useAriaLabelledBy-C3DXCwhM.js → useAriaLabelledBy-BNUj3f_d.js} +1 -1
  59. package/static/dashboard/assets/{useBaseQuery-B_iu1J2b.js → useBaseQuery-yj7uWlSz.js} +1 -1
  60. package/static/dashboard/assets/useQuery-CBgK187B.js +1 -0
  61. package/static/dashboard/assets/useRender-BHlMpPxr.js +1 -0
  62. package/static/dashboard/assets/{useValueChanged-BwMBSSVy.js → useValueChanged-DQ0Iea1L.js} +1 -1
  63. package/static/dashboard/assets/{users-c6wDSgLD.js → users-DDrXwrCG.js} +1 -1
  64. package/static/dashboard/assets/welcome-Dg1oA1uA.js +11 -0
  65. package/static/dashboard/assets/you-CP3bZ82A.js +1 -0
  66. package/static/dashboard/assets/{zod-CBoGbUzv.js → zod-BUdBrC5l.js} +1 -1
  67. package/static/dashboard/index.html +1 -1
  68. package/vercel.json +10 -5
  69. package/static/dashboard/assets/ConfirmDialog-B5Kq--VU.js +0 -1
  70. package/static/dashboard/assets/SaveState-Q9xJjbqL.js +0 -6
  71. package/static/dashboard/assets/createLucideIcon-CJO80vPf.js +0 -36
  72. package/static/dashboard/assets/index-D4yHhKPM.js +0 -129
  73. package/static/dashboard/assets/me-B-0XXdLF.js +0 -1
  74. package/static/dashboard/assets/s._site-s4IRnE6u.js +0 -1
  75. package/static/dashboard/assets/s._site.reviewers-BzJsotII.js +0 -1
  76. package/static/dashboard/assets/s._site.settings-C6ei77kQ.js +0 -1
  77. package/static/dashboard/assets/sign-in-CGOMDkYg.js +0 -1
  78. package/static/dashboard/assets/sites-zZ5gTDCZ.js +0 -1
  79. package/static/dashboard/assets/studio-DaMq1jOg.js +0 -1
  80. package/static/dashboard/assets/studio-r6xIIciH.js +0 -1
  81. package/static/dashboard/assets/studio.index-CsF3xaoh.js +0 -1
  82. package/static/dashboard/assets/studio.integrations-BnPEkEA3.js +0 -1
  83. package/static/dashboard/assets/studio.members-DegH-I8c.js +0 -1
  84. package/static/dashboard/assets/useQuery-yeUPHKKg.js +0 -1
  85. package/static/dashboard/assets/useRender-Bl1M9SFS.js +0 -1
  86. package/static/dashboard/assets/welcome-Ddm5B8Xh.js +0 -11
  87. package/static/dashboard/assets/you-BmjZYMtz.js +0 -1
package/README.md CHANGED
@@ -55,11 +55,13 @@ start.
55
55
  **Row-level security may not be in force.** Migration 0001 enables and `FORCE`s
56
56
  RLS on all 31 tenanted tables. A role with the `BYPASSRLS` attribute overrides
57
57
  all of it — and managed Postgres often grants it to the role in the connection
58
- string it hands you (Neon's `neondb_owner` does, and cannot drop it from
59
- itself). Boot says so, and `/readyz` reports it. Requests are still scoped by
60
- `org_id` in the application, so this is a lost safety net rather than an open
61
- door; to get it back, create a role without `BYPASSRLS`, grant it the tables,
62
- and point `DATABASE_URL` at that. See [D50](../../PRODUCT-DECISIONS.md).
58
+ string it hands you (Supabase's `postgres` and Neon's `neondb_owner` both do,
59
+ and neither can drop it from itself). Boot says so, and `/readyz` reports it.
60
+ Requests are still scoped by `org_id` in the application, so this is a lost
61
+ safety net rather than an open door; to get it back, create a role without
62
+ `BYPASSRLS`, grant it the tables, and point `DATABASE_URL` at that — the
63
+ recipe, for Supabase and for any other provider, is in
64
+ [docs/self-hosting.md](../../docs/self-hosting.md). See [D50](../../PRODUCT-DECISIONS.md).
63
65
 
64
66
  ## Origins
65
67
 
package/dist/bin.js CHANGED
@@ -180,6 +180,8 @@ async function main() {
180
180
  console.log(`info: address ${platform.baseUrl.value} from ${platform.baseUrl.from}`);
181
181
  if (command === "serve" && platform.port)
182
182
  console.log(`info: port ${platform.port} from PORT`);
183
+ if (platform.database)
184
+ console.log(`info: DATABASE_URL from ${platform.database}`);
183
185
  if (![
184
186
  "serve", "bootstrap", "migrate", "allow-origin", "origins", "projects",
185
187
  "storage", "passwd", "link", "mcp-token", "env",
@@ -204,7 +206,7 @@ async function main() {
204
206
  cfg = loadConfig(process.env);
205
207
  }
206
208
  }
207
- const sql = connect(cfg.required("DATABASE_URL"), { max: cfg.int("SNAGSET_DATABASE_POOL_MAX") });
209
+ const sql = connect(cfg.required("DATABASE_URL"), { max: cfg.int("SNAGSET_DATABASE_POOL_MAX"), ssl: cfg.get("SNAGSET_DATABASE_SSL") });
208
210
  // §3.4 step 1 — migrations first, under the advisory lock. Nothing else can
209
211
  // be trusted before the schema is the one this build expects.
210
212
  await migrate(sql);
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -1,46 +1,83 @@
1
1
  import postgres from "postgres";
2
2
  /**
3
- * The one place a connection is opened — and the one place `prepare: false`
4
- * is explained, so it does not get "optimised" back on.
3
+ * Is this a host where plaintext is the normal, safe thing?
5
4
  *
6
- * 08 §3.2 describes the blessed path as *"marketplace Postgres attached in the
7
- * click, handing the app a **pooled** `DATABASE_URL`"*. A pooled endpoint is
8
- * PgBouncer in transaction mode: a connection is handed to one transaction and
9
- * then to somebody else, so a prepared statement created on it may be executed
10
- * later against a different backend that never saw the PREPARE.
5
+ * Loopback, the RFC 1918 and link-local ranges, `localhost` and its
6
+ * subdomains, and a bare single-label name (`db`, `postgres`) — the shape a
7
+ * compose network or a private DNS hands out. Decided from the string rather
8
+ * than by resolving it: a connect that first does a DNS lookup to decide
9
+ * whether to encrypt would add a round trip to every pool open, and a host
10
+ * that resolves to something public is one somebody typed a public name for.
11
+ */
12
+ export function isLocalHost(host) {
13
+ const h = host.replace(/^\[|\]$/g, "").toLowerCase();
14
+ if (h === "" || h === "localhost" || h.endsWith(".localhost"))
15
+ return true;
16
+ // Not `node:net`'s isIP: the mail suite's seam test treats that import as
17
+ // a transport reaching outside the two adapters, and two regexes are
18
+ // enough to tell a literal address from a name.
19
+ const v = /^\d{1,3}(\.\d{1,3}){3}$/.test(h) ? 4 : h.includes(":") ? 6 : 0;
20
+ if (v === 4) {
21
+ const [a, b] = h.split(".").map(Number);
22
+ return a === 127 || a === 10 || (a === 172 && b >= 16 && b <= 31) || (a === 192 && b === 168) || (a === 169 && b === 254) || a === 0;
23
+ }
24
+ if (v === 6)
25
+ return h === "::1" || h === "::" || /^f[cd]/.test(h) || /^fe[89ab]/.test(h) || h.startsWith("::ffff:127.");
26
+ // A unix socket path, or a name with no dot in it — never a public host.
27
+ return h.startsWith("/") || !h.includes(".");
28
+ }
29
+ /**
30
+ * What to hand postgres.js as `ssl`, from the operator's setting and the URL.
11
31
  *
12
- * The failure is not a clean error at the point of the mistake. It surfaces
13
- * as `cached plan must not change result type` on some later query, usually
14
- * after a migration has changed a table the plan referenced — which reads as
15
- * database corruption and is nothing of the kind. It was found here by running
16
- * the share-link suite twice against one pooled Neon endpoint: the second run
17
- * dropped and recreated the schema, and every query afterwards failed.
32
+ * WHY THIS EXISTS. `SNAGSET_DATABASE_SSL` was registered in 08 §4 from the
33
+ * first draft and read by nothing: the connection took whatever the URL said,
34
+ * and a URL that said nothing meant PLAINTEXT. That never showed on Neon,
35
+ * whose strings carry `?sslmode=require`. Supabase's do not — the string its
36
+ * dashboard hands you has no query at all — so a Supabase project with
37
+ * *Enforce SSL* on refused the connection, and one without it carried every
38
+ * reviewer's words across the internet in the clear. Neither is what "auto"
39
+ * promised.
18
40
  *
19
- * THE COST IS ONE EXTRA ROUND TRIP PER PARAMETERISED STATEMENT, EVERY TIME —
20
- * not per unique query shape, which is what this comment used to claim.
21
- * postgres.js sets `describeFirst` whenever a query has parameters and is not
22
- * prepared (connection.js: `parameters.length && !q.prepared`), so it sends
23
- * Describe+Flush, waits, then Bind+Execute+Sync. Measured against London from
24
- * Seoul, 4 runs each: a parameterised `SELECT $1::int` costs **520 / 521 / 509
25
- * / 519 ms** unprepared against **539 / 268 / 270 / 264 ms** prepared, on a
26
- * link whose one-way is ~260 ms. Every statement in a request pays it.
41
+ * The rules, in order:
42
+ * · `disable` → plaintext, whatever the URL says. The operator's call.
43
+ * · `require` → TLS, whatever the URL says.
44
+ * · `auto` → the URL's own `sslmode`/`ssl` if it has one (postgres.js
45
+ * reads it; a provider that wrote it knew its endpoint), else
46
+ * TLS unless the host is local (`isLocalHost`).
27
47
  *
28
- * It is still the right default, and the reason is deployment rather than
29
- * performance: 08 §3.2's blessed path hands out a pooled URL, and this is the
30
- * setting that makes that URL work. But the cost is now written down, because
31
- * it is the largest single term in the create path's latency and the next
32
- * person to look at that number should not have to measure it again.
48
+ * `undefined` means "leave it to postgres.js", which is where the URL's
49
+ * parameter is honoured; passing an explicit value overrides the URL.
33
50
  *
34
- * (For the record, postgres.js DOES retry both `RevalidateCachedQuery` and
35
- * `FetchPreparedStatement` — so re-enabling `prepare` is a real option to
36
- * evaluate, not a settled impossibility. It wants its own test against a
37
- * schema change on a pooled endpoint, which is the scenario that produced the
38
- * original failure, and it should not be flipped without one.)
51
+ * `require` is libpq's meaning: encrypted, the certificate NOT verified. That
52
+ * is what a managed provider's own CA (Supabase's, Neon's) needs without a
53
+ * root certificate on the operator's machine, and it is what their strings
54
+ * ask for. `verify-full` is available by writing it into the URL.
39
55
  */
56
+ export function sslFor(url, mode = "auto") {
57
+ if (mode === "disable")
58
+ return false;
59
+ if (mode === "require")
60
+ return "require";
61
+ let host = "";
62
+ let saysSo = false;
63
+ try {
64
+ const u = new URL(url);
65
+ host = u.hostname;
66
+ saysSo = u.searchParams.has("sslmode") || u.searchParams.has("ssl") || u.searchParams.has("sslrootcert");
67
+ }
68
+ catch {
69
+ return undefined; // an unparseable URL is loadConfig's to refuse, not this function's
70
+ }
71
+ if (saysSo)
72
+ return undefined;
73
+ return isLocalHost(host) ? undefined : "require";
74
+ }
40
75
  export function connect(url, opts = {}) {
76
+ const ssl = sslFor(url, opts.ssl ?? "auto");
41
77
  return postgres(url, {
42
78
  max: opts.max ?? 10,
43
79
  prepare: false,
80
+ ...(ssl === undefined ? {} : { ssl }),
44
81
  // Seconds. Without this a pooler that stops resolving — Neon did, twice in
45
82
  // one afternoon: `read ETIMEDOUT`, then `getaddrinfo ENOTFOUND` — leaves
46
83
  // every request hanging for the OS's TCP timeout, and the dashboard shows
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/db/connect.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,OAAyB,EAAE;IAC9D,OAAO,QAAQ,CAAC,GAAG,EAAE;QACnB,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE;QACnB,OAAO,EAAE,KAAK;QACd,2EAA2E;QAC3E,yEAAyE;QACzE,0EAA0E;QAC1E,wEAAwE;QACxE,uEAAuE;QACvE,0EAA0E;QAC1E,eAAe,EAAE,EAAE;QACnB,2EAA2E;QAC3E,qBAAqB;QACrB,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;KACnB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/db/connect.ts"],"names":[],"mappings":"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"}
@@ -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