@teamscala/service-boot 0.23.287 → 0.23.288
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/pg-boss-mount.ts +22 -0
package/package.json
CHANGED
package/src/pg-boss-mount.ts
CHANGED
|
@@ -225,6 +225,28 @@ export async function mountPgBoss(
|
|
|
225
225
|
handlerSlug: config.handler_slug,
|
|
226
226
|
});
|
|
227
227
|
}
|
|
228
|
+
|
|
229
|
+
// A SUCCESSFUL mount emitted nothing until now, while every failure
|
|
230
|
+
// path above recorded an event — so the one state you most need to
|
|
231
|
+
// confirm ("is this job actually scheduled on this service?") was the
|
|
232
|
+
// only one with no evidence. Combined with resolveHandler THROWING
|
|
233
|
+
// into boss.work() rather than warning, that made "never scheduled"
|
|
234
|
+
// and "fired and threw" externally identical, and cost a
|
|
235
|
+
// scheduled_job relocation that had to be reverted undiagnosed on
|
|
236
|
+
// 2026-07-30. Emitting on success makes the mount set queryable
|
|
237
|
+
// (event-log-is-the-only-durable-event-log).
|
|
238
|
+
const mounted = jobs[jobs.length - 1];
|
|
239
|
+
recordEvent({
|
|
240
|
+
kind: "pgboss.job.mounted",
|
|
241
|
+
payload: {
|
|
242
|
+
service: ctx.serviceSlug,
|
|
243
|
+
slug: entry.slug,
|
|
244
|
+
queue: queueName,
|
|
245
|
+
handler: config.handler_slug,
|
|
246
|
+
cron: mounted?.cron ?? null,
|
|
247
|
+
interval_seconds: mounted?.intervalSeconds ?? null,
|
|
248
|
+
},
|
|
249
|
+
});
|
|
228
250
|
} catch (err) {
|
|
229
251
|
// crash-isolation for the mount path: a work()/schedule() failure
|
|
230
252
|
// (e.g. DB not open, queue conflict) degrades to "this job unavailable"
|