diff options
author | 2016-05-24 11:16:30 +0000 | |
---|---|---|
committer | 2016-05-24 11:58:34 +0000 | |
commit | cf34cf9454e372926f36d4e669ac0d8d4ff77294 (patch) | |
tree | c2d9c37463249ade5337bbca03dc647b397d8f0b /src | |
parent | 34d4e6f1bbe80e8b0d42caddc22b5b941a3efeb1 (diff) |
workers: When a WorkerFactory is instantiated, first remove old worker logs that belong to a prior running Bazel server.
--
MOS_MIGRATED_REVID=123092141
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java | 11 | ||||
-rwxr-xr-x | src/test/shell/bazel/bazel_worker_test.sh | 28 |
2 files changed, 38 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java b/src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java index e16bd383c2..ef429461a3 100644 --- a/src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java +++ b/src/main/java/com/google/devtools/build/lib/worker/WorkerModule.java @@ -59,7 +59,16 @@ public class WorkerModule extends BlazeModule { if (workerFactory == null) { Path logDir = env.getOutputBase().getRelative("worker-logs"); try { - logDir.createDirectory(); + if (!logDir.createDirectory()) { + // Clean out old log files. + for (Path logFile : logDir.getDirectoryEntries()) { + try { + logFile.delete(); + } catch (IOException e) { + env.getReporter().handle(Event.error("Could not delete old worker log: " + logFile)); + } + } + } } catch (IOException e) { env .getReporter() diff --git a/src/test/shell/bazel/bazel_worker_test.sh b/src/test/shell/bazel/bazel_worker_test.sh index 38f768d3e9..36ff8dfead 100755 --- a/src/test/shell/bazel/bazel_worker_test.sh +++ b/src/test/shell/bazel/bazel_worker_test.sh @@ -394,4 +394,32 @@ EOF expect_log "Build completed, shutting down worker pool..." } +function test_logs_are_deleted_on_server_restart() { + prepare_example_worker + cat >>BUILD <<'EOF' +[work( + name = "hello_world_%s" % idx, + worker = ":worker", + args = ["--write_uuid", "--write_counter"], +) for idx in range(10)] +EOF + + bazel build -s --worker_verbose --strategy=Work=worker --worker_max_instances=1 --worker_quit_after_build :hello_world_1 &> $TEST_log \ + || fail "build failed" + + expect_log "Created new Work worker (id [0-9]\+)" + + worker_log=$(egrep -o -- 'logging to .*/worker-logs/.*' "$TEST_log" | sed 's/^logging to //') + + [ -e "$worker_log" ] \ + || fail "Worker log was not found" + + # Running a build after a server shutdown should trigger the removal of old worker log files. + bazel shutdown &> $TEST_log + bazel build &> $TEST_log + + [ ! -e "$worker_log" ] \ + || fail "Worker log was not deleted" +} + run_suite "Worker integration tests" |