/**
* Releases resources of CLI arguments with retry logic.
*
* @param {Object} args - An object containing the CLI arguments.
* @param {Function} releaseFunction - A function to release the resources.
* @param {number} maxRetries - The maximum number of retry attempts.
* @param {number} retryDelay - The delay between retry attempts in milliseconds.
* @returns {Promise<void>} A promise that resolves when resources are released or the retry limit is reached.
*/
async function releaseResourcesWithRetry(args, releaseFunction, maxRetries, retryDelay) {
let retries = 0;
while (retries < maxRetries) {
try {
releaseFunction(args); // Release the resources
console.log("Resources released successfully.");
return; // Exit the function if successful
} catch (error) {
retries++;
console.error(`Resource release failed (attempt ${retries}/${maxRetries}):`, error);
if (retries < maxRetries) {
await new Promise(resolve => setTimeout(resolve, retryDelay)); // Wait before retrying
} else {
console.error("Max retries reached. Resource release failed.");
throw error; // Re-throw the error if max retries are reached
}
}
}
}
Add your comment