pipework 0.258.0 → 0.259.0

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 (45) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/cli/commands/alerts.js +2 -2
  3. package/dist/cli/commands/alerts.js.map +1 -1
  4. package/dist/cli/commands/db.js +1 -1
  5. package/dist/cli/commands/db.js.map +1 -1
  6. package/dist/core/validation/connectivity.d.ts.map +1 -1
  7. package/dist/core/validation/connectivity.js +1 -0
  8. package/dist/core/validation/connectivity.js.map +1 -1
  9. package/dist/core/validation/queue-tables.d.ts.map +1 -1
  10. package/dist/core/validation/queue-tables.js +4 -3
  11. package/dist/core/validation/queue-tables.js.map +1 -1
  12. package/dist/core/validation/rls-role.d.ts.map +1 -1
  13. package/dist/core/validation/rls-role.js +1 -0
  14. package/dist/core/validation/rls-role.js.map +1 -1
  15. package/dist/data/db/query-watch.js +1 -1
  16. package/dist/data/db/query-watch.js.map +1 -1
  17. package/dist/data/db/reservation.d.ts.map +1 -1
  18. package/dist/data/db/reservation.js +1 -0
  19. package/dist/data/db/reservation.js.map +1 -1
  20. package/dist/infra/alerts/handle.d.ts +3 -1
  21. package/dist/infra/alerts/handle.d.ts.map +1 -1
  22. package/dist/infra/alerts/handle.js +28 -3
  23. package/dist/infra/alerts/handle.js.map +1 -1
  24. package/dist/test/reap.js +1 -1
  25. package/dist/test/reap.js.map +1 -1
  26. package/dist/test/reset.js +1 -1
  27. package/dist/test/reset.js.map +1 -1
  28. package/dist/test/setup.d.ts.map +1 -1
  29. package/dist/test/setup.js +6 -5
  30. package/dist/test/setup.js.map +1 -1
  31. package/dist/test/watch.js +3 -2
  32. package/dist/test/watch.js.map +1 -1
  33. package/package.json +1 -1
  34. package/src/cli/commands/alerts.ts +2 -2
  35. package/src/cli/commands/db.ts +1 -1
  36. package/src/core/validation/connectivity.ts +1 -0
  37. package/src/core/validation/queue-tables.ts +4 -3
  38. package/src/core/validation/rls-role.ts +1 -0
  39. package/src/data/db/query-watch.ts +1 -1
  40. package/src/data/db/reservation.ts +1 -0
  41. package/src/infra/alerts/handle.ts +28 -4
  42. package/src/test/reap.ts +1 -1
  43. package/src/test/reset.ts +1 -1
  44. package/src/test/setup.ts +6 -5
  45. package/src/test/watch.ts +3 -2
