diff options
| author | Balazs Nadasdi <efertone@pm.me> | 2023-06-22 08:56:40 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-06-22 15:56:40 +0900 |
| commit | e2261b63e9053fb5116dd0ef393f464bf16da190 (patch) | |
| tree | 34bb482c12d8dfd4b0cf3cd98cc1ff1bc47a33f1 /packages/backend/src/core/QueueService.ts | |
| parent | fix(client): サーバーメトリクスが90度傾いている (#11012) (diff) | |
| download | sharkey-e2261b63e9053fb5116dd0ef393f464bf16da190.tar.gz sharkey-e2261b63e9053fb5116dd0ef393f464bf16da190.tar.bz2 sharkey-e2261b63e9053fb5116dd0ef393f464bf16da190.zip | |
fix: clear queue endpoint error with redis script (#11037)
Error message:
```
ReplyError: ERR value is not an integer or out of range script: 720d973b3877f92b4fb3285ced83c97cdd204979, on @user_script:209.
```
The whole error can be tracked back to one of the arguments, which is
`Infinity` in the codebase, but it has to be a number.
The documentation in bullmq says `0` is unlimited[^1], and bullmq tries to
parse the argument with `tonumber` which returns with `-9223372036854775808` if
the argument is `"Infinity"` which is out of bound.
```
127.0.0.1:6379> eval 'return tonumber(ARGV[3])' '2' 'slippy.xyz:queue:inbox:inbox:delayed' 'slippy.xyz:queue:inbox:inbox:events' 'slippy.xyz:queue:inbox:inbox:' '1687183763944' Infinity 'delayed'
(integer) -9223372036854775808
127.0.0.1:6379>
```
[^1]: https://github.com/taskforcesh/bullmq/blob/master/src/commands/cleanJobsInSet-2.lua#L10
Signed-off-by: Efertone <efertone@pm.me>
Diffstat (limited to 'packages/backend/src/core/QueueService.ts')
| -rw-r--r-- | packages/backend/src/core/QueueService.ts | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/packages/backend/src/core/QueueService.ts b/packages/backend/src/core/QueueService.ts index 2ae8a2b754..5b7359074e 100644 --- a/packages/backend/src/core/QueueService.ts +++ b/packages/backend/src/core/QueueService.ts @@ -400,11 +400,11 @@ export class QueueService { this.deliverQueue.once('cleaned', (jobs, status) => { //deliverLogger.succ(`Cleaned ${jobs.length} ${status} jobs`); }); - this.deliverQueue.clean(0, Infinity, 'delayed'); + this.deliverQueue.clean(0, 0, 'delayed'); this.inboxQueue.once('cleaned', (jobs, status) => { //inboxLogger.succ(`Cleaned ${jobs.length} ${status} jobs`); }); - this.inboxQueue.clean(0, Infinity, 'delayed'); + this.inboxQueue.clean(0, 0, 'delayed'); } } |