1. /**
  2. * Releases resources of CLI arguments with retry logic.
  3. *
  4. * @param {Object} args - An object containing the CLI arguments.
  5. * @param {Function} releaseFunction - A function to release the resources.
  6. * @param {number} maxRetries - The maximum number of retry attempts.
  7. * @param {number} retryDelay - The delay between retry attempts in milliseconds.
  8. * @returns {Promise<void>} A promise that resolves when resources are released or the retry limit is reached.
  9. */
  10. async function releaseResourcesWithRetry(args, releaseFunction, maxRetries, retryDelay) {
  11. let retries = 0;
  12. while (retries < maxRetries) {
  13. try {
  14. releaseFunction(args); // Release the resources
  15. console.log("Resources released successfully.");
  16. return; // Exit the function if successful
  17. } catch (error) {
  18. retries++;
  19. console.error(`Resource release failed (attempt ${retries}/${maxRetries}):`, error);
  20. if (retries < maxRetries) {
  21. await new Promise(resolve => setTimeout(resolve, retryDelay)); // Wait before retrying
  22. } else {
  23. console.error("Max retries reached. Resource release failed.");
  24. throw error; // Re-throw the error if max retries are reached
  25. }
  26. }
  27. }
  28. }

Add your comment