Skip to content

Commit b8bef67

Browse files
Increasing debounce to 8 seconds and adding check for sending telemte… (#4575)
* Increasing debounce to 8 seconds and adding check for sending telemtery events. * Increasing debounce to 8 seconds and adding check for sending telemtery events. * Adding isTelemetrySkipped for better readability. * Added changelog for bug fix. * Update .changes/next-release/bugfix-908d7b81-ea6b-445f-a166-b09c8640dfaf.json Co-authored-by: Will Lo <[email protected]> * Refactored isTelemetrySkipped to skipTelemetry. --------- Co-authored-by: Will Lo <[email protected]>
1 parent 0d60d42 commit b8bef67

File tree

3 files changed

+24
-15
lines changed

3 files changed

+24
-15
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "bugfix",
3+
"description" : "Fix intermittent validation exception from CodeWhisperer service for improperly formed request"
4+
}

plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/codescan/CodeWhispererCodeScanManager.kt

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ import software.aws.toolkits.jetbrains.services.codewhisperer.editor.CodeWhisper
6363
import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.CodeWhispererExplorerActionManager
6464
import software.aws.toolkits.jetbrains.services.codewhisperer.explorer.isUserBuilderId
6565
import software.aws.toolkits.jetbrains.services.codewhisperer.language.CodeWhispererProgrammingLanguage
66+
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererPlainText
6667
import software.aws.toolkits.jetbrains.services.codewhisperer.language.languages.CodeWhispererUnknownLanguage
67-
import software.aws.toolkits.jetbrains.services.codewhisperer.language.programmingLanguage
6868
import software.aws.toolkits.jetbrains.services.codewhisperer.model.CodeScanTelemetryEvent
6969
import software.aws.toolkits.jetbrains.services.codewhisperer.telemetry.CodeWhispererTelemetryService
7070
import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererColorUtil.INACTIVE_TEXT_COLOR
@@ -223,6 +223,7 @@ class CodeWhispererCodeScanManager(val project: Project) {
223223
val connection = ToolkitConnectionManager.getInstance(project).activeConnectionForFeature(CodeWhispererConnection.getInstance())
224224
var codeScanJobId: String? = null
225225
var language: CodeWhispererProgrammingLanguage = CodeWhispererUnknownLanguage.INSTANCE
226+
var skipTelemetry = false
226227
try {
227228
val file =
228229
if (isRunningOnRemoteBackend()) {
@@ -232,14 +233,15 @@ class CodeWhispererCodeScanManager(val project: Project) {
232233
}
233234
val codeScanSessionConfig = CodeScanSessionConfig.create(file, project, scope)
234235
val selectedFile = codeScanSessionConfig.getSelectedFile()
235-
language = selectedFile?.programmingLanguage() ?: CodeWhispererUnknownLanguage.INSTANCE
236+
language = codeScanSessionConfig.getProgrammingLanguage()
236237
if (scope == CodeWhispererConstants.CodeAnalysisScope.FILE &&
237238
(
238239
selectedFile == null || !language.isAutoFileScanSupported() || !selectedFile.isFile ||
239240
runReadAction { (codeScanSessionConfig.fileIndex.isInLibrarySource(selectedFile)) } ||
240241
selectedFile.fileSystem.protocol == "remoteDeploymentFS"
241242
)
242243
) {
244+
skipTelemetry = true
243245
LOG.debug { "Language is unknown or plaintext, skipping code scan." }
244246
codeScanStatus = Result.Cancelled
245247
return@launch
@@ -250,6 +252,7 @@ class CodeWhispererCodeScanManager(val project: Project) {
250252
val session = CodeWhispererCodeScanSession(sessionContext)
251253
val codeScanResponse = session.run()
252254
language = codeScanSessionConfig.getProgrammingLanguage()
255+
if (language == CodeWhispererPlainText.INSTANCE) { skipTelemetry = true }
253256
codeScanResponseContext = codeScanResponse.responseContext
254257
codeScanJobId = codeScanResponseContext.codeScanJobId
255258
when (codeScanResponse) {
@@ -289,19 +292,21 @@ class CodeWhispererCodeScanManager(val project: Project) {
289292
} finally {
290293
// After code scan
291294
afterCodeScan(scope)
292-
launch {
293-
val duration = (Instant.now().toEpochMilli() - startTime).toDouble()
294-
CodeWhispererTelemetryService.getInstance().sendSecurityScanEvent(
295-
CodeScanTelemetryEvent(
296-
codeScanResponseContext,
297-
duration,
298-
codeScanStatus,
299-
codeScanResponseContext.payloadContext.srcPayloadSize.toDouble() ?: 0.0,
300-
connection,
301-
scope
295+
if (!skipTelemetry) {
296+
launch {
297+
val duration = (Instant.now().toEpochMilli() - startTime).toDouble()
298+
CodeWhispererTelemetryService.getInstance().sendSecurityScanEvent(
299+
CodeScanTelemetryEvent(
300+
codeScanResponseContext,
301+
duration,
302+
codeScanStatus,
303+
codeScanResponseContext.payloadContext.srcPayloadSize.toDouble() ?: 0.0,
304+
connection,
305+
scope
306+
)
302307
)
303-
)
304-
sendCodeScanTelemetryToServiceAPI(project, language, codeScanJobId, scope)
308+
sendCodeScanTelemetryToServiceAPI(project, language, codeScanJobId, scope)
309+
}
305310
}
306311
}
307312
}

plugins/toolkit/jetbrains-core/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererConstants.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ object CodeWhispererConstants {
6161
const val CODE_SCAN_CREATE_PAYLOAD_TIMEOUT_IN_SECONDS: Long = 10
6262
const val FILE_SCAN_TIMEOUT_IN_SECONDS: Long = 60 // 60 seconds
6363
const val FILE_SCAN_PAYLOAD_SIZE_LIMIT_IN_BYTES: Long = 1024 * 200 // 200KB
64-
const val AUTO_SCAN_DEBOUNCE_DELAY_IN_SECONDS: Long = 5
64+
const val AUTO_SCAN_DEBOUNCE_DELAY_IN_SECONDS: Long = 8
6565
const val TOTAL_BYTES_IN_KB = 1024
6666
const val TOTAL_BYTES_IN_MB = 1024 * 1024
6767
const val TOTAL_MILLIS_IN_SECOND = 1000

0 commit comments

Comments
 (0)