Details
-
Bug
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
Correctness
-
Normal
-
Normal
-
User Report
-
All
-
None
-
Description
If an endpoint is convicted and that endpoint is a coordinator then ActiveRepairService::removeParentRepairSession is called.
The issue is that this occurs on clearSnapshotExecutor and can happen while RepairMessageVerbHandler is in process of taking a snapshot. So then you get a race condition and clearSnapshot will throw a java.nio.file.DirectoryNotEmptyException
public static void deleteRecursiveWithThrottle(File dir, RateLimiter rateLimiter) { if (dir.isDirectory()) { String[] children = dir.list(); for (String child : children) deleteRecursiveWithThrottle(new File(dir, child), rateLimiter); } // The directory is now empty so now it can be smoked deleteWithConfirmWithThrottle(dir, rateLimiter); }
Due to the directory not being empty when it goes to remove the directory at the end.