aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/worker/WorkerPoolConfig.java
diff options
context:
space:
mode:
authorGravatar Philipp Wollermann <philwo@google.com>2016-05-24 11:37:11 +0000
committerGravatar Yue Gan <yueg@google.com>2016-05-24 11:59:11 +0000
commit307dc0f627ca8f535a72beea7ed62196ee5553af (patch)
tree57ee3d179037005fae504f9cf0524dbed538ca88 /src/main/java/com/google/devtools/build/lib/worker/WorkerPoolConfig.java
parentcf34cf9454e372926f36d4e669ac0d8d4ff77294 (diff)
workers: Improve verbose messages when workers are restarted. Prevent killing of broken workers in the background, when no build is currently running, because we can only alert the user about what's going on while a build is currently running.
If you're a developer, this will probably help you when debugging a new worker. Some messages you might see with --worker_verbose specified: INFO: Worker configuration has changed, restarting worker pool... WARNING: Javac worker (id 6) can no longer be used, because its files have changed on disk [13ce6c10546243b6b4ea2334dd3f8a55705e4c078cedd0e746d7ad7cee082e9a -> 9731223c50bab5c1f20d60d1a4967cf2726840727b6a639b6f6425547a9b4a10]. WARNING: Javac worker (id 4) can no longer be used, because its process terminated itself or got killed. -- MOS_MIGRATED_REVID=123093071
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/worker/WorkerPoolConfig.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/worker/WorkerPoolConfig.java80
1 files changed, 80 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/worker/WorkerPoolConfig.java b/src/main/java/com/google/devtools/build/lib/worker/WorkerPoolConfig.java
new file mode 100644
index 0000000000..b56e7c912b
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/worker/WorkerPoolConfig.java
@@ -0,0 +1,80 @@
+// Copyright 2016 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+package com.google.devtools.build.lib.worker;
+
+import org.apache.commons.pool2.impl.GenericKeyedObjectPoolConfig;
+
+import java.util.Objects;
+
+/**
+ * Our own configuration class for the {@code WorkerPool} that correctly implements {@code equals()}
+ * and {@code hashCode()}.
+ */
+final class WorkerPoolConfig extends GenericKeyedObjectPoolConfig {
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ WorkerPoolConfig that = (WorkerPoolConfig) o;
+ return getBlockWhenExhausted() == that.getBlockWhenExhausted()
+ && getFairness() == that.getFairness()
+ && getJmxEnabled() == that.getJmxEnabled()
+ && getLifo() == that.getLifo()
+ && getMaxWaitMillis() == that.getMaxWaitMillis()
+ && getMinEvictableIdleTimeMillis() == that.getMinEvictableIdleTimeMillis()
+ && getNumTestsPerEvictionRun() == that.getNumTestsPerEvictionRun()
+ && getSoftMinEvictableIdleTimeMillis() == that.getSoftMinEvictableIdleTimeMillis()
+ && getTestOnBorrow() == that.getTestOnBorrow()
+ && getTestOnCreate() == that.getTestOnCreate()
+ && getTestOnReturn() == that.getTestOnReturn()
+ && getTestWhileIdle() == that.getTestWhileIdle()
+ && getTimeBetweenEvictionRunsMillis() == that.getTimeBetweenEvictionRunsMillis()
+ && getMaxIdlePerKey() == that.getMaxIdlePerKey()
+ && getMaxTotal() == that.getMaxTotal()
+ && getMaxTotalPerKey() == that.getMaxTotalPerKey()
+ && getMinIdlePerKey() == that.getMinIdlePerKey()
+ && Objects.equals(getEvictionPolicyClassName(), that.getEvictionPolicyClassName())
+ && Objects.equals(getJmxNameBase(), that.getJmxNameBase())
+ && Objects.equals(getJmxNamePrefix(), that.getJmxNamePrefix());
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(
+ getBlockWhenExhausted(),
+ getFairness(),
+ getJmxEnabled(),
+ getLifo(),
+ getMaxWaitMillis(),
+ getMinEvictableIdleTimeMillis(),
+ getNumTestsPerEvictionRun(),
+ getSoftMinEvictableIdleTimeMillis(),
+ getTestOnBorrow(),
+ getTestOnCreate(),
+ getTestOnReturn(),
+ getTestWhileIdle(),
+ getTimeBetweenEvictionRunsMillis(),
+ getMaxIdlePerKey(),
+ getMaxTotal(),
+ getMaxTotalPerKey(),
+ getMinIdlePerKey(),
+ getEvictionPolicyClassName(),
+ getJmxNameBase(),
+ getJmxNamePrefix());
+ }
+}