diff --git a/src/driver/controller-zfs-generic/index.js b/src/driver/controller-zfs-generic/index.js index 6a6c9c7..c3aa985 100644 --- a/src/driver/controller-zfs-generic/index.js +++ b/src/driver/controller-zfs-generic/index.js @@ -519,12 +519,12 @@ delete ${iscsiName} execClient.buildCommand(command, args), options ); - if (response.code != 0) { - throw new Error(response); - } driver.ctx.logger.verbose( "TargetCLI response: " + JSON.stringify(response) ); + if (response.code != 0) { + throw response; + } return response; } } diff --git a/src/driver/index.js b/src/driver/index.js index 605d37d..6d0a87b 100644 --- a/src/driver/index.js +++ b/src/driver/index.js @@ -2203,7 +2203,7 @@ class CsiBaseDriver { result = await filesystem.pathExists(block_path); if (result) { result = await GeneralUtils.retry( - 10, + 30, 0, async () => { return await filesystem.rm(block_path); @@ -2223,7 +2223,7 @@ class CsiBaseDriver { result = await filesystem.pathExists(staging_target_path); if (result) { result = await GeneralUtils.retry( - 10, + 30, 0, async () => { return await filesystem.rmdir(staging_target_path); @@ -2865,7 +2865,7 @@ class CsiBaseDriver { if (result) { if (fs.lstatSync(target_path).isDirectory()) { result = await GeneralUtils.retry( - 10, + 30, 0, async () => { return await filesystem.rmdir(target_path); @@ -2881,7 +2881,7 @@ class CsiBaseDriver { ); } else { result = await GeneralUtils.retry( - 10, + 30, 0, async () => { return await filesystem.rm([target_path]); diff --git a/src/utils/filesystem.js b/src/utils/filesystem.js index e4f90c2..a5cfd63 100644 --- a/src/utils/filesystem.js +++ b/src/utils/filesystem.js @@ -1,5 +1,6 @@ const cp = require("child_process"); const fs = require("fs"); +const GeneralUtils = require("./general"); const path = require("path"); const DEFAULT_TIMEOUT = process.env.FILESYSTEM_DEFAULT_TIMEOUT || 30000; @@ -835,7 +836,21 @@ class Filesystem { async pathExists(path) { let result = false; try { - fs.statSync(path); + await GeneralUtils.retry( + 10, + 200, + () => { + fs.statSync(path); + }, + { + retryCondition: (err) => { + if (err.code == "UNKNOWN") { + return true; + } + return false; + }, + } + ); result = true; } catch (err) { if (err.code !== "ENOENT") {