apricote / nest-pg-boss

Use pg-boss in your NestJS app
MIT License
11 stars 6 forks source link

chore(deps): update dependency pg-boss to v10 #44

Open renovate[bot] opened 1 month ago

renovate[bot] commented 1 month ago

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
pg-boss ^8.4.1 \|\| ^9.0.0 -> ^8.4.1 \|\| ^9.0.0 \|\| ^10.0.0 age adoption passing confidence
pg-boss 9.0.3 -> 10.1.3 age adoption passing confidence

Release Notes

timgit/pg-boss (pg-boss) ### [`v10.1.3`](https://redirect.github.com/timgit/pg-boss/releases/tag/10.1.3) [Compare Source](https://redirect.github.com/timgit/pg-boss/compare/10.1.2...10.1.3) #### What's Changed - fix job failure for stately queues by [@​timgit](https://redirect.github.com/timgit) in [https://github.com/timgit/pg-boss/pull/493](https://redirect.github.com/timgit/pg-boss/pull/493) **Full Changelog**: https://github.com/timgit/pg-boss/compare/10.1.2...10.1.3 ### [`v10.1.2`](https://redirect.github.com/timgit/pg-boss/releases/tag/10.1.2) [Compare Source](https://redirect.github.com/timgit/pg-boss/compare/10.1.1...10.1.2) #### What's Changed - Include `expireInSeconds` in the `Job` type by [@​abdel](https://redirect.github.com/abdel) in [https://github.com/timgit/pg-boss/pull/489](https://redirect.github.com/timgit/pg-boss/pull/489) - Add cron options to constructor options type by [@​louis-vs](https://redirect.github.com/louis-vs) in [https://github.com/timgit/pg-boss/pull/491](https://redirect.github.com/timgit/pg-boss/pull/491) #### New Contributors - [@​abdel](https://redirect.github.com/abdel) made their first contribution in [https://github.com/timgit/pg-boss/pull/489](https://redirect.github.com/timgit/pg-boss/pull/489) - [@​louis-vs](https://redirect.github.com/louis-vs) made their first contribution in [https://github.com/timgit/pg-boss/pull/491](https://redirect.github.com/timgit/pg-boss/pull/491) **Full Changelog**: https://github.com/timgit/pg-boss/compare/10.1.1...10.1.2 ### [`v10.1.1`](https://redirect.github.com/timgit/pg-boss/releases/tag/10.1.1) [Compare Source](https://redirect.github.com/timgit/pg-boss/compare/10.1.0...10.1.1) #### What's Changed - job table pkey by [@​timgit](https://redirect.github.com/timgit) in [https://github.com/timgit/pg-boss/pull/486](https://redirect.github.com/timgit/pg-boss/pull/486) **Full Changelog**: https://github.com/timgit/pg-boss/compare/10.1.0...10.1.1 ### [`v10.1.0`](https://redirect.github.com/timgit/pg-boss/releases/tag/10.1.0) [Compare Source](https://redirect.github.com/timgit/pg-boss/compare/10.0.6...10.1.0) #### What's Changed - add debounce support on insert() via singletonSeconds by [@​timgit](https://redirect.github.com/timgit) in [https://github.com/timgit/pg-boss/pull/485](https://redirect.github.com/timgit/pg-boss/pull/485) **Full Changelog**: https://github.com/timgit/pg-boss/compare/10.0.6...10.1.0 ### [`v10.0.6`](https://redirect.github.com/timgit/pg-boss/releases/tag/10.0.6) [Compare Source](https://redirect.github.com/timgit/pg-boss/compare/10.0.5...10.0.6) #### What's Changed - Retry limit default for vanilla SQL by [@​timgit](https://redirect.github.com/timgit) in [https://github.com/timgit/pg-boss/pull/482](https://redirect.github.com/timgit/pg-boss/pull/482) **Full Changelog**: https://github.com/timgit/pg-boss/compare/10.0.5...10.0.6 ### [`v10.0.5`](https://redirect.github.com/timgit/pg-boss/releases/tag/10.0.5) [Compare Source](https://redirect.github.com/timgit/pg-boss/compare/10.0.4...10.0.5) #### What's Changed - fix scheduling debounce by [@​timgit](https://redirect.github.com/timgit) in [https://github.com/timgit/pg-boss/pull/479](https://redirect.github.com/timgit/pg-boss/pull/479) **Full Changelog**: https://github.com/timgit/pg-boss/compare/10.0.4...10.0.5 ### [`v10.0.4`](https://redirect.github.com/timgit/pg-boss/releases/tag/10.0.4) [Compare Source](https://redirect.github.com/timgit/pg-boss/compare/10.0.3...10.0.4) #### What's Changed - createQueue should not throw if it exists by [@​timgit](https://redirect.github.com/timgit) in [https://github.com/timgit/pg-boss/pull/478](https://redirect.github.com/timgit/pg-boss/pull/478) **Full Changelog**: https://github.com/timgit/pg-boss/compare/10.0.3...10.0.4 ### [`v10.0.3`](https://redirect.github.com/timgit/pg-boss/releases/tag/10.0.3) [Compare Source](https://redirect.github.com/timgit/pg-boss/compare/10.0.2...10.0.3) #### What's Changed - Fixed `priority: false` option in `fetch()` and `work()` - Fixed excessive worker polling when using the minimum 500ms polling interval **Full Changelog**: https://github.com/timgit/pg-boss/compare/10.0.2...10.0.3 ### [`v10.0.2`](https://redirect.github.com/timgit/pg-boss/releases/tag/10.0.2) [Compare Source](https://redirect.github.com/timgit/pg-boss/compare/10.0.1...10.0.2) #### What's Changed - Update README.md - update example with create queue by [@​tlebeitsuk](https://redirect.github.com/tlebeitsuk) in [https://github.com/timgit/pg-boss/pull/468](https://redirect.github.com/timgit/pg-boss/pull/468) - feat(Typescript): Generic getJobById by [@​danilofuchs](https://redirect.github.com/danilofuchs) in [https://github.com/timgit/pg-boss/pull/471](https://redirect.github.com/timgit/pg-boss/pull/471) #### New Contributors - [@​tlebeitsuk](https://redirect.github.com/tlebeitsuk) made their first contribution in [https://github.com/timgit/pg-boss/pull/468](https://redirect.github.com/timgit/pg-boss/pull/468) - [@​danilofuchs](https://redirect.github.com/danilofuchs) made their first contribution in [https://github.com/timgit/pg-boss/pull/471](https://redirect.github.com/timgit/pg-boss/pull/471) **Full Changelog**: https://github.com/timgit/pg-boss/compare/10.0.1...10.0.2 ### [`v10.0.1`](https://redirect.github.com/timgit/pg-boss/releases/tag/10.0.1) [Compare Source](https://redirect.github.com/timgit/pg-boss/compare/10.0.0...10.0.1) - `start()` resolves instance after started **Full Changelog**: https://github.com/timgit/pg-boss/compare/10.0.0...10.0.1 ### [`v10.0.0`](https://redirect.github.com/timgit/pg-boss/releases/tag/10.0.0) [Compare Source](https://redirect.github.com/timgit/pg-boss/compare/9.0.3...10.0.0) **:warning: Please review items listed as MAJOR if upgrading from v9 :warning:** - MAJOR: Node 20 is now the minimum required version - MAJOR: PostgreSQL 13 is now the minimum required version. The dependency on the pgcrypto extension has been removed. - MAJOR: Automatic migration from v9 or lower is not currently available. A new partitioned job table was created, as well as new queue storage policies that make it difficult to honor the previous unique constraints in an upgrade scenario. The safest option is to manually move jobs from pgboss 9 to v10 via the API, or at least use the API to prepare for a manual migration via `INSERT ... SELECT`. - MAJOR: **Job retries are now opt-out instead of opt-in.** The default `retryLimit` is now 2 retries. This will cause an issue for any job handlers that aren't idempotent. Consider setting `retryLimit=0` on these queues if needed. - MAJOR: **Queues must now be created before API or direct SQL INSERT will work. See migration notes below.** Each queue has a storage policy (see below) and represents a child table in a partitioning hierarchy. Additionally, queues store default retry and retention policies that will be auto-applied to all new jobs. See the docs for more on queue operation such as \`createQueue(). - **`standard`** (default): Standard queues are the default queue policy, which supports all existing features. This will provision a dedicated job partition for all jobs with this name. - **`short`**: Short queues only allow 1 item to be queued (in created state), which replaces the previous `sendSingleton()` and `sendOnce()` functions. - **`singleton`**: Singleton queues only allow 1 item to be active, which replaces the previous `fetch()` option `enforceSingletonQueueActiveLimit`. - **`stately`**: Stately queues are a combination of `short` and `singleton`, only allowing 1 job to be queued and 1 job active. - MAJOR: The handler function in `work()` was standardized to always receive an array of jobs. One simple way to migrate a single job handler (batchSize=1) is a destructuring assignment like the following. ```js // v9 await boss.work(queue, (job) => handler(job)) // v10 await boss.work(queue, ([ job ]) => handler(job)) ``` - MAJOR: `teamSize`, `teamConcurrency`, and `teamRefill` were removed from `work()` to simplify worker polling use cases. As noted above, `enforceSingletonQueueActiveLimit` was also removed. - MAJOR: **Dead letter queues replace completion jobs.** Failed jobs will be added to optional dead letter queues after exhausting all retries. This is preferred over completion jobs to gain retry support via `work()`. Additionally, dead letter queues only make a copy of the job if it fails, instead of filling up the job table with numerous, mostly unneeded completion jobs. - `onComplete` option in `send()` and `insert()` has been removed - `onComplete()`, `offComplete()`, and `fetchCompleted()` have been removed - `deadLetter` option added to `send()` and `insert()` and `createQueue()` - MAJOR: Dropped the following API functions in favor of policy queues - `sendOnce()` - `sendSingleton()` - MAJOR: The following API functions now require name arguments - `complete(name, id, data)` - `fail(name, id, data)` - `cancel(name, id)` - `getJobById(name, id)` - MAJOR: The contract for `getJobById()` and the `includeMetadata` option for `fetch()` and `work()` were standardized to the following. ```js interface JobWithMetadata { id: string; name: string; data: T; priority: number; state: 'created' | 'retry' | 'active' | 'completed' | 'cancelled' | 'failed'; retryLimit: number; retryCount: number; retryDelay: number; retryBackoff: boolean; startAfter: Date; startedOn: Date; singletonKey: string | null; singletonOn: Date | null; expireIn: PostgresInterval; createdOn: Date; completedOn: Date | null; keepUntil: Date; deadLetter: string, policy: string, output: object } ``` - MAJOR: The columns in the job and archive table were renamed to standardize to snake case. A sample job table script showing these is below. ```sql CREATE TABLE pgboss.job ( id uuid not null default gen_random_uuid(), name text not null, priority integer not null default(0), data jsonb, state pgboss.job_state not null default('created'), retry_limit integer not null default(0), retry_count integer not null default(0), retry_delay integer not null default(0), retry_backoff boolean not null default false, start_after timestamp with time zone not null default now(), started_on timestamp with time zone, singleton_key text, singleton_on timestamp without time zone, expire_in interval not null default interval '15 minutes', created_on timestamp with time zone not null default now(), completed_on timestamp with time zone, keep_until timestamp with time zone NOT NULL default now() + interval '14 days', output jsonb, dead_letter text, policy text, CONSTRAINT job_pkey PRIMARY KEY (name, id) ) PARTITION BY LIST (name) ``` - MAJOR: `work()` options `newJobCheckInterval` and `newJobCheckIntervalSeconds` have been replaced by `pollingIntervalSeconds`. The minimum value is 0.5, making 500ms the minimum allowed value. - MAJOR: `stop()` option `destroy` was renamed to `close`. Previously, `destroy` was defaulted to false, to leave the internal connection database open which was created by `start()`. Now, `close` will default to true. - MAJOR: `noSupervisor` and `noScheduling` were renamed to a more intuitive naming convention. - If using `noSupervisor: true` to disable mainteance, instead use `supervise: false` - If using `noScheduling: true` to disable scheduled cron jobs, use `schedule: false` - MINOR: Added new function `deleteJob()` to provide fetch -> delete semantics when job throttling and/or storage is not desired. - MINOR: `send()` and `insert()` cascade configuration from policy queues (if they exist) and then global settings in the constructor. Use the following table to help identify which settings are inherited and when. | Setting | API | Queue | Constructor | | - | - | - | - | | `retryLimit` | `send()`, `insert()`, `createQueue()` | :heavy_check_mark: | :heavy_check_mark: | | `retryDelay` | `send()`, `insert()`, `createQueue()` | :heavy_check_mark: | :heavy_check_mark: | | `retryBackoff` | `send()`, `insert()`, `createQueue()` | :heavy_check_mark: | :heavy_check_mark: | | `expireInSeconds` | `send()`, `insert()`, `createQueue()` | :heavy_check_mark: | :heavy_check_mark: | | `expireInMinutes` | `send()`, `createQueue()` | :heavy_check_mark: | :heavy_check_mark: | | `expireInHours` | `send()`, `createQueue()` | :heavy_check_mark: | :heavy_check_mark: | | `retentionSeconds` | `send()`, `createQueue()` | :heavy_check_mark: | :heavy_check_mark: | | `retentionMinutes` | `send()`, `createQueue()` | :heavy_check_mark: | :heavy_check_mark: | | `retentionHours` | `send()`, `createQueue()` | :heavy_check_mark: | :heavy_check_mark: | | `retentionDays` | `send()`, `createQueue()` | :heavy_check_mark: | :heavy_check_mark: | | `deadLetter` | `send()`, `insert()`, `createQueue()` | :heavy_check_mark: | | - MINOR: Added primary key to job archive to support replication use cases such as read replicas or high availability standbys. - MINOR: Added a new constructor option, `migrate:false`, to block an instance from attempting to migrate to the latest database schema version. This is useful if the configured credentials don't have schema modification privileges or complete control of when and how migrations are run is required. - MINOR: The `expired` failed state has been consolidated into `failed` for simplicity. - MINOR: Added `priority:false` option to `work()` and `fetch()` to opt out of priority sorting during job fetching. If a queue is very large and not using the priority feature, this may help job fetch performance. - MINOR: Added a maintenance function, `maintain()`, if needed for serverless and/or externally scheduled maintenance use cases. - MINOR: Added functions `isInstalled()` and `schemaVersion()` - MINOR: `stop()` will now wait for the default graceful stop timeout (30s) before resolving its promise. The `stopped` event will still emit. If you want to the original behavior, set the new `wait` option to `false`. - MINOR: Added `id` property as an option to `send()` for pre-assigning the job id. Previously, only `insert()` supported pre-assignment. - MINOR: Removed internal usage of md5() hashing function for those needing FIPS compliance. #### Migration Notes This section will contain notes and tips on different migration strategies from v9 and below to v10. Since auto-migration is not supported, there are a few manual options to get all of your jobs into v10 from v9. ##### API option For each queue, use `createQueue()`, `fetch()`, `insert()` to pull jobs from v9 and insert into v10. ##### SQL option Something along the lines of `INSERT INTO v10.job (...) SELECT ... FROM v9.job` is possible in SQL, but the queues have to be created first. 1. Run `SELECT pgboss.create_queue(name, options)`. 2. Insert records into `pgboss.job`. ##### Hybrid option 1. Create all required queues using the API 2. Now that queues are created, iterate through each source queue, and insert only queued items (state=created) in SQL. ```js const queues = await boss.getQueues(); for (const queue of queues) { try { const sql = ` INSERT INTO ${targetSchema}.job ( id, name, priority, data, retry_limit, retry_count, retry_delay, retry_backoff, start_after, singleton_key, singleton_on, expire_in, created_on, keep_until, output, policy ) SELECT id, name, priority, data, retryLimit, retryCount, retryDelay, retryBackoff, startAfter, singletonKey, singletonOn, expireIn, createdOn, keepUntil, output jsonb, '${queue.policy}' as policy FROM ${sourceSchema}.job WHERE name = '${queue.name}' AND state = 'created' ON CONFLICT DO NOTHING `; const { rowCount } = await client.query(sql); if (rowCount) { log.info(`pg-boss v10 migration: Migrated ${rowCount} jobs in queue ${queue.name}`); } } catch (error) { log.error(`pg-boss v10 migration: error copying jobs from '${queue.name}': ${error.message}`); } } ``` #### What's Changed - Update readme.md by [@​LavredisG](https://redirect.github.com/LavredisG) in [https://github.com/timgit/pg-boss/pull/431](https://redirect.github.com/timgit/pg-boss/pull/431) - v10 by [@​timgit](https://redirect.github.com/timgit) in [https://github.com/timgit/pg-boss/pull/425](https://redirect.github.com/timgit/pg-boss/pull/425) #### New Contributors - [@​LavredisG](https://redirect.github.com/LavredisG) made their first contribution in [https://github.com/timgit/pg-boss/pull/431](https://redirect.github.com/timgit/pg-boss/pull/431) **Full Changelog**: https://github.com/timgit/pg-boss/compare/9.0.3...10.0.0

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

â™» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.



This PR was generated by Mend Renovate. View the repository job log.