try to make volume delete more robust

Signed-off-by: Travis Glenn Hansen <travisghansen@yahoo.com>
This commit is contained in:
Travis Glenn Hansen 2021-09-29 01:42:24 -06:00
parent a45e0967f5
commit fdb2cfa8ed
1 changed files with 22 additions and 1 deletions

View File

@ -1,6 +1,7 @@
const { CsiBaseDriver } = require("../index");
const SshClient = require("../../utils/ssh").SshClient;
const { GrpcError, grpc } = require("../../utils/grpc");
const sleep = require("../../utils/general").sleep;
const { Zetabyte, ZfsSshProcessManager } = require("../../utils/zfs");
@ -1243,7 +1244,27 @@ class ControllerZfsSshBaseDriver extends CsiBaseDriver {
// NOTE: -R will recursively delete items + dependent filesets
// delete dataset
try {
await zb.zfs.destroy(datasetName, { recurse: true, force: true });
let max_tries = 5;
let sleep_time = 3000;
let current_try = 1;
let success = false;
while(!success && current_try <= max_tries) {
try {
await zb.zfs.destroy(datasetName, { recurse: true, force: true });
success = true;
} catch (err) {
if (err.toString().includes("dataset is busy")) {
current_try++;
if (current_try > max_tries) {
throw err;
} else {
await sleep(sleep_time);
}
} else {
throw err;
}
}
}
} catch (err) {
if (err.toString().includes("filesystem has dependent clones")) {
throw new GrpcError(