Skip to content

Commit fb56ac9

Browse files
KyleFromKitwarekwrobot
authored andcommitted
Merge topic 'retry-directory-delete'
6bc7796 Retry removing directories on Windows 5729580 Use registry setting for removal retry count and delay Acked-by: Kitware Robot <[email protected]> Merge-request: !3667
2 parents 39d2ce4 + 6bc7796 commit fb56ac9

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

Source/cmFileCommand.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1356,7 +1356,7 @@ bool HandleRemoveImpl(std::vector<std::string> const& args, bool recurse,
13561356

13571357
if (cmSystemTools::FileIsDirectory(fileName) &&
13581358
!cmSystemTools::FileIsSymlink(fileName) && recurse) {
1359-
cmSystemTools::RemoveADirectory(fileName);
1359+
cmSystemTools::RepeatedRemoveDirectory(fileName);
13601360
} else {
13611361
cmSystemTools::RemoveFile(fileName);
13621362
}

Source/cmSystemTools.cxx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2838,14 +2838,20 @@ bool cmSystemTools::CheckRPath(std::string const& file,
28382838

28392839
bool cmSystemTools::RepeatedRemoveDirectory(const std::string& dir)
28402840
{
2841+
#ifdef _WIN32
28412842
// Windows sometimes locks files temporarily so try a few times.
2842-
for (int i = 0; i < 10; ++i) {
2843+
WindowsFileRetry retry = cmSystemTools::GetWindowsFileRetry();
2844+
2845+
for (unsigned int i = 0; i < retry.Count; ++i) {
28432846
if (cmSystemTools::RemoveADirectory(dir)) {
28442847
return true;
28452848
}
2846-
cmSystemTools::Delay(100);
2849+
cmSystemTools::Delay(retry.Delay);
28472850
}
28482851
return false;
2852+
#else
2853+
return cmSystemTools::RemoveADirectory(dir);
2854+
#endif
28492855
}
28502856

28512857
bool cmSystemTools::StringToLong(const char* str, long* value)

0 commit comments

Comments
 (0)