Remove error message from event_label.
The event_label is meant for rough classification, it should also not
contain any potentially sensitive information. Error message on the
other hand is freeform and can often contain user input.
Google-Bug-Id: b/250822247
Release-Notes: skip
Change-Id: Idc0e3ae77b0cd5bc5d5d3c98156979e2159ddb7a
diff --git a/polygerrit-ui/app/elements/change-list/gr-dashboard-view/gr-dashboard-view.ts b/polygerrit-ui/app/elements/change-list/gr-dashboard-view/gr-dashboard-view.ts
index 0a90775..d178880 100644
--- a/polygerrit-ui/app/elements/change-list/gr-dashboard-view/gr-dashboard-view.ts
+++ b/polygerrit-ui/app/elements/change-list/gr-dashboard-view/gr-dashboard-view.ts
@@ -399,7 +399,7 @@
})
.catch(err => {
fireTitleChange(this, title || this.computeTitle(user));
- this.reporting.error(err);
+ this.reporting.error('Dashboard reload', err);
})
.finally(() => {
this.loading = false;
diff --git a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.ts b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.ts
index 77a0eb2..88bf45e 100644
--- a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.ts
+++ b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions.ts
@@ -1362,7 +1362,10 @@
revert dialog after revert button is pressed. */
this.restApiService.getChanges(0, query).then(changes => {
if (!changes) {
- this.reporting.error(new Error('changes is undefined'));
+ this.reporting.error(
+ 'Change Actions',
+ new Error('getChanges returns undefined')
+ );
return;
}
assertIsDefined(this.confirmRevertDialog, 'confirmRevertDialog');
@@ -1669,7 +1672,10 @@
);
break;
default:
- this.reporting.error(new Error('invalid revert type'));
+ this.reporting.error(
+ 'Change Actions',
+ new Error('invalid revert type')
+ );
}
}
@@ -2014,7 +2020,10 @@
.getChanges(0, query, undefined, options)
.then(changes => {
if (!changes) {
- this.reporting.error(new Error('getChanges returns undefined'));
+ this.reporting.error(
+ 'Change Actions',
+ new Error('getChanges returns undefined')
+ );
return;
}
this.confirmCherrypick!.updateChanges(changes);
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
index 8293daa..e0fcd88 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.ts
@@ -826,7 +826,10 @@
this.pluginTabsContentEndpoints.length !==
this.pluginTabsHeaderEndpoints.length
) {
- this.reporting.error(new Error('Mismatch of headers and content.'));
+ this.reporting.error(
+ 'Plugin change-view-tab',
+ new Error('Mismatch of headers and content.')
+ );
}
})
.then(() => this.initActiveTab());
diff --git a/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.ts b/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.ts
index 731f227..3e8530c 100644
--- a/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.ts
+++ b/polygerrit-ui/app/elements/change/gr-file-list/gr-file-list.ts
@@ -847,19 +847,28 @@
this.dynamicHeaderEndpoints.length !==
this.dynamicContentEndpoints.length
) {
- this.reporting.error(new Error('dynamic header/content mismatch'));
+ this.reporting.error(
+ 'Plugin change-view-file-list',
+ new Error('dynamic header/content mismatch')
+ );
}
if (
this.dynamicPrependedHeaderEndpoints.length !==
this.dynamicPrependedContentEndpoints.length
) {
- this.reporting.error(new Error('dynamic header/content mismatch'));
+ this.reporting.error(
+ 'Plugin change-view-file-list',
+ new Error('dynamic prepend header/content mismatch')
+ );
}
if (
this.dynamicHeaderEndpoints.length !==
this.dynamicSummaryEndpoints.length
) {
- this.reporting.error(new Error('dynamic header/content mismatch'));
+ this.reporting.error(
+ 'Plugin change-view-file-list',
+ new Error('dynamic header/summary mismatch')
+ );
}
});
this.diffCursor = new GrDiffCursor();
@@ -2350,6 +2359,7 @@
const diffElem = this.findDiffByPath(path, diffElements);
if (!diffElem) {
this.reporting.error(
+ 'GrFileList',
new Error(`Did not find <gr-diff-host> element for ${path}`)
);
return;
@@ -2364,6 +2374,7 @@
const diffElem = this.findDiffByPath(path, diffElements);
if (!diffElem) {
this.reporting.error(
+ 'GrFileList',
new Error(`Did not find <gr-diff-host> element for ${path}`)
);
return;
diff --git a/polygerrit-ui/app/elements/change/gr-messages-list/gr-messages-list.ts b/polygerrit-ui/app/elements/change/gr-messages-list/gr-messages-list.ts
index 97b20dc..5417127 100644
--- a/polygerrit-ui/app/elements/change/gr-messages-list/gr-messages-list.ts
+++ b/polygerrit-ui/app/elements/change/gr-messages-list/gr-messages-list.ts
@@ -448,6 +448,7 @@
if (!el && this.showAllActivity) {
this.reporting.error(
+ 'GrMessagesList scroll',
new Error(`Failed to scroll to message: ${messageID}`)
);
return;
diff --git a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.ts b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.ts
index 96a2aba..cd42a9f 100644
--- a/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.ts
+++ b/polygerrit-ui/app/elements/change/gr-reply-dialog/gr-reply-dialog.ts
@@ -1756,6 +1756,7 @@
return 'No additions to the attention set.';
}
this.reporting.error(
+ 'computeDoNotUpdateMessage',
new Error(
'computeDoNotUpdateMessage()' +
'should not be called when users were added to the attention set.'
@@ -1829,6 +1830,7 @@
entry = suggestion.group;
} else {
this.reporting.error(
+ 'Reviewer Suggestion',
new Error(`Suggestion is neither account nor group: ${suggestion}`)
);
return false;
@@ -1935,6 +1937,7 @@
return;
}
this.reporting.error(
+ 'confirmPendingReviewer',
new Error('confirmPendingReviewer called without pending confirm')
);
}
diff --git a/polygerrit-ui/app/elements/core/gr-error-manager/gr-error-manager.ts b/polygerrit-ui/app/elements/core/gr-error-manager/gr-error-manager.ts
index 8d9f223..e663ae1 100644
--- a/polygerrit-ui/app/elements/core/gr-error-manager/gr-error-manager.ts
+++ b/polygerrit-ui/app/elements/core/gr-error-manager/gr-error-manager.ts
@@ -259,7 +259,7 @@
);
}
}
- this.reporting.error(new Error(`Server error: ${errorText}`));
+ this.reporting.error('Server error', new Error(errorText));
});
};
@@ -316,7 +316,7 @@
private readonly handleNetworkError = (e: NetworkErrorEvent) => {
this._showAlert('Server unavailable');
- this.reporting.error(new Error(`network error: ${e.detail.error.message}`));
+ this.reporting.error('Network error', new Error(e.detail.error.message));
};
// TODO(dhruvsri): allow less priority alerts to override high priority alerts
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts
index 91c9dbcb..baf89c0 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts
@@ -497,9 +497,13 @@
if (e === DELAYED_CANCELLATION) {
// Do nothing.
} else if (e instanceof Error) {
- this.reporting.error(e);
+ this.reporting.error('GrDiffHost Reload:', e);
} else {
- this.reporting.error(new Error('reloadPromise error'), undefined, e);
+ this.reporting.error(
+ 'GrDiffHost Reload:',
+ new Error('reloadPromise error'),
+ e
+ );
}
}
await this.updateComplete;
@@ -570,11 +574,11 @@
return;
} catch (e: unknown) {
if (e instanceof Error) {
- this.reporting.error(e);
+ this.reporting.error('GrDiffHost Reload:', e);
} else {
this.reporting.error(
+ 'GrDiffHost Reload:',
new Error('reloadInternal error'),
- undefined,
e
);
}
@@ -657,9 +661,13 @@
if (e instanceof Response) {
this.handleGetDiffError(e);
} else if (e instanceof Error) {
- this.reporting.error(e);
+ this.reporting.error('GrDiffHost Reload:', e);
} else {
- this.reporting.error(new Error('reload error'), undefined, e);
+ this.reporting.error(
+ 'GrDiffHost Reload:',
+ new Error('reload error'),
+ e
+ );
}
} finally {
this.reporting.timeEnd(Timing.DIFF_TOTAL, this.timingDetails());
@@ -884,12 +892,12 @@
});
})
.catch(err => {
- this.reporting.error(err);
+ this.reporting.error('GrDiffHost Coverage', err);
});
});
})
.catch(err => {
- this.reporting.error(err);
+ this.reporting.error('GrDiffHost Coverage', err);
});
}
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.ts b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.ts
index 18322fe..6ad8e2f 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.ts
@@ -1669,6 +1669,7 @@
// If route is of type /comment/<commentId>/ then no patchNum is present
if (!viewState.patchNum && !viewState.commentLink) {
this.reporting.error(
+ 'GrDiffView',
new Error(`Invalid diff view URL, no patchNum found: ${this.viewState}`)
);
return;
diff --git a/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view.ts b/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view.ts
index 0b1a2de..a15a575 100644
--- a/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view.ts
+++ b/polygerrit-ui/app/elements/edit/gr-editor-view/gr-editor-view.ts
@@ -469,7 +469,7 @@
this.saveEdit().then(() => {
const handleError: ErrorCallback = response => {
this.showAlert(PUBLISH_FAILED_MSG);
- this.reporting.error(new Error(response?.statusText));
+ this.reporting.error('/edit:publish', new Error(response?.statusText));
};
this.showAlert(PUBLISHING_EDIT_MSG);
diff --git a/polygerrit-ui/app/elements/plugins/gr-endpoint-decorator/gr-endpoint-decorator.ts b/polygerrit-ui/app/elements/plugins/gr-endpoint-decorator/gr-endpoint-decorator.ts
index d6d3775..61279cf 100644
--- a/polygerrit-ui/app/elements/plugins/gr-endpoint-decorator/gr-endpoint-decorator.ts
+++ b/polygerrit-ui/app/elements/plugins/gr-endpoint-decorator/gr-endpoint-decorator.ts
@@ -133,8 +133,9 @@
const paramName = paramEl.name;
if (!paramName) {
this.reporting.error(
+ `Plugin '${pluginName}', endpoint '${this.name}'`,
new Error(
- `plugin '${pluginName}' endpoint '${this.name}': param is missing a name.`
+ `Plugin '${pluginName}', endpoint '${this.name}': param is missing a name.`
)
);
return;
@@ -155,9 +156,10 @@
// and the return type is NodeJS.Timeout object
(timeoutId = window.setTimeout(() => {
this.reporting.error(
+ `Plugin '${pluginName}', endpoint '${this.name}'`,
new Error(
- 'Timeout waiting for endpoint properties initialization: ' +
- `plugin ${pluginName}, endpoint ${this.name}`
+ `Plugin ${pluginName}, endpoint ${this.name}: ` +
+ 'Timeout waiting for endpoint properties initialization'
)
);
}, INIT_PROPERTIES_TIMEOUT_MS))
diff --git a/polygerrit-ui/app/elements/plugins/gr-event-helper/gr-event-helper.ts b/polygerrit-ui/app/elements/plugins/gr-event-helper/gr-event-helper.ts
index ecac9bc..9915d4c 100644
--- a/polygerrit-ui/app/elements/plugins/gr-event-helper/gr-event-helper.ts
+++ b/polygerrit-ui/app/elements/plugins/gr-event-helper/gr-event-helper.ts
@@ -47,8 +47,8 @@
mayContinue = callback(e);
} catch (exception: unknown) {
this.reporting.error(
+ 'GrEventHelper',
new Error('event listener callback error'),
- undefined,
exception
);
}
diff --git a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-annotation-actions-js-api.ts b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-annotation-actions-js-api.ts
index 157373e..7ab4689 100644
--- a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-annotation-actions-js-api.ts
+++ b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-annotation-actions-js-api.ts
@@ -32,7 +32,10 @@
this.reporting.trackApi(this.plugin, 'annotation', 'setCoverageProvider');
if (this.coverageProvider) {
this.reporting.error(
- new Error(`Overwriting cov provider: ${this.plugin.getPluginName()}`)
+ 'Annotation Plugin',
+ new Error(
+ `Overwriting coverage provider: ${this.plugin.getPluginName()}`
+ )
);
}
this.coverageProvider = coverageProvider;
diff --git a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-change-actions-js-api.ts b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-change-actions-js-api.ts
index f77287b..b8bfd21 100644
--- a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-change-actions-js-api.ts
+++ b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-change-actions-js-api.ts
@@ -77,7 +77,10 @@
*/
private setEl(el?: GrChangeActionsElement) {
if (!el) {
- this.reporting.error(new Error('changeActions() API is not ready'));
+ this.reporting.error(
+ 'GrChangeActionsInterface',
+ new Error('changeActions() API is not ready')
+ );
return;
}
this.el = el;
diff --git a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface-element.ts b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface-element.ts
index e764fd6..353fc2a 100644
--- a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface-element.ts
+++ b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-js-api-interface-element.ts
@@ -89,8 +89,8 @@
return callback(change, revision) === false;
} catch (err: unknown) {
this.reporting.error(
+ 'GrJsApiInterface',
new Error('canSubmitChange callback error'),
- undefined,
err
);
}
@@ -114,8 +114,8 @@
cb(detail.path);
} catch (err: unknown) {
this.reporting.error(
+ 'GrJsApiInterface',
new Error('handleHistory callback error'),
- undefined,
err
);
}
@@ -159,8 +159,8 @@
cb(change, revision, info);
} catch (err: unknown) {
this.reporting.error(
+ 'GrJsApiInterface',
new Error('showChange callback error'),
- undefined,
err
);
}
@@ -176,8 +176,8 @@
cb(detail.revisionActions, detail.change);
} catch (err: unknown) {
this.reporting.error(
+ 'GrJsApiInterface',
new Error('showRevisionActions callback error'),
- undefined,
err
);
}
@@ -190,8 +190,8 @@
cb(change, msg);
} catch (err: unknown) {
this.reporting.error(
+ 'GrJsApiInterface',
new Error('commitMessage callback error'),
- undefined,
err
);
}
@@ -205,8 +205,8 @@
cb(detail.node);
} catch (err: unknown) {
this.reporting.error(
+ 'GrJsApiInterface',
new Error('comment callback error'),
- undefined,
err
);
}
@@ -219,8 +219,8 @@
cb(detail.change);
} catch (err: unknown) {
this.reporting.error(
+ 'GrJsApiInterface',
new Error('labelChange callback error'),
- undefined,
err
);
}
@@ -233,8 +233,8 @@
cb(detail.hljs);
} catch (err: unknown) {
this.reporting.error(
+ 'GrJsApiInterface',
new Error('HighlightjsLoaded callback error'),
- undefined,
err
);
}
@@ -247,8 +247,8 @@
revertMsg = cb(change, revertMsg, origMsg) as string;
} catch (err: unknown) {
this.reporting.error(
+ 'GrJsApiInterface',
new Error('modifyRevertMsg callback error'),
- undefined,
err
);
}
@@ -270,8 +270,8 @@
) as string;
} catch (err: unknown) {
this.reporting.error(
+ 'GrJsApiInterface',
new Error('modifyRevertSubmissionMsg callback error'),
- undefined,
err
);
}
@@ -288,8 +288,8 @@
if (layer) layers.push(layer);
} catch (err: unknown) {
this.reporting.error(
+ 'GrJsApiInterface',
new Error('getDiffLayers callback error'),
- undefined,
err
);
}
@@ -304,8 +304,8 @@
annotationApi.disposeLayer(path);
} catch (err: unknown) {
this.reporting.error(
+ 'GrJsApiInterface',
new Error('disposeDiffLayers callback error'),
- undefined,
err
);
}
@@ -354,8 +354,8 @@
}
} catch (err: unknown) {
this.reporting.error(
+ 'GrJsApiInterface',
new Error('getReviewPostRevert callback error'),
- undefined,
err
);
}
diff --git a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-plugin-action-context.ts b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-plugin-action-context.ts
index 4715796..0628d2f 100644
--- a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-plugin-action-context.ts
+++ b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-plugin-action-context.ts
@@ -100,6 +100,7 @@
if (!this.action.method) return;
if (!this.action.__url) {
this.reporting.error(
+ 'GrPluginActionContext',
new Error(`Unable to ${this.action.method} to ${this.action.__key}!`)
);
return;
diff --git a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-plugin-loader.ts b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-plugin-loader.ts
index 33b6a4d..4a90314 100644
--- a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-plugin-loader.ts
+++ b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-plugin-loader.ts
@@ -132,7 +132,11 @@
try {
url = new URL(url);
} catch (e: unknown) {
- this._getReporting().error(new Error('url parse error'), undefined, e);
+ this._getReporting().error(
+ 'GrPluginLoader',
+ new Error('url parse error'),
+ e
+ );
return false;
}
}
@@ -184,8 +188,8 @@
this._failToLoad(`${e.name}: ${e.message}`, src);
} else {
this._getReporting().error(
+ 'GrPluginLoader',
new Error('plugin callback error'),
- undefined,
e
);
}
diff --git a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-public-js-api.ts b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-public-js-api.ts
index a4780eb2..21ab10a 100644
--- a/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-public-js-api.ts
+++ b/polygerrit-ui/app/elements/shared/gr-js-api-interface/gr-public-js-api.ts
@@ -71,6 +71,7 @@
if (!url) {
this.report.error(
+ 'Plugin constructor',
new Error(
'Plugin not being loaded from /plugins base path. Unable to determine name.'
)
diff --git a/polygerrit-ui/app/elements/shared/gr-label-info/gr-label-info.ts b/polygerrit-ui/app/elements/shared/gr-label-info/gr-label-info.ts
index aae62aa..47d722d 100644
--- a/polygerrit-ui/app/elements/shared/gr-label-info/gr-label-info.ts
+++ b/polygerrit-ui/app/elements/shared/gr-label-info/gr-label-info.ts
@@ -275,7 +275,7 @@
}
})
.catch(err => {
- this.reporting.error(err);
+ this.reporting.error('Delete vote', err);
target.disabled = false;
return;
});
diff --git a/polygerrit-ui/app/embed/diff/gr-syntax-layer/gr-syntax-layer-worker.ts b/polygerrit-ui/app/embed/diff/gr-syntax-layer/gr-syntax-layer-worker.ts
index deb075e..a9f88bd 100644
--- a/polygerrit-ui/app/embed/diff/gr-syntax-layer/gr-syntax-layer-worker.ts
+++ b/polygerrit-ui/app/embed/diff/gr-syntax-layer/gr-syntax-layer-worker.ts
@@ -275,7 +275,8 @@
this.notify();
// eslint-disable-next-line @typescript-eslint/no-explicit-any
} catch (err: any) {
- if (!err.isCanceled) this.reportingService.error(err as Error);
+ if (!err.isCanceled)
+ this.reportingService.error('Diff Syntax Layer', err as Error);
// One source of "error" can promise cancelation.
this.leftRanges = [];
this.rightRanges = [];
diff --git a/polygerrit-ui/app/models/checks/checks-model.ts b/polygerrit-ui/app/models/checks/checks-model.ts
index 9c4c45c..6b35056 100644
--- a/polygerrit-ui/app/models/checks/checks-model.ts
+++ b/polygerrit-ui/app/models/checks/checks-model.ts
@@ -784,7 +784,7 @@
// This should not happen and is really severe, because it means that
// the Observable has terminated and we won't recover from that. No
// further attempts to fetch results for this plugin will be made.
- this.reporting.error(e, `checks-model crash for ${pluginName}`);
+ this.reporting.error(`checks-model crash for ${pluginName}`, e);
return of(this.createErrorResponse(pluginName, e));
})
)
diff --git a/polygerrit-ui/app/services/gr-reporting/gr-reporting.ts b/polygerrit-ui/app/services/gr-reporting/gr-reporting.ts
index ea38bbd..f552762 100644
--- a/polygerrit-ui/app/services/gr-reporting/gr-reporting.ts
+++ b/polygerrit-ui/app/services/gr-reporting/gr-reporting.ts
@@ -46,7 +46,7 @@
pluginLoaded(name: string): void;
pluginsLoaded(pluginsList?: string[]): void;
pluginsFailed(pluginsList?: string[]): void;
- error(err: Error, reporter?: string, details?: EventDetails): void;
+ error(errorSource: string, error: Error, details?: EventDetails): void;
/**
* Reset named timer.
*/
diff --git a/polygerrit-ui/app/services/gr-reporting/gr-reporting_impl.ts b/polygerrit-ui/app/services/gr-reporting/gr-reporting_impl.ts
index 33b9176..dadf9e4 100644
--- a/polygerrit-ui/app/services/gr-reporting/gr-reporting_impl.ts
+++ b/polygerrit-ui/app/services/gr-reporting/gr-reporting_impl.ts
@@ -120,7 +120,7 @@
line = line ?? error.lineNumber;
column = column ?? error.columnNumber;
}
- reportingService.error(normalizeError(error), 'onError', {
+ reportingService.error('onError', normalizeError(error), {
line,
column,
url,
@@ -143,7 +143,7 @@
context.addEventListener(
'unhandledrejection',
(e: PromiseRejectionEvent) => {
- reportingService.error(normalizeError(e.reason), 'unhandledrejection');
+ reportingService.error('unhandledrejection', normalizeError(e.reason));
}
);
};
@@ -862,16 +862,20 @@
this.reportExecution(Execution.PLUGIN_API, {plugin, object, method});
}
- error(error: Error, errorSource?: string, details?: EventDetails) {
- const eventDetails = details ?? {};
- const message = `${errorSource ? errorSource + ': ' : ''}${error.message}`;
+ error(errorSource: string, error: Error, details?: EventDetails) {
+ const message = `${errorSource}: ${error.message}`;
+ const eventDetails = {
+ errorMessage: message,
+ ...details,
+ stack: error.stack,
+ };
this.reporter(
ERROR.TYPE,
ERROR.CATEGORY.EXCEPTION,
- message,
+ errorSource,
{error},
- {...eventDetails, stack: error.stack}
+ eventDetails
);
}
@@ -879,8 +883,9 @@
this.reporter(
ERROR.TYPE,
ERROR.CATEGORY.ERROR_DIALOG,
- 'ErrorDialog: ' + message,
- {error: new Error(message)}
+ 'ErrorDialog',
+ {error: new Error(message)},
+ {errorMessage: message}
);
}
diff --git a/polygerrit-ui/app/services/gr-reporting/gr-reporting_mock.ts b/polygerrit-ui/app/services/gr-reporting/gr-reporting_mock.ts
index 28a4333..d4efbcc 100644
--- a/polygerrit-ui/app/services/gr-reporting/gr-reporting_mock.ts
+++ b/polygerrit-ui/app/services/gr-reporting/gr-reporting_mock.ts
@@ -51,8 +51,8 @@
reportErrorDialog: (message: string) => {
log(`reportErrorDialog: ${message}`);
},
- error: e => {
- log('error', e);
+ error: (label, e) => {
+ log(`error ${label}:`, e);
},
reportExecution: (_id: Execution, _details?: EventDetails) => {},
trackApi: (_pluginApi: PluginApi, _object: string, _method: string) => {},
diff --git a/polygerrit-ui/app/services/gr-reporting/gr-reporting_test.ts b/polygerrit-ui/app/services/gr-reporting/gr-reporting_test.ts
index ba2da0e..9c5e20d 100644
--- a/polygerrit-ui/app/services/gr-reporting/gr-reporting_test.ts
+++ b/polygerrit-ui/app/services/gr-reporting/gr-reporting_test.ts
@@ -533,7 +533,14 @@
const error = new Error('bar');
error.stack = undefined;
emulateThrow('bar', 'http://url', 4, 2, error);
- assert.isTrue(reporter.calledWith('error', 'exception', 'onError: bar'));
+ assert.isTrue(reporter.calledWith('error', 'exception', 'onError'));
+ });
+
+ test('is reported with message', () => {
+ const error = new Error('bar');
+ emulateThrow('bar', 'http://url', 4, 2, error);
+ const eventDetails = reporter.lastCall.args[4];
+ assert.equal(eventDetails.errorMessage, 'onError: bar');
});
test('is reported with stack', () => {
@@ -551,7 +558,7 @@
const newError = new Error('bar');
fakeWindow.handlers['unhandledrejection']({reason: newError});
assert.isTrue(
- reporter.calledWith('error', 'exception', 'unhandledrejection: bar')
+ reporter.calledWith('error', 'exception', 'unhandledrejection')
);
});
});
diff --git a/polygerrit-ui/app/services/highlight/highlight-service.ts b/polygerrit-ui/app/services/highlight/highlight-service.ts
index 80da260..bfaa263 100644
--- a/polygerrit-ui/app/services/highlight/highlight-service.ts
+++ b/polygerrit-ui/app/services/highlight/highlight-service.ts
@@ -118,7 +118,10 @@
private handleResult(worker: Worker, result: SyntaxWorkerResult) {
this.moveBusyToIdle(worker);
if (result.error) {
- this.reporting.error(new Error(`syntax worker failed: ${result.error}`));
+ this.reporting.error(
+ 'Diff Syntax Layer',
+ new Error(`syntax worker failed: ${result.error}`)
+ );
}
const resolver = this.queueForResult.get(worker);
this.queueForResult.delete(worker);