Skip to content

Commit

Permalink
fix: add missing code transform telemetry (#4216)
Browse files Browse the repository at this point in the history
* fix: add missing code transform telemetry

Problem: Some Code Transform telemetries not being emitted.

Solution: Add missing telemetries.

* use static message for general error metric

* Remove redundant logging

* change Canceled to Cancelled for consistency
  • Loading branch information
tincheng authored Jan 8, 2024
1 parent 240b54d commit cdf45b8
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 3 deletions.
30 changes: 29 additions & 1 deletion src/codewhisperer/commands/startTransformByQ.ts
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,8 @@ export async function startTransformByQ() {

let intervalId = undefined
let errorMessage = ''
let resultStatusMessage = ''

try {
intervalId = setInterval(() => {
void vscode.commands.executeCommand('aws.amazonq.showPlanProgressInHub', startTime.getTime())
Expand All @@ -178,6 +180,13 @@ export async function startTransformByQ() {
await vscode.commands.executeCommand('aws.amazonq.refresh') // so that button updates
uploadId = await uploadPayload(payloadFileName)
} catch (error) {
errorMessage = 'Failed to upload archive'
telemetry.codeTransform_logGeneralError.emit({
codeTransformSessionId: codeTransformTelemetryState.getSessionId(),
codeTransformApiErrorMessage: errorMessage,
result: MetadataResult.Fail,
reason: 'UploadArchiveFailed',
})
throw new TransformByQUploadArchiveFailed()
}
sessionPlanProgress['uploadCode'] = StepProgress.Succeeded
Expand All @@ -192,7 +201,12 @@ export async function startTransformByQ() {
jobId = await startJob(uploadId)
} catch (error) {
errorMessage = 'Failed to start job'
getLogger().error(errorMessage, error)
telemetry.codeTransform_logGeneralError.emit({
codeTransformSessionId: codeTransformTelemetryState.getSessionId(),
codeTransformApiErrorMessage: errorMessage,
result: MetadataResult.Fail,
reason: 'StartJobFailed',
})
throw new ToolkitError(errorMessage, { cause: error as Error })
}
transformByQState.setJobId(encodeHTML(jobId))
Expand Down Expand Up @@ -248,13 +262,17 @@ export async function startTransformByQ() {
transformByQState.setToSucceeded()
if (status === 'PARTIALLY_COMPLETED') {
transformByQState.setToPartiallySucceeded()
resultStatusMessage = 'JobPartiallySucceeded'
} else {
resultStatusMessage = 'JobCompletedSuccessfully'
}

await vscode.commands.executeCommand('aws.amazonq.transformationHub.reviewChanges.reveal')
await vscode.commands.executeCommand('aws.amazonq.refresh')
sessionPlanProgress['returnCode'] = StepProgress.Succeeded
} catch (error) {
if (transformByQState.isCancelled()) {
resultStatusMessage = 'JobCancelled'
try {
await stopJob(transformByQState.getJobId())
void vscode.window.showErrorMessage(CodeWhispererConstants.transformByQCancelledMessage)
Expand All @@ -263,6 +281,7 @@ export async function startTransformByQ() {
}
} else {
transformByQState.setToFailed()
resultStatusMessage = 'JobFailed'
let displayedErrorMessage = CodeWhispererConstants.transformByQFailedMessage
if (errorMessage !== '') {
displayedErrorMessage = errorMessage
Expand All @@ -288,6 +307,15 @@ export async function startTransformByQ() {
await vscode.commands.executeCommand('setContext', 'gumby.isTransformAvailable', true)
const durationInMs = new Date().getTime() - startTime.getTime()

// Note: IntelliJ implementation of ResultStatusMessage includes additional metadata such as jobId.
telemetry.codeTransform_totalRunTime.emit({
codeTransformSessionId: codeTransformTelemetryState.getSessionId(),
codeTransformResultStatusMessage: resultStatusMessage,
codeTransformRunTimeLatency: durationInMs,
result: resultStatusMessage === 'JobCompletedSuccessfully' ? MetadataResult.Pass : MetadataResult.Fail,
reason: resultStatusMessage,
})

if (state.project) {
sessionJobHistory = processHistory(
sessionJobHistory,
Expand Down
6 changes: 6 additions & 0 deletions src/codewhisperer/service/transformByQHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,12 @@ function getProjectDependencies(modulePath: string): string[] {
} else {
getLogger().error(spawnResult.stdout)
}
telemetry.codeTransform_mvnBuildFailed.emit({
codeTransformSessionId: codeTransformTelemetryState.getSessionId(),
codeTransformMavenBuildCommand: baseCommand,
result: MetadataResult.Fail,
reason: spawnResult.error ? spawnResult.error.message : spawnResult.stdout,
})
throw new ToolkitError('Maven Dependency Error', { code: 'CannotRunMavenShellCommand' })
}

Expand Down
13 changes: 11 additions & 2 deletions src/codewhisperer/service/transformationResultsViewProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,13 @@ export class ProposedTransformationExplorer {
TransformByQReviewStatus.PreparingReview
)
telemetry.ui_click.emit({ elementId: 'transformationHub_startDownloadExportResultArchive' })

// This metric is emitted when user clicked download for proposed change
telemetry.codeTransform_vcsViewerClicked.emit({
codeTransformVCSViewerSrcComponents: 'toastNotification',
codeTransformSessionId: codeTransformTelemetryState.getSessionId(),
codeTransformJobId: transformByQState.getJobId(),
})
const pathToArchive = path.join(
ProposedTransformationExplorer.TmpDir,
transformByQState.getJobId(),
Expand Down Expand Up @@ -344,13 +351,15 @@ export class ProposedTransformationExplorer {
})
}

await vscode.window.showInformationMessage(CodeWhispererConstants.viewProposedChangesMessage)
await vscode.commands.executeCommand('aws.amazonq.transformationHub.summary.reveal')
// This metric is only emitted when placed before showInformationMessage
telemetry.codeTransform_vcsDiffViewerVisible.emit({
codeTransformSessionId: codeTransformTelemetryState.getSessionId(),
codeTransformJobId: transformByQState.getJobId(),
result: MetadataResult.Pass,
})

await vscode.window.showInformationMessage(CodeWhispererConstants.viewProposedChangesMessage)
await vscode.commands.executeCommand('aws.amazonq.transformationHub.summary.reveal')
})

vscode.commands.registerCommand('aws.amazonq.transformationHub.reviewChanges.acceptChanges', async () => {
Expand Down

0 comments on commit cdf45b8

Please sign in to comment.