diff --git a/package-lock.json b/package-lock.json index ca5e4c7..f12801f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "axios": "^1.3.3", "bcrypt": "^5.1.0", "busboy": "^1.6.0", - "civkit": "^0.8.4-92aafc5", + "civkit": "^0.8.4-ef21ac9", "core-js": "^3.37.1", "cors": "^2.8.5", "dayjs": "^1.11.9", @@ -3989,9 +3989,9 @@ } }, "node_modules/civkit": { - "version": "0.8.4-92aafc5", - "resolved": "https://registry.npmjs.org/civkit/-/civkit-0.8.4-92aafc5.tgz", - "integrity": "sha512-Je5DTJs8H3fl3WYBbvKwqTzfUm5NuHt9WIrN3hJ5AHosQWGuyLrQf7N2lKo50aiTJdixEr3NDHqUwQ1KY59yoA==", + "version": "0.8.4-ef21ac9", + "resolved": "https://registry.npmjs.org/civkit/-/civkit-0.8.4-ef21ac9.tgz", + "integrity": "sha512-CAGzSIcXeBbYmhweTBqTqoroIpxI/dH87KhlT6MzokOiMpRcs02NJXM5V/KPbZ5hTqT9jii2xGd1CwsvTYZezg==", "license": "AGPL", "dependencies": { "lodash": "^4.17.21", diff --git a/package.json b/package.json index 7c53b76..b163074 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "axios": "^1.3.3", "bcrypt": "^5.1.0", "busboy": "^1.6.0", - "civkit": "^0.8.4-92aafc5", + "civkit": "^0.8.4-ef21ac9", "core-js": "^3.37.1", "cors": "^2.8.5", "dayjs": "^1.11.9", diff --git a/src/services/blackhole-detector.ts b/src/services/blackhole-detector.ts index 9769720..abe1070 100644 --- a/src/services/blackhole-detector.ts +++ b/src/services/blackhole-detector.ts @@ -53,7 +53,10 @@ export class BlackHoleDetector extends AsyncService { if (this.strikes >= 3) { this.logger.error(`BlackHole detected for ${this.strikes} strikes, last worked: ${Math.ceil(dt / 1000)}s ago, concurrentRequests: ${this.concurrentRequests}`); - this.emit('error', new Error(`BlackHole detected for ${this.strikes} strikes, last worked: ${Math.ceil(dt / 1000)}s ago, concurrentRequests: ${this.concurrentRequests}`)); + process.nextTick(() => { + this.emit('error', new Error(`BlackHole detected for ${this.strikes} strikes, last worked: ${Math.ceil(dt / 1000)}s ago, concurrentRequests: ${this.concurrentRequests}`)); + // process.exit(1); + }); } } diff --git a/src/services/finalizer.ts b/src/services/finalizer.ts index 9fe4c41..8a17d5f 100644 --- a/src/services/finalizer.ts +++ b/src/services/finalizer.ts @@ -25,6 +25,9 @@ export class FinalizerService extends AbstractFinalizerService { super(...arguments); } + override onUnhandledRejection(err: unknown, _triggeringPromise: Promise): void { + this.logger.error(`Unhandled promise rejection in pid ${process.pid}`, { err }); + } } const instance = container.resolve(FinalizerService); diff --git a/src/services/puppeteer.ts b/src/services/puppeteer.ts index 9c84983..07f3007 100644 --- a/src/services/puppeteer.ts +++ b/src/services/puppeteer.ts @@ -1012,7 +1012,6 @@ export class PuppeteerControl extends AsyncService { } let nextSnapshotDeferred = Defer(); - nextSnapshotDeferred.promise.catch(() => 'just dont crash anything'); const crippleListener = () => nextSnapshotDeferred.reject(new ServiceCrashedError({ message: `Browser crashed, try again` })); this.once('crippled', crippleListener); nextSnapshotDeferred.promise.finally(() => { @@ -1077,10 +1076,10 @@ export class PuppeteerControl extends AsyncService { } this.logger.warn(`Page ${sn}: Browsing of ${url} failed`, { err: marshalErrorLike(err) }); - return Promise.reject(new AssertionFailureError({ + return new AssertionFailureError({ message: `Failed to goto ${url}: ${err}`, cause: err, - })); + }); }).then(async (stuff) => { // This check is necessary because without snapshot, the condition of the page is unclear // Calling evaluate directly may stall the process. @@ -1145,7 +1144,6 @@ export class PuppeteerControl extends AsyncService { ); } }); - gotoPromise.catch(() => 'just dont crash anything'); let waitForPromise: Promise | undefined; if (options.waitForSelector) { const t0 = Date.now();