From d4fd39d6db7564f126ac5f2911c15639f51d749c Mon Sep 17 00:00:00 2001 From: shuplenkov Date: Thu, 20 Apr 2023 19:35:34 +0300 Subject: [PATCH 1/5] feat(dashamte): handle `connect ENOENT /var/run/docker.sock` docker error --- packages/dashmate/src/docker/DockerCompose.js | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/dashmate/src/docker/DockerCompose.js b/packages/dashmate/src/docker/DockerCompose.js index 29c41f185b3..1a1025316cc 100644 --- a/packages/dashmate/src/docker/DockerCompose.js +++ b/packages/dashmate/src/docker/DockerCompose.js @@ -362,21 +362,27 @@ class DockerCompose { const dockerComposeInstallLink = 'https://docs.docker.com/compose/install/'; const dockerInstallLink = 'https://docs.docker.com/engine/install/'; + const dockerPostInstallLinuxLink = 'https://docs.docker.com/engine/install/linux-postinstall/'; // Check docker if (!hasbin.sync('docker')) { throw new Error(`Docker is not installed. Please follow instructions ${dockerInstallLink}`); } - const dockerVersion = await new Promise((resolve, reject) => { - this.docker.version((err, data) => { - if (err) { - return reject(err); - } - - return resolve(data.Version); + let dockerVersion; + try { + dockerVersion = await new Promise((resolve, reject) => { + this.docker.version((err, data) => { + if (err) { + return reject(err); + } + + return resolve(data.Version); + }); }); - }); + } catch (e) { + throw new Error(`Docker is not accessible. Please follow instructions ${dockerPostInstallLinuxLink}`); + } if (semver.lt(dockerVersion.trim(), DockerCompose.DOCKER_MIN_VERSION)) { throw new Error(`Update Docker to version ${DockerCompose.DOCKER_MIN_VERSION} or higher. Please follow instructions ${dockerInstallLink}`); From d1a95a8f1e119bd0ccba2cb9a4de58e2cd31828d Mon Sep 17 00:00:00 2001 From: shuplenkov Date: Mon, 24 Apr 2023 19:40:36 +0300 Subject: [PATCH 2/5] fix PR comments --- packages/dashmate/src/docker/DockerCompose.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/dashmate/src/docker/DockerCompose.js b/packages/dashmate/src/docker/DockerCompose.js index 1a1025316cc..dae993bb130 100644 --- a/packages/dashmate/src/docker/DockerCompose.js +++ b/packages/dashmate/src/docker/DockerCompose.js @@ -363,6 +363,7 @@ class DockerCompose { const dockerComposeInstallLink = 'https://docs.docker.com/compose/install/'; const dockerInstallLink = 'https://docs.docker.com/engine/install/'; const dockerPostInstallLinuxLink = 'https://docs.docker.com/engine/install/linux-postinstall/'; + const dockerContextLink = 'https://docs.docker.com/engine/context/working-with-contexts/'; // Check docker if (!hasbin.sync('docker')) { @@ -381,7 +382,7 @@ class DockerCompose { }); }); } catch (e) { - throw new Error(`Docker is not accessible. Please follow instructions ${dockerPostInstallLinuxLink}`); + throw new Error(`${e.message}. Can't connect to Docker. Possible reasons: 1. Docker is not started 2. Permission issues ${dockerPostInstallLinuxLink} 3. Wrong context ${dockerContextLink}`); } if (semver.lt(dockerVersion.trim(), DockerCompose.DOCKER_MIN_VERSION)) { From 71eda7c4b4ae881cf074f82fcf02dce57750ae6e Mon Sep 17 00:00:00 2001 From: shuplenkov Date: Mon, 24 Apr 2023 19:53:11 +0300 Subject: [PATCH 3/5] fix PR comments --- packages/dashmate/src/docker/DockerCompose.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dashmate/src/docker/DockerCompose.js b/packages/dashmate/src/docker/DockerCompose.js index dae993bb130..0303226bedf 100644 --- a/packages/dashmate/src/docker/DockerCompose.js +++ b/packages/dashmate/src/docker/DockerCompose.js @@ -382,7 +382,7 @@ class DockerCompose { }); }); } catch (e) { - throw new Error(`${e.message}. Can't connect to Docker. Possible reasons: 1. Docker is not started 2. Permission issues ${dockerPostInstallLinuxLink} 3. Wrong context ${dockerContextLink}`); + throw new Error(`Can't connect to Docker Engine: ${e.message}.\n\nPossible reasons:\n1. Docker is not started\n2. Permission issues ${dockerPostInstallLinuxLink}\n3. Wrong context ${dockerContextLink}`); } if (semver.lt(dockerVersion.trim(), DockerCompose.DOCKER_MIN_VERSION)) { From dd148bfc9a57355240d48c4adc44b4db1dee36c9 Mon Sep 17 00:00:00 2001 From: shuplenkov Date: Mon, 24 Apr 2023 20:05:51 +0300 Subject: [PATCH 4/5] fix(dashmate): empty masternode status while syncing --- packages/dashmate/src/status/scopes/masternode.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dashmate/src/status/scopes/masternode.js b/packages/dashmate/src/status/scopes/masternode.js index e17de8d7380..5935688d2f0 100644 --- a/packages/dashmate/src/status/scopes/masternode.js +++ b/packages/dashmate/src/status/scopes/masternode.js @@ -79,7 +79,7 @@ function getMasternodeScopeFactory(dockerCompose, createRpcClient, getConnection masternode.proTxHash = proTxHash; masternode.status = status; - masternode.state = state; + masternode.state = state || MasternodeStateEnum.UNKNOWN; if (state === MasternodeStateEnum.READY) { const { dmnState } = masternodeStatus.result; From 4bfc38fa8c2f7fc5315fe5a908e9565ae05cef45 Mon Sep 17 00:00:00 2001 From: shuplenkov Date: Mon, 24 Apr 2023 20:10:43 +0300 Subject: [PATCH 5/5] fix(dashmate): empty masternode status while syncing --- packages/dashmate/src/status/scopes/masternode.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dashmate/src/status/scopes/masternode.js b/packages/dashmate/src/status/scopes/masternode.js index e17de8d7380..5935688d2f0 100644 --- a/packages/dashmate/src/status/scopes/masternode.js +++ b/packages/dashmate/src/status/scopes/masternode.js @@ -79,7 +79,7 @@ function getMasternodeScopeFactory(dockerCompose, createRpcClient, getConnection masternode.proTxHash = proTxHash; masternode.status = status; - masternode.state = state; + masternode.state = state || MasternodeStateEnum.UNKNOWN; if (state === MasternodeStateEnum.READY) { const { dmnState } = masternodeStatus.result;