Skip to content

Commit

Permalink
[6.4.0] Ensure disk cache root exists (#19225)
Browse files Browse the repository at this point in the history
The disk cache root directory was previously being manually created in
two places before creating the disk cache client. This CL instead
ensures that the disk cache root directory is created when
createDiskCache() is called, and simplifies the other callsites.

This fixes an issue where the disk cache directory might not exist if
using --digest_function=BLAKE3.

PiperOrigin-RevId: 555429326
Change-Id: Ifcfa8c686df30c03c9fca24be860b2db780a6374

(cherry picked from commit 00dfa2e)

Co-authored-by: Tyler Williams <williams.tyler@gmail.com>
  • Loading branch information
brentleyjones and tylerwilliams authored Aug 11, 2023
1 parent 7978458 commit 12214cf
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -139,9 +139,6 @@ private static DiskCacheClient createDiskCache(
throws IOException {
Path cacheDir =
workingDirectory.getRelative(Preconditions.checkNotNull(diskCachePath, "diskCachePath"));
if (!cacheDir.exists()) {
cacheDir.createDirectoryAndParents();
}
return new DiskCacheClient(cacheDir, verifyDownloads, checkActionResult, digestUtil);
}

Expand All @@ -153,12 +150,6 @@ private static RemoteCacheClient createDiskAndHttpCache(
AuthAndTLSOptions authAndTlsOptions,
DigestUtil digestUtil)
throws IOException {
Path cacheDir =
workingDirectory.getRelative(Preconditions.checkNotNull(diskCachePath, "diskCachePath"));
if (!cacheDir.exists()) {
cacheDir.createDirectoryAndParents();
}

RemoteCacheClient httpCache = createHttp(options, cred, authAndTlsOptions, digestUtil);
return createDiskAndRemoteClient(
workingDirectory,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public class DiskCacheClient implements RemoteCacheClient {
* is {@code true} and blobs referenced by the AC are missing, ignore the AC.
*/
public DiskCacheClient(
Path root, boolean verifyDownloads, boolean checkActionResult, DigestUtil digestUtil) {
Path root, boolean verifyDownloads, boolean checkActionResult, DigestUtil digestUtil) throws IOException {
this.verifyDownloads = verifyDownloads;
this.checkActionResult = checkActionResult;
this.digestUtil = digestUtil;
Expand All @@ -71,6 +71,8 @@ public DiskCacheClient(
root.getChild(
Ascii.toLowerCase(digestUtil.getDigestFunction().getValueDescriptor().getName()));
}

this.root.createDirectoryAndParents();
}

/** Returns {@code true} if the provided {@code key} is stored in the CAS. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ class OnDiskBlobStoreCache extends RemoteCache {
.setSymlinkAbsolutePathStrategy(SymlinkAbsolutePathStrategy.Value.ALLOWED)
.build();

public OnDiskBlobStoreCache(RemoteOptions options, Path cacheDir, DigestUtil digestUtil) {
public OnDiskBlobStoreCache(RemoteOptions options, Path cacheDir, DigestUtil digestUtil)
throws IOException {
super(
CAPABILITIES,
new DiskCacheClient(
Expand Down

0 comments on commit 12214cf

Please sign in to comment.