SLIDER-622 spin for deletion
diff --git a/slider-core/src/test/groovy/org/apache/slider/test/YarnMiniClusterTestBase.groovy b/slider-core/src/test/groovy/org/apache/slider/test/YarnMiniClusterTestBase.groovy
index dde8239..0850d25 100644
--- a/slider-core/src/test/groovy/org/apache/slider/test/YarnMiniClusterTestBase.groovy
+++ b/slider-core/src/test/groovy/org/apache/slider/test/YarnMiniClusterTestBase.groovy
@@ -18,7 +18,6 @@
package org.apache.slider.test
-import groovy.transform.CompileStatic
import groovy.util.logging.Slf4j
import org.apache.commons.logging.Log
import org.apache.commons.logging.LogFactory
@@ -493,10 +492,7 @@
log.info("deleting customer data at $clusterDir")
//this is a safety check to stop us doing something stupid like deleting /
assert clusterDir.toString().contains("/.slider/")
- dfs.delete(clusterDir, true)
- sleep(1000)
- dfs.delete(clusterDir, true)
- assert !dfs.exists(clusterDir), "delete operation failed —application in use?"
+ rigorousDelete(dfs, clusterDir, 60000)
}
@@ -544,6 +540,32 @@
}
/**
+ * Delete with some pauses and backoff; designed to handle slow delete
+ * operation in windows
+ * @param dfs
+ * @param clusterDir
+ */
+ public void rigorousDelete(
+ HadoopFS dfs, Path clusterDir, long timeout) {
+ Duration duration = new Duration(timeout)
+ duration.start()
+ boolean deleted = false;
+ while (!deleted) {
+ dfs.delete(clusterDir, true)
+ deleted = !dfs.exists(clusterDir)
+ if (!deleted ) {
+ if (duration.limitExceeded) {
+ assert !dfs.exists(
+ clusterDir), "delete operation failed —directory in use?"
+
+ }
+ sleep(1000)
+ }
+
+ }
+ }
+
+ /**
* Add arguments to launch Slider with.
*
* Extra arguments are added after standard arguments and before roles.