Show users that multiplex-worker is in use
Fix: #10535
Closes #10732.
PiperOrigin-RevId: 303129331
diff --git a/src/main/java/com/google/devtools/build/lib/worker/WorkerFactory.java b/src/main/java/com/google/devtools/build/lib/worker/WorkerFactory.java
index be83573..ea07cff 100644
--- a/src/main/java/com/google/devtools/build/lib/worker/WorkerFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/worker/WorkerFactory.java
@@ -54,8 +54,9 @@
@Override
public Worker create(WorkerKey key) throws Exception {
int workerId = pidCounter.getAndIncrement();
+ String workTypeName = WorkerKey.makeWorkerTypeName(key.getProxied());
Path logFile =
- workerBaseDir.getRelative("worker-" + workerId + "-" + key.getMnemonic() + ".log");
+ workerBaseDir.getRelative(workTypeName + "-" + workerId + "-" + key.getMnemonic() + ".log");
Worker worker;
boolean sandboxed = workerOptions.workerSandboxing || key.mustBeSandboxed();
@@ -77,9 +78,10 @@
reporter.handle(
Event.info(
String.format(
- "Created new %s %s worker (id %d), logging to %s",
+ "Created new %s %s %s (id %d), logging to %s",
sandboxed ? "sandboxed" : "non-sandboxed",
key.getMnemonic(),
+ workTypeName,
workerId,
logFile)));
}
@@ -89,7 +91,12 @@
Path getSandboxedWorkerPath(WorkerKey key, int workerId) {
String workspaceName = key.getExecRoot().getBaseName();
return workerBaseDir
- .getRelative("worker-" + workerId + "-" + key.getMnemonic())
+ .getRelative(
+ WorkerKey.makeWorkerTypeName(key.getProxied())
+ + "-"
+ + workerId
+ + "-"
+ + key.getMnemonic())
.getRelative(workspaceName);
}
@@ -110,7 +117,10 @@
reporter.handle(
Event.info(
String.format(
- "Destroying %s worker (id %d)", key.getMnemonic(), p.getObject().getWorkerId())));
+ "Destroying %s %s (id %d)",
+ key.getMnemonic(),
+ WorkerKey.makeWorkerTypeName(key.getProxied()),
+ p.getObject().getWorkerId())));
}
p.getObject().destroy();
}
@@ -126,8 +136,10 @@
StringBuilder msg = new StringBuilder();
msg.append(
String.format(
- "%s worker (id %d) can no longer be used, because its files have changed on disk:",
- key.getMnemonic(), worker.getWorkerId()));
+ "%s %s (id %d) can no longer be used, because its files have changed on disk:",
+ key.getMnemonic(),
+ WorkerKey.makeWorkerTypeName(key.getProxied()),
+ worker.getWorkerId()));
TreeSet<PathFragment> files = new TreeSet<>();
files.addAll(key.getWorkerFilesWithHashes().keySet());
files.addAll(worker.getWorkerFilesWithHashes().keySet());
diff --git a/src/main/java/com/google/devtools/build/lib/worker/WorkerKey.java b/src/main/java/com/google/devtools/build/lib/worker/WorkerKey.java
index ab96192..5aa7bc7 100644
--- a/src/main/java/com/google/devtools/build/lib/worker/WorkerKey.java
+++ b/src/main/java/com/google/devtools/build/lib/worker/WorkerKey.java
@@ -110,6 +110,15 @@
return proxied;
}
+ /** Returns a user-friendly name for this worker type. */
+ public static String makeWorkerTypeName(boolean proxied) {
+ if (proxied) {
+ return "multiplex-worker";
+ } else {
+ return "worker";
+ }
+ }
+
@Override
public boolean equals(Object o) {
if (this == o) {
diff --git a/src/main/java/com/google/devtools/build/lib/worker/WorkerSpawnRunner.java b/src/main/java/com/google/devtools/build/lib/worker/WorkerSpawnRunner.java
index ea2b558..556ef48 100644
--- a/src/main/java/com/google/devtools/build/lib/worker/WorkerSpawnRunner.java
+++ b/src/main/java/com/google/devtools/build/lib/worker/WorkerSpawnRunner.java
@@ -129,7 +129,9 @@
return fallbackRunner.exec(spawn, context);
}
- context.report(ProgressStatus.SCHEDULING, getName());
+ context.report(
+ ProgressStatus.SCHEDULING,
+ WorkerKey.makeWorkerTypeName(Spawns.supportsMultiplexWorkers(spawn)));
return actuallyExec(spawn, context);
}
@@ -358,7 +360,7 @@
try (ResourceHandle handle =
resourceManager.acquireResources(owner, spawn.getLocalResources())) {
- context.report(ProgressStatus.EXECUTING, getName());
+ context.report(ProgressStatus.EXECUTING, WorkerKey.makeWorkerTypeName(key.getProxied()));
try {
worker.prepareExecution(inputFiles, outputs, key.getWorkerFilesWithHashes().keySet());
} catch (IOException e) {
diff --git a/src/test/java/com/google/devtools/build/lib/worker/WorkerKeyTest.java b/src/test/java/com/google/devtools/build/lib/worker/WorkerKeyTest.java
index a0a0fe2..83bbc01 100644
--- a/src/test/java/com/google/devtools/build/lib/worker/WorkerKeyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/worker/WorkerKeyTest.java
@@ -48,6 +48,8 @@
public void testWorkerKeyGetter() {
assertThat(workerKey.mustBeSandboxed()).isEqualTo(true);
assertThat(workerKey.getProxied()).isEqualTo(true);
+ assertThat(WorkerKey.makeWorkerTypeName(false)).isEqualTo("worker");
+ assertThat(WorkerKey.makeWorkerTypeName(true)).isEqualTo("multiplex-worker");
// Hash code contains args, env, execRoot, and mnemonic.
assertThat(workerKey.hashCode()).isEqualTo(322455166);
}
diff --git a/src/test/shell/integration/bazel_worker_multiplexer_test.sh b/src/test/shell/integration/bazel_worker_multiplexer_test.sh
index d64c3ec..564bffe 100755
--- a/src/test/shell/integration/bazel_worker_multiplexer_test.sh
+++ b/src/test/shell/integration/bazel_worker_multiplexer_test.sh
@@ -371,8 +371,8 @@
bazel build --worker_quit_after_build :hello_world_1 &> $TEST_log \
|| fail "build failed"
- expect_log "Created new ${WORKER_TYPE_LOG_STRING} Work worker (id [0-9]\+)"
- expect_log "Destroying Work worker (id [0-9]\+)"
+ expect_log "Created new ${WORKER_TYPE_LOG_STRING} Work multiplex-worker (id [0-9]\+)"
+ expect_log "Destroying Work multiplex-worker (id [0-9]\+)"
expect_log "Build completed, shutting down worker pool..."
}
@@ -389,9 +389,9 @@
bazel build --worker_quit_after_build :hello_world_1 &> $TEST_log \
|| fail "build failed"
- expect_log "Created new ${WORKER_TYPE_LOG_STRING} Work worker (id [0-9]\+)"
+ expect_log "Created new ${WORKER_TYPE_LOG_STRING} Work multiplex-worker (id [0-9]\+)"
- worker_log=$(egrep -o -- 'logging to .*/b(azel|laze)-workers/worker-[0-9]-Work.log' "$TEST_log" | sed 's/^logging to //')
+ worker_log=$(egrep -o -- 'logging to .*/b(azel|laze)-workers/multiplex-worker-[0-9]-Work.log' "$TEST_log" | sed 's/^logging to //')
[ -e "$worker_log" ] \
|| fail "Worker log was not found"
@@ -420,8 +420,8 @@
bazel build --worker_quit_after_build :hello_world &> $TEST_log \
|| fail "build failed"
- expect_not_log "Created new ${WORKER_TYPE_LOG_STRING} Work worker (id [0-9]\+)"
- expect_not_log "Destroying Work worker (id [0-9]\+)"
+ expect_not_log "Created new ${WORKER_TYPE_LOG_STRING} Work multiplex-worker (id [0-9]\+)"
+ expect_not_log "Destroying Work multiplex-worker (id [0-9]\+)"
# WorkerSpawnStrategy falls back to standalone strategy, so we still expect the output to be generated.
[ -e "$BINS/hello_world.out" ] \
@@ -460,12 +460,12 @@
bazel build :hello_clean &> $TEST_log \
|| fail "build failed"
assert_equals "hello clean" "$(cat $BINS/hello_clean.out)"
- expect_log "Created new ${WORKER_TYPE_LOG_STRING} Work worker (id [0-9]\+)"
+ expect_log "Created new ${WORKER_TYPE_LOG_STRING} Work multiplex-worker (id [0-9]\+)"
bazel clean &> $TEST_log \
|| fail "clean failed"
expect_log "Clean command is running, shutting down worker pool..."
- expect_log "Destroying Work worker (id [0-9]\+)"
+ expect_log "Destroying Work multiplex-worker (id [0-9]\+)"
}
function test_crashed_worker_causes_log_dump() {