Skip to content

Commit

Permalink
joh/eastern slug (#190250)
Browse files Browse the repository at this point in the history
* more explicit error handling/logging when post messages fails

#188347

* print the worker name that fails to send message
  • Loading branch information
jrieken authored Aug 11, 2023
1 parent 6e2cace commit f6a8e3a
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions src/vs/base/browser/defaultWorkerFactory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
*--------------------------------------------------------------------------------------------*/

import { createTrustedTypesPolicy } from 'vs/base/browser/trustedTypes';
import { onUnexpectedError } from 'vs/base/common/errors';
import { COI } from 'vs/base/common/network';
import { IWorker, IWorkerCallback, IWorkerFactory, logOnceWebWorkerWarning } from 'vs/base/common/worker/simpleWorker';

Expand Down Expand Up @@ -85,11 +86,13 @@ function isPromiseLike<T>(obj: any): obj is PromiseLike<T> {
*/
class WebWorker implements IWorker {

private id: number;
private readonly id: number;
private readonly label: string;
private worker: Promise<Worker> | null;

constructor(moduleId: string, id: number, label: string, onMessageCallback: IWorkerCallback, onErrorCallback: (err: any) => void) {
this.id = id;
this.label = label;
const workerOrPromise = getWorker(label);
if (isPromiseLike(workerOrPromise)) {
this.worker = workerOrPromise;
Expand All @@ -113,7 +116,14 @@ class WebWorker implements IWorker {
}

public postMessage(message: any, transfer: Transferable[]): void {
this.worker?.then(w => w.postMessage(message, transfer));
this.worker?.then(w => {
try {
w.postMessage(message, transfer);
} catch (err) {
onUnexpectedError(err);
onUnexpectedError(new Error(`FAILED to post message to '${this.label}'-worker`, { cause: err }));
}
});
}

public dispose(): void {
Expand Down

0 comments on commit f6a8e3a

Please sign in to comment.