Skip to content

Commit

Permalink
fix(worker): catch connection error when moveToActive is called (#2952)
Browse files Browse the repository at this point in the history
  • Loading branch information
roggervalf authored Dec 6, 2024
1 parent 0df85e1 commit 544fc7c
Show file tree
Hide file tree
Showing 5 changed files with 57 additions and 50 deletions.
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@
"@types/msgpack": "^0.0.31",
"@types/node": "^12.20.25",
"@types/semver": "^7.3.9",
"@types/sinon": "^7.5.2",
"@types/sinon": "^10.0.13",
"@types/uuid": "^3.4.10",
"@typescript-eslint/eslint-plugin": "^4.32.0",
"@typescript-eslint/parser": "^5.33.0",
Expand Down Expand Up @@ -112,7 +112,7 @@
"rimraf": "^3.0.2",
"rrule": "^2.6.9",
"semantic-release": "^19.0.3",
"sinon": "^15.1.0",
"sinon": "^18.0.1",
"test-console": "^2.0.0",
"ts-mocha": "^10.0.0",
"ts-node": "^10.7.0",
Expand Down
4 changes: 2 additions & 2 deletions src/classes/worker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -597,10 +597,10 @@ export class Worker<
this.blockUntil = await this.waiting;

if (this.blockUntil <= 0 || this.blockUntil - Date.now() < 1) {
return this.moveToActive(client, token, this.opts.name);
return await this.moveToActive(client, token, this.opts.name);
}
} catch (err) {
// Swallow error if locally paused or closing since we did force a disconnection
// Swallow error if locally not paused or not closing since we did not force a disconnection
if (
!(this.paused || this.closing) &&
isNotConnectionError(<Error>err)
Expand Down
8 changes: 4 additions & 4 deletions tests/test_job_scheduler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ describe('Job Scheduler', function () {
});

beforeEach(async function () {
this.clock = sinon.useFakeTimers();
this.clock = sinon.useFakeTimers({ shouldClearNativeTimers: true });
queueName = `test-${v4()}`;
queue = new Queue(queueName, { connection, prefix });
repeat = new Repeat(queueName, { connection, prefix });
Expand Down Expand Up @@ -516,15 +516,15 @@ describe('Job Scheduler', function () {
const delay = 5 * ONE_SECOND + 500;

const worker = new Worker(
queueName,
queueName2,
async () => {
this.clock.tick(nextTick);
},
{ autorun: false, connection, prefix },
);
const delayStub = sinon.stub(worker, 'delay').callsFake(async () => {});

await queue.upsertJobScheduler(
await queue2.upsertJobScheduler(
'test',
{
pattern: '*/2 * * * * *',
Expand Down Expand Up @@ -1211,7 +1211,7 @@ describe('Job Scheduler', function () {
});

it('should repeat 7:th day every month at 9:25', async function () {
this.timeout(8000);
this.timeout(12000);

const date = new Date('2017-02-02 7:21:42');
this.clock.setSystemTime(date);
Expand Down
4 changes: 2 additions & 2 deletions tests/test_repeat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ describe('repeat', function () {
});

beforeEach(async function () {
this.clock = sinon.useFakeTimers();
this.clock = sinon.useFakeTimers({ shouldClearNativeTimers: true });
queueName = `test-${v4()}`;
queue = new Queue(queueName, { connection, prefix });
repeat = new Repeat(queueName, { connection, prefix });
Expand Down Expand Up @@ -1110,7 +1110,7 @@ describe('repeat', function () {
});

it('should repeat 7:th day every month at 9:25', async function () {
this.timeout(8000);
this.timeout(12000);

const date = new Date('2017-02-02 7:21:42');
this.clock.setSystemTime(date);
Expand Down
87 changes: 47 additions & 40 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1002,27 +1002,27 @@
dependencies:
type-detect "4.0.8"

"@sinonjs/commons@^3.0.0":
"@sinonjs/commons@^3.0.0", "@sinonjs/commons@^3.0.1":
version "3.0.1"
resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd"
integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==
dependencies:
type-detect "4.0.8"

"@sinonjs/fake-timers@^10.3.0":
version "10.3.0"
resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66"
integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==
dependencies:
"@sinonjs/commons" "^3.0.0"

"@sinonjs/fake-timers@^11.2.2":
"@sinonjs/fake-timers@11.2.2":
version "11.2.2"
resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz#50063cc3574f4a27bd8453180a04171c85cc9699"
integrity sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==
dependencies:
"@sinonjs/commons" "^3.0.0"

"@sinonjs/fake-timers@^13.0.1":
version "13.0.5"
resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz#36b9dbc21ad5546486ea9173d6bea063eb1717d5"
integrity sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==
dependencies:
"@sinonjs/commons" "^3.0.1"

"@sinonjs/samsam@^8.0.0":
version "8.0.0"
resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.0.tgz#0d488c91efb3fa1442e26abea81759dfc8b5ac60"
Expand All @@ -1032,10 +1032,10 @@
lodash.get "^4.4.2"
type-detect "^4.0.8"

"@sinonjs/text-encoding@^0.7.2":
version "0.7.2"
resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918"
integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==
"@sinonjs/text-encoding@^0.7.3":
version "0.7.3"
resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz#282046f03e886e352b2d5f5da5eb755e01457f3f"
integrity sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==

"@tootallnate/once@2":
version "2.0.0"
Expand Down Expand Up @@ -1143,10 +1143,17 @@
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e"
integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==

"@types/sinon@^7.5.2":
version "7.5.2"
resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-7.5.2.tgz#5e2f1d120f07b9cda07e5dedd4f3bf8888fccdb9"
integrity sha512-T+m89VdXj/eidZyejvmoP9jivXgBDdkOSBVQjU9kF349NEx10QdPNGxHeZUaj1IlJ32/ewdyXJjnJxyxJroYwg==
"@types/sinon@^10.0.13":
version "10.0.20"
resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.20.tgz#f1585debf4c0d99f9938f4111e5479fb74865146"
integrity sha512-2APKKruFNCAZgx3daAyACGzWuJ028VVCUDk6o2rw/Z4PXT0ogwdV4KUegW0MwVs0Zu59auPXbbuBJHF12Sx1Eg==
dependencies:
"@types/sinonjs__fake-timers" "*"

"@types/sinonjs__fake-timers@*":
version "8.1.5"
resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz#5fd3592ff10c1e9695d377020c033116cc2889f2"
integrity sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==

"@types/uuid@^3.4.10":
version "3.4.13"
Expand Down Expand Up @@ -2548,7 +2555,7 @@ diff@^4.0.1:
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==

diff@^5.1.0:
diff@^5.1.0, diff@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531"
integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==
Expand Down Expand Up @@ -5296,16 +5303,16 @@ nice-try@^1.0.4:
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==

nise@^5.1.4:
version "5.1.9"
resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.9.tgz#0cb73b5e4499d738231a473cd89bd8afbb618139"
integrity sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==
nise@^6.0.0:
version "6.1.1"
resolved "https://registry.yarnpkg.com/nise/-/nise-6.1.1.tgz#78ea93cc49be122e44cb7c8fdf597b0e8778b64a"
integrity sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g==
dependencies:
"@sinonjs/commons" "^3.0.0"
"@sinonjs/fake-timers" "^11.2.2"
"@sinonjs/text-encoding" "^0.7.2"
"@sinonjs/commons" "^3.0.1"
"@sinonjs/fake-timers" "^13.0.1"
"@sinonjs/text-encoding" "^0.7.3"
just-extend "^6.2.0"
path-to-regexp "^6.2.1"
path-to-regexp "^8.1.0"

node-abort-controller@^3.1.1:
version "3.1.1"
Expand Down Expand Up @@ -5978,10 +5985,10 @@ path-parse@^1.0.6, path-parse@^1.0.7:
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==

path-to-regexp@^6.2.1:
version "6.2.1"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5"
integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==
path-to-regexp@^8.1.0:
version "8.2.0"
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.2.0.tgz#73990cc29e57a3ff2a0d914095156df5db79e8b4"
integrity sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==

path-type@^3.0.0:
version "3.0.0"
Expand Down Expand Up @@ -6816,17 +6823,17 @@ signale@^1.2.1:
figures "^2.0.0"
pkg-conf "^2.1.0"

sinon@^15.1.0:
version "15.2.0"
resolved "https://registry.yarnpkg.com/sinon/-/sinon-15.2.0.tgz#5e44d4bc5a9b5d993871137fd3560bebfac27565"
integrity sha512-nPS85arNqwBXaIsFCkolHjGIkFo+Oxu9vbgmBJizLAhqe6P2o3Qmj3KCUoRkfhHtvgDhZdWD3risLHAUJ8npjw==
sinon@^18.0.1:
version "18.0.1"
resolved "https://registry.yarnpkg.com/sinon/-/sinon-18.0.1.tgz#464334cdfea2cddc5eda9a4ea7e2e3f0c7a91c5e"
integrity sha512-a2N2TDY1uGviajJ6r4D1CyRAkzE9NNVlYOV1wX5xQDuAk0ONgzgRl0EjCQuRCPxOwp13ghsMwt9Gdldujs39qw==
dependencies:
"@sinonjs/commons" "^3.0.0"
"@sinonjs/fake-timers" "^10.3.0"
"@sinonjs/commons" "^3.0.1"
"@sinonjs/fake-timers" "11.2.2"
"@sinonjs/samsam" "^8.0.0"
diff "^5.1.0"
nise "^5.1.4"
supports-color "^7.2.0"
diff "^5.2.0"
nise "^6.0.0"
supports-color "^7"

slash@^3.0.0:
version "3.0.0"
Expand Down Expand Up @@ -7182,7 +7189,7 @@ supports-color@^5.3.0:
dependencies:
has-flag "^3.0.0"

supports-color@^7.0.0, supports-color@^7.1.0, supports-color@^7.2.0:
supports-color@^7, supports-color@^7.0.0, supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
Expand Down

0 comments on commit 544fc7c

Please sign in to comment.