@@ -3,6 +3,7 @@ package org.digma.intellij.plugin.docker
33import com.intellij.execution.configurations.GeneralCommandLine
44import com.intellij.execution.process.ProcessOutput
55import com.intellij.execution.util.ExecUtil
6+ import com.intellij.icons.AllIcons
67import com.intellij.openapi.application.ApplicationManager
78import com.intellij.openapi.components.Service
89import com.intellij.openapi.components.service
@@ -144,9 +145,10 @@ class DockerService {
144145
145146 var exitValue = engine.up(project, downloader.composeFile, dockerComposeCmd)
146147 if (exitValue != " 0" ) {
148+ ActivityMonitor .getInstance(project).registerDigmaEngineEventError(" installEngine" , exitValue)
147149 Log .log(logger::warn, " error installing engine {}" , exitValue)
148150 if (isDockerDaemonDownExitValue(exitValue)) {
149- exitValue = doRetryFlowWhenDockerDaemonIsDown(project) {
151+ exitValue = doRetryFlowWhenDockerDaemonIsDown(project, exitValue ) {
150152 engine.up(project, downloader.composeFile, dockerComposeCmd)
151153 }
152154 }
@@ -189,6 +191,7 @@ class DockerService {
189191 if (dockerComposeCmd != null ) {
190192 val exitValue = engine.up(project, downloader.composeFile, dockerComposeCmd)
191193 if (exitValue != " 0" ) {
194+ ActivityMonitor .getInstance(project).registerDigmaEngineEventError(" upgradeEngine" , exitValue)
192195 Log .log(logger::warn, " error upgrading engine {}" , exitValue)
193196 }
194197 } else {
@@ -225,6 +228,7 @@ class DockerService {
225228
226229 val exitValue = engine.stop(project, downloader.composeFile, dockerComposeCmd)
227230 if (exitValue != " 0" ) {
231+ ActivityMonitor .getInstance(project).registerDigmaEngineEventError(" stopEngine" , exitValue)
228232 Log .log(logger::warn, " error stopping engine {}" , exitValue)
229233 }
230234 notifyResult(exitValue, resultTask)
@@ -273,9 +277,10 @@ class DockerService {
273277
274278 var exitValue = engine.start(project, downloader.composeFile, dockerComposeCmd)
275279 if (exitValue != " 0" ) {
280+ ActivityMonitor .getInstance(project).registerDigmaEngineEventError(" startEngine" , exitValue)
276281 Log .log(logger::warn, " error starting engine {}" , exitValue)
277282 if (isDockerDaemonDownExitValue(exitValue)) {
278- exitValue = doRetryFlowWhenDockerDaemonIsDown(project) {
283+ exitValue = doRetryFlowWhenDockerDaemonIsDown(project, exitValue ) {
279284 engine.start(project, downloader.composeFile, dockerComposeCmd)
280285 }
281286 }
@@ -322,6 +327,7 @@ class DockerService {
322327 if (dockerComposeCmd != null ) {
323328 val exitValue = engine.remove(project, downloader.composeFile, dockerComposeCmd)
324329 if (exitValue != " 0" ) {
330+ ActivityMonitor .getInstance(project).registerDigmaEngineEventError(" removeEngine" , exitValue)
325331 Log .log(logger::warn, " error uninstalling engine {}" , exitValue)
326332 }
327333 notifyResult(exitValue, resultTask)
@@ -356,36 +362,45 @@ class DockerService {
356362 }
357363
358364
359- private fun doRetryFlowWhenDockerDaemonIsDown (project : Project , runCommand : Supplier <String >): String {
365+ private fun doRetryFlowWhenDockerDaemonIsDown (project : Project , prevExitValue : String , runCommand : Supplier <String >): String {
360366
361367 val eventName = " docker-daemon-is-down"
362368
363- ActivityMonitor .getInstance(project).registerDigmaEngineEventInfo(eventName)
369+ ActivityMonitor .getInstance(project).registerDigmaEngineEventInfo(eventName, mapOf ( " exitValue " to prevExitValue) )
364370
371+ // try to start docker daemon, usually it will fail
365372 tryStartDockerDaemon(project)
366373
374+ // run the command again, maybe restart docker daemon succeeded
367375 var exitValue = runCommand.get()
368376
369377 if (isDockerDaemonDownExitValue(exitValue)) {
370378 var res = MessageConstants .YES
371379 ApplicationManager .getApplication().invokeAndWait {
372380 res = Messages .showYesNoDialog(
373381 project,
374- " Please make sure the Docker daemon is running\n " +
382+ " It seems that docker daemon is not running.\n " +
383+ " Please make sure the Docker daemon is running by restarting the service or starting docker desktop app.\n " +
375384 " Once the Docker daemon is running, press the retry button.\n " ,
376- " Digma Engine Failed to Run " ,
385+ " Digma Engine Failed to Start " ,
377386 " Retry" ,
378387 " Cancel" ,
379- null
388+ AllIcons . General . Information
380389 )
381390 }
382391 if (res == MessageConstants .YES ) {
383392 ActivityMonitor .getInstance(project).registerDigmaEngineEventInfo(eventName, mapOf (" message" to " retry triggered by user" ))
384393 exitValue = runCommand.get()
385394 if (isDockerDaemonDownExitValue(exitValue)) {
386- ActivityMonitor .getInstance(project).registerDigmaEngineEventInfo(eventName, mapOf (" message" to " restart daemon failed" ))
395+ ActivityMonitor .getInstance(project)
396+ .registerDigmaEngineEventInfo(eventName, mapOf (" message" to " restart daemon failed after user retry attempt" ))
387397 ApplicationManager .getApplication().invokeAndWait {
388- Messages .showMessageDialog(project, " Digma engine failed to run\n Docker daemon is down" , " " , null )
398+ Messages .showMessageDialog(
399+ project,
400+ " Digma engine failed to start\n Docker daemon is down" ,
401+ " Digma Engine Error" ,
402+ AllIcons .General .Error
403+ )
389404 }
390405 }
391406 } else {
0 commit comments