package/src/test/setup.ts CHANGED
@@ -238,10 +238,10 @@ async function runSetup(instance: Manifold, tracker: PhaseTracker): Promise<Map<
238
238
  async function prepareRun(adminUrl: string, liveTemplates: ReadonlySet<string>, tracker: PhaseTracker): Promise<void> {
239
239
  runAdminUrl = adminUrl
240
240
  if (adminClient === null) {
241
- adminClient = postgres(adminUrl, { max: 1, onnotice: () => {} })
241
+ adminClient = postgres(adminUrl, { max: 1, fetch_types: false, onnotice: () => {} })
242
242
  }
243
243
  if (lockClient === null) {
244
- lockClient = postgres(adminUrl, { max: 1, idle_timeout: 0, max_lifetime: 0, onnotice: () => {} })
244
+ lockClient = postgres(adminUrl, { max: 1, fetch_types: false, idle_timeout: 0, max_lifetime: 0, onnotice: () => {} })
245
245
  await lockClient`SELECT pg_advisory_lock(${runLockKey(runNonce).toString()}::bigint)`
246
246
  }
247
247
  armWorkerShutdown()
@@ -416,6 +416,7 @@ async function templateIsReady(plan: TemplatePlan): Promise<boolean> {
416
416
  async function readTemplateMarker(plan: TemplatePlan): Promise<boolean> {
417
417
  const client = postgres(siblingUrl(plan.dbConfig, plan.templateDb), {
418
418
  max: 1,
419
+ fetch_types: false,
419
420
  onnotice: () => {},
420
421
  })
421
422
  try {
@@ -782,7 +783,7 @@ async function provisionTestSystemPolicy(
782
783
  beat: (detail: string) => void,
783
784
  ): Promise<void> {
784
785
  for (const url of migrateUrl === undefined ? [templateUrl] : [templateUrl, migrateUrl]) {
785
- const client = postgres(url, { max: 1, onnotice: () => {} })
786
+ const client = postgres(url, { max: 1, fetch_types: false, onnotice: () => {} })
786
787
  try {
787
788
  const tables = await client<{ ident: string; name: string }[]>`
788
789
  SELECT c.oid::regclass::text AS ident, c.relname AS name
@@ -1060,7 +1061,7 @@ async function provisionTemplateRole(
1060
1061
  `END $$`,
1061
1062
  )))
1062
1063
 
1063
- const templateClient = postgres(templateUrl, { max: 1, onnotice: () => {} })
1064
+ const templateClient = postgres(templateUrl, { max: 1, fetch_types: false, onnotice: () => {} })
1064
1065
  const templateDb = drizzle(templateClient)
1065
1066
 
1066
1067
  await templateDb.execute(sql.raw(`GRANT USAGE ON SCHEMA public TO ${roleIdent}`))
@@ -1089,7 +1090,7 @@ async function provisionTemplateRole(
1089
1090
  // grantor grants what it owns and nothing else.
1090
1091
  await grantOwnedObjects(templateClient, roleIdent, APP_ROLE_GRANTS, beat)
1091
1092
 
1092
- const migrateClient = postgres(migrateUrl, { max: 1, onnotice: () => {} })
1093
+ const migrateClient = postgres(migrateUrl, { max: 1, fetch_types: false, onnotice: () => {} })
1093
1094
  try {
1094
1095
  await grantOwnedObjects(migrateClient, roleIdent, APP_ROLE_GRANTS, beat)
1095
1096
  // The test login is the role tests connect as, and it no longer owns what
package/src/test/watch.ts CHANGED
@@ -74,7 +74,8 @@ async function sampleLine(target: TestWatchTarget): Promise<string> {
74
74
  }
75
75
 
76
76
  async function backends(adminUrl: string, databases: string[]): Promise<string[]> {
77
- const client = postgres(adminUrl, { max: 1, onnotice: () => {}, connect_timeout: 5 })
77
+ // A probe ended with a destroy timeout must not have an un-awaited type fetch in flight.
78
+ const client = postgres(adminUrl, { max: 1, onnotice: () => {}, connect_timeout: 5, fetch_types: false })
78
79
  try {
79
80
  const rows = await Promise.race([
80
81
  client<BackendRow[]>`
@@ -82,7 +83,7 @@ async function backends(adminUrl: string, databases: string[]): Promise<string[]
82
83
  round(extract(epoch FROM (now() - state_change))::numeric, 1)::text AS state_s,
83
84
  pg_blocking_pids(pid)::text AS blocked_by, query
84
85
  FROM pg_stat_activity
85
- WHERE datname = ANY(${databases}) AND pid <> pg_backend_pid()
86
+ WHERE datname IN (SELECT jsonb_array_elements_text(${client.json(databases)})) AND pid <> pg_backend_pid()
86
87
  ORDER BY datname, pid`,
87
88
  new Promise<never>((_, reject) => {
88
89
  setTimeout(() => reject(new Error('pg_stat_activity query timed out')), WATCH_QUERY_TIMEOUT_MS).unref()