From d1aa8108c11e33e908ec0306f839b4c5b476a17e Mon Sep 17 00:00:00 2001 From: Travis Glenn Hansen Date: Sat, 11 Jun 2022 13:46:49 -0600 Subject: [PATCH] more robust api delete process, better failure logging Signed-off-by: Travis Glenn Hansen --- src/driver/freenas/api.js | 25 +++++++++++++++++++++---- src/driver/index.js | 2 +- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/driver/freenas/api.js b/src/driver/freenas/api.js index 0b83d84..0a0b969 100644 --- a/src/driver/freenas/api.js +++ b/src/driver/freenas/api.js @@ -3010,10 +3010,27 @@ class FreeNASApiDriver extends CsiBaseDriver { // NOTE: -R will recursively delete items + dependent filesets // delete dataset try { - await httpApiClient.DatasetDelete(datasetName, { - recursive: true, - force: true, - }); + await GeneralUtils.retry( + 12, + 5000, + async () => { + await httpApiClient.DatasetDelete(datasetName, { + recursive: true, + force: true, + }); + }, + { + retryCondition: (err) => { + if ( + err.toString().includes("dataset is busy") || + err.toString().includes("target is busy") + ) { + return true; + } + return false; + }, + } + ); } catch (err) { if (err.toString().includes("filesystem has dependent clones")) { throw new GrpcError( diff --git a/src/driver/index.js b/src/driver/index.js index a1db307..72efb3c 100644 --- a/src/driver/index.js +++ b/src/driver/index.js @@ -2607,7 +2607,7 @@ class CsiBaseDriver { if (!result) { throw new GrpcError( grpc.status.FAILED_PRECONDITION, - `it appears something else is already mounted at ${target_path}` + `it appears ${normalized_staging_device} is already mounted at ${target_path}, should be ${normalized_staging_path}` ); } }