-
Notifications
You must be signed in to change notification settings - Fork 158
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Is Remote Build without the Bytes handled correctly? #185
Comments
The cache is not under pressure, each build at max adds 1/20th to the cache. |
To be clear, the Bazel error we get because of this is:
|
bazel-remote evicts cache items in LRU order, and ActionCache items are checked to confirm that all referenced CAS items are available before returning a cache hit to the client (unless you specify
|
20gb
At most 1gb (clean build), normally less than 500mb
1-2 (local to each CI instance), but when this has happened it's just the single client.
All the same. It's a CI build with locked down options.
For this use case, yes, since it's just the local CI instance, not being used remotely.
4 minutes.
No. Based on what you said, I assume the AC is confirmed, but then the CAS is evicted between confirmation and it being asked for by the client. But giving my stats above, that shouldn't happen if when the AC is confirmed it counts a cache hit on the CAS entries (my assumption is that this step isn't happening). |
I'm also at f99b78c in case the matters. |
Are you restarting bazel-remote between runs? If so, this might be caused by #118. In order to debug this, I think you will need a build with some extra logging- in particular, you should make Background: for each referenced CAS blob Then restart bazel-remote, and redirect the stderr and stdout to a log file, then make a build that triggers this error, and save the log file. Grep the log file for the missing hash blob, and share the results here. I am not familiar with bazel's build-without-the-bytes implementation, but this should give us a timeline of what it's doing so we can figure out if bazel-remote is behaving properly. |
No. I'll look into making the debug edits you suggested. |
This is going to take me a little while to get to, but I do plan on digging into it. |
I will try to take a look tomorrow. |
Before returning ActionCache cache hits, we need to confirm that we have all the referenced blobs in the CAS. Previously, we checked the OuputDirectory references themselves, but not the blobs that they referenced. This might have broken bazel "builds without the bytes" in some cases. Possible fix for buchgr#185.
I wonder if you could test #187 ? |
Yes. I'll report back within 2 hours. |
#187 looks to have fixed the errors I was receiving. |
Before returning ActionCache cache hits, we need to confirm that we have all the referenced blobs in the CAS. Previously, we checked the OuputDirectory references themselves, but not the blobs that they referenced. This could break bazel "builds without the bytes" in some cases. Fixes buchgr#185.
Before returning ActionCache cache hits, we need to confirm that we have all the referenced blobs in the CAS. Previously, we checked the OuputDirectory references themselves, but not the blobs that they referenced. This could break bazel "builds without the bytes" in some cases. Fixes #185.
Great- thanks for the bug report, and helping test this. |
I've recently reached the maximum size in my local instance of
bazel-remote
, and just after that I got a 404 during a build for a CAS item that wasn't found, but should have been there, since it was returned from the AC.When
bazel-remote
returns something from the AC does it also increase the TTL of the corresponding CAS items (touching them or otherwise)?The text was updated successfully, but these errors were encountered: