Skip to content

Commit

Permalink
Ensure disk cache root exists
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.

Closes bazelbuild#19202.

PiperOrigin-RevId: 555429326
Change-Id: Ifcfa8c686df30c03c9fca24be860b2db780a6374
  • Loading branch information
tylerwilliams authored and iancha1992 committed Aug 10, 2023
1 parent 7978458 commit f1daced
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -139,10 +139,7 @@ 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);
return new DiskCacheClient(cacheDir, verifyDownloads, digestUtil);
}

private static RemoteCacheClient createDiskAndHttpCache(
Expand All @@ -153,13 +150,7 @@ 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);
RemoteCacheClient httpCache = createHttp(options, cred, authAndTlsOptions, digestUtil, retrier);
return createDiskAndRemoteClient(
workingDirectory,
diskCachePath,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ public class DiskCacheClient implements RemoteCacheClient {
* @param checkActionResult whether check referenced blobs exist in CAS when checking AC. If this
* is {@code true} and blobs referenced by the AC are missing, ignore the AC.
*/
public DiskCacheClient(
Path root, boolean verifyDownloads, boolean checkActionResult, DigestUtil digestUtil) {
public DiskCacheClient(Path root, boolean verifyDownloads, 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 f1daced

Please sign in to comment.