Skip to content

Commit 51d65e1

Browse files
committed
Fix: filter out frequent client error from codegeneration telemetry
1 parent 9dffe3e commit 51d65e1

File tree

3 files changed

+43
-2
lines changed

3 files changed

+43
-2
lines changed

packages/core/src/amazonqFeatureDev/constants.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@ export const generateDevFilePrompt =
2020
// Max allowed size for file collection
2121
export const maxRepoSizeBytes = 200 * 1024 * 1024
2222

23+
export const startCodeGenClientErrorMessages = ['Improperly formed request', 'Resource not found']
24+
export const clientErrorMessages = [
25+
'StartTaskAssistCodeGeneration reached for this month.',
26+
'The folder you chose did not contain any source files in a supported language. Choose another folder and try again.',
27+
]
28+
2329
// License text that's used in codewhisperer reference log
2430
export const referenceLogText = (reference: CodeReference) =>
2531
`[${new Date().toLocaleString()}] Accepted recommendation from Amazon Q. Code provided with reference under <a href="${LicenseUtil.getLicenseHtml(

packages/core/src/amazonqFeatureDev/controllers/chat/controller.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,13 @@ import {
2929
} from '../../errors'
3030
import { codeGenRetryLimit, defaultRetryLimit } from '../../limits'
3131
import { Session } from '../../session/session'
32-
import { featureDevScheme, featureName, generateDevFilePrompt } from '../../constants'
32+
import {
33+
clientErrorMessages,
34+
featureDevScheme,
35+
featureName,
36+
generateDevFilePrompt,
37+
startCodeGenClientErrorMessages,
38+
} from '../../constants'
3339
import { DeletedFileInfo, DevPhase, MetricDataOperationName, MetricDataResult, type NewFileInfo } from '../../types'
3440
import { AuthUtil } from '../../../codewhisperer/util/authUtil'
3541
import { AuthController } from '../../../amazonq/auth/controller'
@@ -555,12 +561,22 @@ export class FeatureDevController {
555561
result = MetricDataResult.Fault
556562
}
557563
break
564+
case MonthlyConversationLimitError.name:
565+
case CodeIterationLimitError.name:
558566
case PromptRefusalException.name:
559567
case NoChangeRequiredException.name:
560568
result = MetricDataResult.Error
561569
break
562570
default:
563-
result = MetricDataResult.Fault
571+
if (
572+
(err.code === 'StartCodeGenerationFailed' &&
573+
startCodeGenClientErrorMessages.some((msg) => err.message.includes(msg))) ||
574+
clientErrorMessages.some((msg) => err.message.includes(msg))
575+
) {
576+
result = MetricDataResult.Error
577+
} else {
578+
result = MetricDataResult.Fault
579+
}
564580
break
565581
}
566582

packages/core/src/test/amazonqFeatureDev/controllers/chat/controller.test.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,12 +471,31 @@ describe('Controller', () => {
471471
['EmptyPatchException', MetricDataResult.LlmFailure],
472472
[PromptRefusalException.name, MetricDataResult.Error],
473473
[NoChangeRequiredException.name, MetricDataResult.Error],
474+
[MonthlyConversationLimitError.name, MetricDataResult.Error],
475+
[CodeIterationLimitError.name, MetricDataResult.Error],
474476
])
475477

476478
function getMetricResult(error: ToolkitError): MetricDataResult {
477479
if (error instanceof FeatureDevServiceError && error.code) {
478480
return errorResultMapping.get(error.code) ?? MetricDataResult.Error
479481
}
482+
if (
483+
error.code === 'StartCodeGenerationFailed' &&
484+
(error.message.includes('Improperly formed request') ||
485+
error.message.includes('Resource not found'))
486+
) {
487+
return MetricDataResult.Error
488+
}
489+
if (error.message.includes('StartTaskAssistCodeGeneration reached for this month.')) {
490+
return MetricDataResult.Error
491+
}
492+
if (
493+
error.message.includes(
494+
'The folder you chose did not contain any source files in a supported language. Choose another folder and try again.'
495+
)
496+
) {
497+
return MetricDataResult.Error
498+
}
480499
return errorResultMapping.get(error.constructor.name) ?? MetricDataResult.Fault
481500
}
482501

0 commit comments

Comments
 (0)