diff --git a/site/en/docs/remote-execution-caching-debug.md b/site/en/docs/remote-execution-caching-debug.md index ce940d30c55b3d..c55dc8fa0e7690 100644 --- a/site/en/docs/remote-execution-caching-debug.md +++ b/site/en/docs/remote-execution-caching-debug.md @@ -63,7 +63,7 @@ If you are not getting the cache hit rate you are expecting, do the following: ```posix-terminal bazel clean - bazel {{ '' }}--optional-flags{{ '' }} build //{{ '' }}your:target{{ '' }} --execution_log_json_file=/tmp/exec1.json + bazel {{ '' }}--optional-flags{{ '' }} build //{{ '' }}your:target{{ '' }} --execution_log_binary_file=/tmp/exec1.log ``` b. [Compare the execution logs](#compare-logs-the-execution-logs) between the @@ -78,6 +78,11 @@ If you are not getting the cache hit rate you are expecting, do the following: in your configuration is preventing caching. Continue with this section to check for common problems. + If you do not need to diff execution logs, you can use the + human-readable `--execution_log_json_file` flag instead. It cannot be + used for stable diffing since it contains execution time and doesn't + guarantee ordering. + 5. Check that all actions in the execution log have `cacheable` set to true. If `cacheable` does not appear in the execution log for a give action, that means that the corresponding rule may have a `no-cache` tag in its @@ -119,7 +124,7 @@ not happening across machines, do the following: ```posix-terminal bazel clean - bazel ... build ... --execution_log_json_file=/tmp/exec1.json + bazel ... build ... --execution_log_binary_file=/tmp/exec1.log ``` 3. Run the build on the second machine, ensuring the modification from step 1 @@ -128,7 +133,7 @@ not happening across machines, do the following: ```posix-terminal bazel clean - bazel ... build ... --execution_log_json_file=/tmp/exec2.json + bazel ... build ... --execution_log_binary_file=/tmp/exec2.log ``` 4. [Compare the execution logs](#compare-logs-the-execution-logs) for the two @@ -147,8 +152,27 @@ logs are identical then so are the action cache keys. To compare logs for two builds that are not sharing cache hits as expected, do the folowing: -1. Get the execution logs from each build and store them as `/tmp/exec1.json` and - `/tmp/exec2.json`. +1. Get the execution logs from each build and store them as `/tmp/exec1.log` and + `/tmp/exec2.log`. + +2. Download the Bazel source code and navigate to the Bazel folder by using + the command below. You need the source code to parse the + execution logs with the + [execlog parser](https://source.bazel.build/bazel/+/master:src/tools/execlog/). + + git clone https://github.com/bazelbuild/bazel.git + cd bazel + +3. Use the execution log parser to convert the logs to text. The following + invocation also sorts the actions in the second log to match the action order + in the first log for ease of comparison. + + bazel build src/tools/execlog:parser + bazel-bin/src/tools/execlog/parser \ + --log_path=/tmp/exec1.log \ + --log_path=/tmp/exec2.log \ + --output_path=/tmp/exec1.log.txt \ + --output_path=/tmp/exec2.log.txt -2. Use your favourite text differ to diff `/tmp/exec1.json` and - `/tmp/exec2.json`. +4. Use your favourite text differ to diff `/tmp/exec1.log.txt` and + `/tmp/exec2.log.txt`.