1818import com .google .devtools .build .lib .events .Reporter ;
1919import com .google .devtools .build .lib .vfs .Path ;
2020import com .google .devtools .build .lib .vfs .PathFragment ;
21+ import java .util .Objects ;
2122import java .util .Optional ;
2223import java .util .TreeSet ;
2324import java .util .concurrent .atomic .AtomicInteger ;
@@ -35,23 +36,19 @@ class WorkerFactory extends BaseKeyedPooledObjectFactory<WorkerKey, Worker> {
3536 // request_id (which is indistinguishable from 0 in proto3).
3637 private static final AtomicInteger pidCounter = new AtomicInteger (1 );
3738
38- private WorkerOptions workerOptions ;
3939 private final Path workerBaseDir ;
4040 private Reporter reporter ;
41+ private final boolean workerSandboxing ;
4142
42- public WorkerFactory (WorkerOptions workerOptions , Path workerBaseDir ) {
43- this .workerOptions = workerOptions ;
43+ public WorkerFactory (Path workerBaseDir , boolean workerSandboxing ) {
4444 this .workerBaseDir = workerBaseDir ;
45+ this .workerSandboxing = workerSandboxing ;
4546 }
4647
4748 public void setReporter (Reporter reporter ) {
4849 this .reporter = reporter ;
4950 }
5051
51- public void setOptions (WorkerOptions workerOptions ) {
52- this .workerOptions = workerOptions ;
53- }
54-
5552 @ Override
5653 public Worker create (WorkerKey key ) {
5754 int workerId = pidCounter .getAndIncrement ();
@@ -60,7 +57,7 @@ public Worker create(WorkerKey key) {
6057 workerBaseDir .getRelative (workTypeName + "-" + workerId + "-" + key .getMnemonic () + ".log" );
6158
6259 Worker worker ;
63- boolean sandboxed = workerOptions . workerSandboxing || key .isSpeculative ();
60+ boolean sandboxed = workerSandboxing || key .isSpeculative ();
6461 if (sandboxed ) {
6562 Path workDir = getSandboxedWorkerPath (key , workerId );
6663 worker = new SandboxedWorker (key , workerId , workDir , logFile );
@@ -70,7 +67,7 @@ public Worker create(WorkerKey key) {
7067 } else {
7168 worker = new SingleplexWorker (key , workerId , key .getExecRoot (), logFile );
7269 }
73- if (workerOptions . workerVerbose ) {
70+ if (reporter != null ) {
7471 reporter .handle (
7572 Event .info (
7673 String .format (
@@ -91,9 +88,7 @@ Path getSandboxedWorkerPath(WorkerKey key, int workerId) {
9188 .getRelative (workspaceName );
9289 }
9390
94- /**
95- * Use the DefaultPooledObject implementation.
96- */
91+ /** Use the DefaultPooledObject implementation. */
9792 @ Override
9893 public PooledObject <Worker > wrap (Worker worker ) {
9994 return new DefaultPooledObject <>(worker );
@@ -102,7 +97,7 @@ public PooledObject<Worker> wrap(Worker worker) {
10297 /** When a worker process is discarded, destroy its process, too. */
10398 @ Override
10499 public void destroyObject (WorkerKey key , PooledObject <Worker > p ) {
105- if (workerOptions . workerVerbose ) {
100+ if (reporter != null ) {
106101 int workerId = p .getObject ().getWorkerId ();
107102 reporter .handle (
108103 Event .info (
@@ -122,7 +117,7 @@ public boolean validateObject(WorkerKey key, PooledObject<Worker> p) {
122117 Worker worker = p .getObject ();
123118 Optional <Integer > exitValue = worker .getExitValue ();
124119 if (exitValue .isPresent ()) {
125- if (workerOptions . workerVerbose && worker .diedUnexpectedly ()) {
120+ if (reporter != null && worker .diedUnexpectedly ()) {
126121 String msg =
127122 String .format (
128123 "%s %s (id %d) has unexpectedly died with exit code %d." ,
@@ -140,7 +135,7 @@ public boolean validateObject(WorkerKey key, PooledObject<Worker> p) {
140135 boolean filesChanged =
141136 !key .getWorkerFilesCombinedHash ().equals (worker .getWorkerFilesCombinedHash ());
142137
143- if (workerOptions . workerVerbose && reporter != null && filesChanged ) {
138+ if (reporter != null && filesChanged ) {
144139 StringBuilder msg = new StringBuilder ();
145140 msg .append (
146141 String .format (
@@ -167,4 +162,21 @@ public boolean validateObject(WorkerKey key, PooledObject<Worker> p) {
167162
168163 return !filesChanged ;
169164 }
165+
166+ @ Override
167+ public boolean equals (Object o ) {
168+ if (this == o ) {
169+ return true ;
170+ }
171+ if (!(o instanceof WorkerFactory )) {
172+ return false ;
173+ }
174+ WorkerFactory that = (WorkerFactory ) o ;
175+ return workerSandboxing == that .workerSandboxing && workerBaseDir .equals (that .workerBaseDir );
176+ }
177+
178+ @ Override
179+ public int hashCode () {
180+ return Objects .hash (workerBaseDir , workerSandboxing );
181+ }
170182}
0 commit comments