From 739b7716b15674d8750d432906df31b48d8b542e Mon Sep 17 00:00:00 2001 From: Michael Mandrus <41969079+mmandrus@users.noreply.github.com> Date: Mon, 6 Jan 2025 16:25:05 -0500 Subject: [PATCH] Usage Insights: Fix usage insight errors being logged as [object Object] (#93502) * join error strings instead of raw errors * add unit test --- .../query/state/queryAnalytics.test.ts | 24 +++++++++++++++++++ .../features/query/state/queryAnalytics.ts | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/public/app/features/query/state/queryAnalytics.test.ts b/public/app/features/query/state/queryAnalytics.test.ts index 2b0863132b2..bf8c77ead23 100644 --- a/public/app/features/query/state/queryAnalytics.test.ts +++ b/public/app/features/query/state/queryAnalytics.test.ts @@ -218,6 +218,30 @@ describe('emitDataRequestEvent', () => { emitDataRequestEvent(datasource)(data); expect(reportMetaAnalytics).not.toBeCalled(); }); + + it('Should not report errors when there are none', () => { + const data = getTestData({ + panelId: 2, + }); + emitDataRequestEvent(datasource)(data); + + expect(reportMetaAnalytics).toBeCalledTimes(1); + expect(reportMetaAnalytics).toHaveBeenCalledWith(expect.not.objectContaining({ error: expect.any(String) })); + }); + + it('Should report errors if they exist', () => { + const data = getTestData( + { + panelId: 2, + }, + undefined, + [{ message: 'message A' }, { message: 'message B' }] + ); + emitDataRequestEvent(datasource)(data); + + expect(reportMetaAnalytics).toBeCalledTimes(1); + expect(reportMetaAnalytics).toHaveBeenCalledWith(expect.objectContaining({ error: 'message A, message B' })); + }); }); // Previously we filtered out Explore and Correlations events due to too many errors being generated while a user is building a query diff --git a/public/app/features/query/state/queryAnalytics.ts b/public/app/features/query/state/queryAnalytics.ts index cdc6057f2db..c2d93ff866a 100644 --- a/public/app/features/query/state/queryAnalytics.ts +++ b/public/app/features/query/state/queryAnalytics.ts @@ -77,7 +77,7 @@ export function emitDataRequestEvent(datasource: DataSourceApi) { function enrichWithErrorData(eventData: DataRequestEventPayload, data: PanelData) { if (data.errors?.length) { - eventData.error = data.errors.join(', '); + eventData.error = data.errors.map((e) => e.message).join(', '); } else if (data.error) { eventData.error = data.error.message; }