Skip to content

Commit

Permalink
Fix CodeTransform_localBuildProject metric (#4748)
Browse files Browse the repository at this point in the history
  • Loading branch information
tincheng authored Aug 2, 2024
1 parent 7319253 commit 400987d
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -218,20 +218,12 @@ class CodeTransformTelemetryManager(private val project: Project) {
}

// Replace the input as needed to support Gradle and other transformation types.
fun localBuildProject(buildCommand: CodeTransformBuildCommand, telemetryErrorMessage: String?, isCanceled: Boolean = false) {
val result: Result = if (telemetryErrorMessage.isNullOrEmpty()) {
Result.Succeeded
} else if (isCanceled) {
Result.Cancelled
} else {
Result.Failed
}

fun localBuildProject(buildCommand: CodeTransformBuildCommand, localBuildResult: Result, telemetryErrorMessage: String?) {
CodetransformTelemetry.localBuildProject(
codeTransformBuildCommand = buildCommand,
codeTransformSessionId = sessionId,
result = result,
reason = telemetryErrorMessage,
result = localBuildResult,
reason = if (telemetryErrorMessage.isNullOrEmpty()) null else telemetryErrorMessage,
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import kotlinx.coroutines.runBlocking
import software.aws.toolkits.core.utils.debug
import software.aws.toolkits.core.utils.error
import software.aws.toolkits.core.utils.getLogger
import software.aws.toolkits.core.utils.info
import software.aws.toolkits.jetbrains.services.amazonq.apps.AmazonQAppInitContext
import software.aws.toolkits.jetbrains.services.amazonq.auth.AuthController
import software.aws.toolkits.jetbrains.services.amazonq.auth.AuthFollowUpType
Expand Down Expand Up @@ -214,8 +215,9 @@ class CodeTransformChatController(
}

// this should never throw the RuntimeException since invalid JDK case is already handled in previous validation step
val sourceJdk = ModuleUtil.findModuleForFile(moduleVirtualFile, context.project)?.tryGetJdk(context.project) ?: context.project.tryGetJdk()
?: throw RuntimeException("Unable to determine source JDK version")
val moduleJdkVersion = ModuleUtil.findModuleForFile(moduleVirtualFile, context.project)?.tryGetJdk(context.project)
logger.info { "Found project JDK version: ${context.project.tryGetJdk()}, module JDK version: $moduleJdkVersion. Module JDK version prioritized." }
val sourceJdk = moduleJdkVersion ?: context.project.tryGetJdk() ?: throw RuntimeException("Unable to determine source JDK version")

val selection = CustomerSelection(
moduleVirtualFile,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import software.aws.toolkits.jetbrains.services.codemodernizer.model.MavenCopyCo
import software.aws.toolkits.jetbrains.services.codemodernizer.model.MavenDependencyReportCommandsResult
import software.aws.toolkits.telemetry.CodeTransformBuildCommand
import software.aws.toolkits.telemetry.CodeTransformMavenBuildCommand
import software.aws.toolkits.telemetry.Result
import java.io.File
import java.nio.file.Files
import java.nio.file.Path
Expand Down Expand Up @@ -66,8 +67,8 @@ fun runMavenCopyCommands(sourceFolder: File, buildlogBuilder: StringBuilder, log
val currentTimestamp = System.currentTimeMillis()
val destinationDir = Files.createTempDirectory("transformation_dependencies_temp_$currentTimestamp")
val telemetry = CodeTransformTelemetryManager.getInstance(project)
var telemetryIsCancelled = false
var telemetryErrorMessage: String? = null
var telemetryErrorMessage = ""
var telemetryLocalBuildResult = Result.Succeeded

logger.info { "Executing IntelliJ bundled Maven" }
try {
Expand All @@ -85,10 +86,10 @@ fun runMavenCopyCommands(sourceFolder: File, buildlogBuilder: StringBuilder, log
logger.info { successMsg }
buildlogBuilder.appendLine(successMsg)
} else if (copyDependenciesRunnable.isTerminated()) {
telemetryIsCancelled = true
telemetryLocalBuildResult = Result.Cancelled
return MavenCopyCommandsResult.Cancelled
} else {
telemetryErrorMessage = "Maven Copy: bundled Maven failed: exitCode ${copyDependenciesRunnable.isComplete()}"
telemetryErrorMessage += "Maven Copy: bundled Maven failed. "

// TODO: deprecated metric - remove after BI started using new metric
emitMavenFailure("Maven Copy: bundled Maven failed: exitCode ${copyDependenciesRunnable.isComplete()}", logger, telemetry)
Expand All @@ -103,14 +104,15 @@ fun runMavenCopyCommands(sourceFolder: File, buildlogBuilder: StringBuilder, log
logger.info { successMsg }
buildlogBuilder.appendLine(successMsg)
} else if (cleanRunnable.isTerminated()) {
telemetryIsCancelled = true
telemetryLocalBuildResult = Result.Cancelled
return MavenCopyCommandsResult.Cancelled
} else {
telemetryErrorMessage = "Maven Clean: bundled Maven failed: exitCode ${cleanRunnable.isComplete()}"
telemetryErrorMessage += "Maven Clean: bundled Maven failed."

// TODO: deprecated metric - remove after BI started using new metric
emitMavenFailure("Maven Clean: bundled Maven failed: exitCode ${cleanRunnable.isComplete()}", logger, telemetry)

telemetryLocalBuildResult = Result.Failed
return MavenCopyCommandsResult.Failure
}

Expand All @@ -123,14 +125,15 @@ fun runMavenCopyCommands(sourceFolder: File, buildlogBuilder: StringBuilder, log
logger.info { successMsg }
buildlogBuilder.appendLine(successMsg)
} else if (installRunnable.isTerminated()) {
telemetryIsCancelled = true
telemetryLocalBuildResult = Result.Cancelled
return MavenCopyCommandsResult.Cancelled
} else {
telemetryErrorMessage = "Maven Install: bundled Maven failed: exitCode ${installRunnable.isComplete()}"
telemetryErrorMessage += "Maven Install: bundled Maven failed."

// TODO: deprecated metric - remove after BI started using new metric
emitMavenFailure("Maven Install: bundled Maven failed: exitCode ${installRunnable.isComplete()}", logger, telemetry)

telemetryLocalBuildResult = Result.Failed
return MavenCopyCommandsResult.Failure
}
} catch (t: Throwable) {
Expand All @@ -140,10 +143,11 @@ fun runMavenCopyCommands(sourceFolder: File, buildlogBuilder: StringBuilder, log
val errorMessage = "IntelliJ bundled Maven executed failed: ${t.message}"
logger.error(t) { errorMessage }
telemetryErrorMessage = errorMessage
telemetryLocalBuildResult = Result.Failed
return MavenCopyCommandsResult.Failure
} finally {
// emit telemetry
telemetry.localBuildProject(CodeTransformBuildCommand.IDEBundledMaven, telemetryErrorMessage, telemetryIsCancelled)
telemetry.localBuildProject(CodeTransformBuildCommand.IDEBundledMaven, telemetryLocalBuildResult, telemetryErrorMessage)
}
// When all commands executed successfully, show the transformation hub
return MavenCopyCommandsResult.Success(destinationDir.toFile())
Expand Down

0 comments on commit 400987d

Please sign in to comment.