3
0
mirror of https://github.com/Qortal/altcoinj.git synced 2025-02-12 02:05:53 +00:00

Orchid: narrower locking

This commit is contained in:
Devrandom 2014-08-27 19:20:12 -07:00 committed by Mike Hearn
parent 41731c3261
commit ddfaebd487

View File

@ -104,15 +104,19 @@ public class CircuitManagerImpl implements CircuitManager, DashboardRenderable {
try { try {
isBuilding = false; isBuilding = false;
scheduledExecutor.shutdownNow(); scheduledExecutor.shutdownNow();
if (killCircuits) {
List<CircuitImpl> circuits = new ArrayList<CircuitImpl>(activeCircuits);
for (CircuitImpl c : circuits) {
c.destroyCircuit();
}
}
} finally { } finally {
lock.unlock(); lock.unlock();
} }
if (killCircuits) {
ArrayList<CircuitImpl> circuits;
synchronized (activeCircuits) {
circuits = new ArrayList<CircuitImpl>(activeCircuits);
}
for (CircuitImpl c : circuits) {
c.destroyCircuit();
}
}
} }
public ExitCircuit createNewExitCircuit(Router exitRouter) { public ExitCircuit createNewExitCircuit(Router exitRouter) {
@ -125,15 +129,18 @@ public class CircuitManagerImpl implements CircuitManager, DashboardRenderable {
activeCircuits.notifyAll(); activeCircuits.notifyAll();
} }
boolean doDestroy;
lock.lock(); lock.lock();
try { try {
if (!isBuilding) { doDestroy = !isBuilding;
// we were asked to stop since this circuit was started
circuit.destroyCircuit();
}
} finally { } finally {
lock.unlock(); lock.unlock();
} }
if (doDestroy) {
// we were asked to stop since this circuit was started
circuit.destroyCircuit();
}
} }
void removeActiveCircuit(CircuitImpl circuit) { void removeActiveCircuit(CircuitImpl circuit) {