You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
proxy: scheduleSchema gains createdOn, updatedOn and lastJobId, which
types.Schedule now requires. Without them the workspace failed to
typecheck and the new fields were missing from the OpenAPI contract.
timekeeper: reduce a batch to one occurrence per (name, key) before the
UPDATE. Postgres leaves the choice of source row unspecified when
several join one target, so a worker that picked up two minute buckets
for one schedule could store the older job id.
timekeeper: report send-it failures through a helper that cannot throw.
An 'error' event with no listener is a throw by Node's contract, and
index.ts re-promotes this one onto the PgBoss instance, so the report
could escape the handler, fail the send-it job and replay the batch.
The annotation failure now names the schedules it covers, which a bare
driver error did not distinguish from a forwarding failure.
timekeeper: the send-it singleton key is JSON.stringify([name, key])
rather than `${name}__${key}`. Underscores are legal in both a queue
name and a schedule key, so ('report_', 'daily') and ('report',
'_daily') collided and the 60s window dropped one of them. A
mixed-version deployment can fire a schedule twice in the minute a
rollout straddles.
plans, timekeeper: one named FiredSchedule type, with a camelCase jobId
quoted in the recordset like every other JSON payload crossing to SQL.
docs, types: null means "no run recorded", not "never fired". The
annotation is a separate statement from the send, and the column is new,
so a long-running schedule reads null until its first fire after an
upgrade.
tests: the database tests poll instead of sleeping 4s and check
attribution through each job's payload, so an every-minute schedule
firing twice inside the window no longer fails them. The handler unit
tests move beside the existing onSendIt coverage in scheduleTest.ts and
share its fixture, and gain a partly-failed batch, a batch repeating one
schedule, and a missing error listener.
package.json: version 12.30.0, matching the release the migration
declares.
0 commit comments