Skip to content

Commit fe72f5b

Browse files
committed
more details if docker daemon is down
1 parent 2bf11c2 commit fe72f5b

File tree

1 file changed

+24
-9
lines changed

1 file changed

+24
-9
lines changed

ide-common/src/main/kotlin/org/digma/intellij/plugin/docker/DockerService.kt

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package org.digma.intellij.plugin.docker
33
import com.intellij.execution.configurations.GeneralCommandLine
44
import com.intellij.execution.process.ProcessOutput
55
import com.intellij.execution.util.ExecUtil
6+
import com.intellij.icons.AllIcons
67
import com.intellij.openapi.application.ApplicationManager
78
import com.intellij.openapi.components.Service
89
import 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\nDocker daemon is down", "", null)
398+
Messages.showMessageDialog(
399+
project,
400+
"Digma engine failed to start\nDocker daemon is down",
401+
"Digma Engine Error",
402+
AllIcons.General.Error
403+
)
389404
}
390405
}
391406
} else {

0 commit comments

Comments
 (0)