[PATCH] D145618: [Debuginfod] Prune cache after fetch.

Daniel Thornburgh via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 9 13:46:47 PST 2023


mysterymath updated this revision to Diff 503925.
mysterymath added a comment.

Require curl in test.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D145618/new/

https://reviews.llvm.org/D145618

Files:
  llvm/lib/Debuginfod/Debuginfod.cpp
  llvm/test/tools/llvm-debuginfod-find/cache.test


Index: llvm/test/tools/llvm-debuginfod-find/cache.test
===================================================================
--- /dev/null
+++ llvm/test/tools/llvm-debuginfod-find/cache.test
@@ -0,0 +1,38 @@
+REQUIRES: curl
+UNSUPPORTED: system-windows
+
+RUN: rm -rf %t/*
+RUN: mkdir -p %t/buildid/012345678901234{5,6}
+RUN: echo 'f' > %t/buildid/0123456789012345/debuginfo
+RUN: cp %t/buildid/012345678901234{5,6}/debuginfo
+RUN: mkdir %t/cache
+RUN: env DEBUGINFOD_CACHE_PATH=%t/cache DEBUGINFOD_URLS=file://%t \
+RUN:   llvm-debuginfod-find --debuginfo 0123456789012345 > /dev/null
+RUN: ls %t/cache | FileCheck --check-prefix=FIRST --match-full-lines --implicit-check-not {{.}} %s
+
+# Set policy to discard all but one file.
+RUN: env DEBUGINFOD_CACHE_POLICY=prune_interval=0s:cache_size_files=1 \
+RUN:     DEBUGINFOD_CACHE_PATH=%t/cache DEBUGINFOD_URLS=file://%t \
+RUN:     llvm-debuginfod-find --debuginfo 0123456789012346 > /dev/null
+RUN: ls %t/cache | FileCheck --check-prefix=SECOND --match-full-lines --implicit-check-not {{.}} %s
+
+# Add the first file back to the cache.
+RUN: env DEBUGINFOD_CACHE_PATH=%t/cache DEBUGINFOD_URLS=file://%t \
+RUN:     llvm-debuginfod-find --debuginfo 0123456789012345 > /dev/null
+RUN: ls %t/cache | FileCheck --check-prefix=BOTH --match-full-lines --implicit-check-not {{.}} %s
+
+# An invalid cache policy has no effect.
+RUN: env DEBUGINFOD_CACHE_POLICY=invalid:prune_interval=0s:cache_size_files=1 \
+RUN:     DEBUGINFOD_CACHE_PATH=%t/cache DEBUGINFOD_URLS=file://%t \
+RUN:     llvm-debuginfod-find --debuginfo 0123456789012346 > /dev/null
+RUN: ls %t/cache | FileCheck --check-prefix=BOTH --match-full-lines --implicit-check-not {{.}} %s
+
+FIRST: llvmcache-6663022027345102449
+FIRST: llvmcache.timestamp
+
+SECOND: llvmcache-6762748755046480574
+SECOND: llvmcache.timestamp
+
+BOTH: llvmcache-6663022027345102449
+BOTH: llvmcache-6762748755046480574
+BOTH: llvmcache.timestamp
Index: llvm/lib/Debuginfod/Debuginfod.cpp
===================================================================
--- llvm/lib/Debuginfod/Debuginfod.cpp
+++ llvm/lib/Debuginfod/Debuginfod.cpp
@@ -251,17 +251,25 @@
 
     // Perform the HTTP request and if successful, write the response body to
     // the cache.
-    StreamedHTTPResponseHandler Handler(
-        [&]() { return CacheAddStream(Task, ""); }, Client);
-    HTTPRequest Request(ArtifactUrl);
-    Request.Headers = getHeaders();
-    Error Err = Client.perform(Request, Handler);
-    if (Err)
-      return std::move(Err);
+    {
+      StreamedHTTPResponseHandler Handler(
+          [&]() { return CacheAddStream(Task, ""); }, Client);
+      HTTPRequest Request(ArtifactUrl);
+      Request.Headers = getHeaders();
+      Error Err = Client.perform(Request, Handler);
+      if (Err)
+        return std::move(Err);
+
+      unsigned Code = Client.responseCode();
+      if (Code && Code != 200)
+        continue;
+    }
 
-    unsigned Code = Client.responseCode();
-    if (Code && Code != 200)
-      continue;
+    Expected<CachePruningPolicy> PruningPolicyOrErr =
+        parseCachePruningPolicy(std::getenv("DEBUGINFOD_CACHE_POLICY"));
+    if (!PruningPolicyOrErr)
+      return PruningPolicyOrErr.takeError();
+    pruneCache(CacheDirectoryPath, *PruningPolicyOrErr);
 
     // Return the path to the artifact on disk.
     return std::string(AbsCachedArtifactPath);


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D145618.503925.patch
Type: text/x-patch
Size: 3375 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230309/536e299d/attachment.bin>


More information about the llvm-commits mailing list