Skip to content

Commit 60d6506

Browse files
committed
fix(be): differ failed command executions telemetry by their type (workbench/search)
re #RI-7496
1 parent eab5946 commit 60d6506

File tree

3 files changed

+54
-24
lines changed

3 files changed

+54
-24
lines changed

redisinsight/api/src/constants/telemetry-events.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ export enum TelemetryEvents {
6161

6262
// Events for search tool
6363
SearchCommandExecuted = 'SEARCH_COMMAND_EXECUTED',
64+
SearchCommandErrorReceived = 'SEARCH_COMMAND_ERROR_RECEIVED',
6465

6566
// Custom tutorials
6667
WorkbenchEnablementAreaImportSucceeded = 'WORKBENCH_ENABLEMENT_AREA_IMPORT_SUCCEEDED',

redisinsight/api/src/modules/workbench/workbench.analytics.spec.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,33 @@ describe('WorkbenchAnalytics', () => {
393393
},
394394
);
395395
});
396+
it('should emit SearchCommandError event', async () => {
397+
await service.sendCommandExecutedEvent(
398+
mockSessionMetadata,
399+
instanceId,
400+
CommandExecutionType.Search,
401+
{
402+
response: 'Error',
403+
error: redisReplyError,
404+
status: CommandExecutionStatus.Fail,
405+
},
406+
{ command: 'set', data: 'Some data' },
407+
);
408+
409+
expect(sendEventMethod).toHaveBeenCalledWith(
410+
mockSessionMetadata,
411+
TelemetryEvents.SearchCommandErrorReceived,
412+
{
413+
databaseId: instanceId,
414+
error: ReplyError.name,
415+
command: 'set',
416+
commandType: CommandType.Core,
417+
moduleName: 'n/a',
418+
capability: 'string',
419+
data: 'Some data',
420+
},
421+
);
422+
});
396423
});
397424
describe('sendCommandDeletedEvent', () => {
398425
it('should emit WorkbenchCommandDeleted event', () => {

redisinsight/api/src/modules/workbench/workbench.analytics.ts

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ export class WorkbenchAnalytics extends CommandTelemetryBaseService {
7878
additionalData: object = {},
7979
): Promise<void> {
8080
const { status } = result;
81-
8281
try {
8382
if (status === CommandExecutionStatus.Success) {
8483
this.sendEvent(
@@ -94,10 +93,16 @@ export class WorkbenchAnalytics extends CommandTelemetryBaseService {
9493
);
9594
}
9695
if (status === CommandExecutionStatus.Fail) {
97-
this.sendCommandErrorEvent(sessionMetadata, databaseId, result.error, {
98-
...(await this.getCommandAdditionalInfo(additionalData['command'])),
99-
...additionalData,
100-
});
96+
this.sendCommandErrorEvent(
97+
sessionMetadata,
98+
databaseId,
99+
result.error,
100+
commandExecutionType,
101+
{
102+
...(await this.getCommandAdditionalInfo(additionalData['command'])),
103+
...additionalData,
104+
},
105+
);
101106
}
102107
} catch (e) {
103108
// continue regardless of error
@@ -119,30 +124,27 @@ export class WorkbenchAnalytics extends CommandTelemetryBaseService {
119124
sessionMetadata: SessionMetadata,
120125
databaseId: string,
121126
error: any,
127+
commandExecutionType: CommandExecutionType,
122128
additionalData: object = {},
123129
): void {
124130
try {
131+
const event =
132+
commandExecutionType === CommandExecutionType.Search
133+
? TelemetryEvents.SearchCommandErrorReceived
134+
: TelemetryEvents.WorkbenchCommandErrorReceived;
135+
125136
if (error instanceof HttpException) {
126-
this.sendFailedEvent(
127-
sessionMetadata,
128-
TelemetryEvents.WorkbenchCommandErrorReceived,
129-
error,
130-
{
131-
databaseId,
132-
...additionalData,
133-
},
134-
);
137+
this.sendFailedEvent(sessionMetadata, event, error, {
138+
databaseId,
139+
...additionalData,
140+
});
135141
} else {
136-
this.sendEvent(
137-
sessionMetadata,
138-
TelemetryEvents.WorkbenchCommandErrorReceived,
139-
{
140-
databaseId,
141-
error: error.name,
142-
command: error?.command?.name,
143-
...additionalData,
144-
},
145-
);
142+
this.sendEvent(sessionMetadata, event, {
143+
databaseId,
144+
error: error.name,
145+
command: error?.command?.name,
146+
...additionalData,
147+
});
146148
}
147149
} catch (e) {
148150
// continue regardless of error

0 commit comments

Comments
 (0)