https://github.com/ayushpareek2003 created https://github.com/llvm/llvm-project/pull/132640
At line 754, added a FOR loop for retrying until we get a unique path >From 3927b90a26ea1bd04fe7e55a6d21e7d27ce68839 Mon Sep 17 00:00:00 2001 From: Ayush Pareek <ayushpareek1...@gmail.com> Date: Mon, 24 Mar 2025 03:45:31 +0530 Subject: [PATCH] Retry for Unique Path Creation At line 754, added a FOR loop for retrying until we get a unique path --- .../DependencyScanningWorker.cpp | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp b/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp index ca15a088c308d..5527275575b26 100644 --- a/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp +++ b/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp @@ -750,9 +750,25 @@ bool DependencyScanningWorker::computeDependencies( auto InMemoryFS = llvm::makeIntrusiveRefCnt<llvm::vfs::InMemoryFileSystem>(); InMemoryFS->setCurrentWorkingDirectory(WorkingDirectory); SmallString<128> FakeInputPath; - // TODO: We should retry the creation if the path already exists. - llvm::sys::fs::createUniquePath(ModuleName + "-%%%%%%%%.input", FakeInputPath, - /*MakeAbsolute=*/false); + + unsigned RetryCount = 5; // retries to create + bool UniquePathCreated = false; + + for (unsigned i = 0; i < RetryCount; ++i) { + if (llvm::sys::fs::createUniquePath(ModuleName + "-%%%%%%%%.input", FakeInputPath, + /*MakeAbsolute=*/false)) { + if (!llvm::sys::fs::exists(FakeInputPath)) { + UniquePathCreated = true; + break; // Successfully created a unique path + } + } + } + if (!UniquePathCreated) { + llvm::errs() << "Error: Failed to create a unique input path after " + << RetryCount << " retries.\n"; + return false; // Handle failure appropriately + } + InMemoryFS->addFile(FakeInputPath, 0, llvm::MemoryBuffer::getMemBuffer("")); llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> InMemoryOverlay = InMemoryFS; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits