From 60eefe02485c365f07cf9a8dd7d831103c756e53 Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Sun, 6 Mar 2022 07:58:26 -0700 Subject: [PATCH] more aggressive error handling on bind operations, liveness probe improvements Signed-off-by: Travis Glenn Hansen --- bin/democratic-csi | 20 +++++++++++++++++--- bin/liveness-probe | 15 ++++++++++++--- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/bin/democratic-csi b/bin/democratic-csi index c07386c..52f149d 100755 --- a/bin/democratic-csi +++ b/bin/democratic-csi @@ -339,7 +339,7 @@ logger.info( (eventType) => { process.on(eventType, (code) => { console.log(`running server shutdown, exit code: ${code}`); - let socketPath = args.serverSocket || ""; + let socketPath = bindSocket; socketPath = socketPath.replace(/^unix:\/\//g, ""); if (socketPath && fs.existsSync(socketPath)) { fs.unlinkSync(socketPath); @@ -358,7 +358,11 @@ if (require.main === module) { csiServer.bindAsync( bindAddress, grpc.ServerCredentials.createInsecure(), - () => { + (err) => { + if (err) { + reject(err); + return; + } resolve(); } ); @@ -366,11 +370,21 @@ if (require.main === module) { } if (bindSocket) { + let socketPath = bindSocket; + socketPath = socketPath.replace(/^unix:\/\//g, ""); + if (socketPath && fs.existsSync(socketPath)) { + fs.unlinkSync(socketPath); + } + await new Promise((resolve, reject) => { csiServer.bindAsync( bindSocket, grpc.ServerCredentials.createInsecure(), - () => { + (err) => { + if (err) { + reject(err); + return; + } resolve(); } ); diff --git a/bin/liveness-probe b/bin/liveness-probe index d8b50ce..48847ea 100755 --- a/bin/liveness-probe +++ b/bin/liveness-probe @@ -2,6 +2,7 @@ const yaml = require("js-yaml"); const fs = require("fs"); +const { grpc } = require("../src/utils/grpc"); let options; const args = require("yargs") @@ -33,8 +34,6 @@ const args = require("yargs") const package = require("../package.json"); args.version = package.version; -//const grpc = require("grpc"); -const grpc = require("grpc-uds"); const protoLoader = require("@grpc/proto-loader"); const csiVersion = process.env.CSI_VERSION || args.csiVersion || "1.2.0"; const PROTO_PATH = __dirname + "/../csi_proto/csi-v" + csiVersion + ".proto"; @@ -51,8 +50,18 @@ const packageDefinition = protoLoader.loadSync(PROTO_PATH, { const protoDescriptor = grpc.loadPackageDefinition(packageDefinition); const csi = protoDescriptor.csi.v1; +let csiAddress = args.csiAddress; +const tcpRegex = /[^\:]+:[0-9]*$/; + +if ( + !tcpRegex.test(csiAddress) && + !csiAddress.toLowerCase().startsWith("unix://") +) { + csiAddress = "unix://" + csiAddress; +} + const clientIdentity = new csi.Identity( - args.csiAddress, + csiAddress, grpc.credentials.createInsecure() );