3
0
mirror of https://github.com/Qortal/altcoinj.git synced 2025-02-07 14:54:15 +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 {
isBuilding = false;
scheduledExecutor.shutdownNow();
if (killCircuits) {
List<CircuitImpl> circuits = new ArrayList<CircuitImpl>(activeCircuits);
for (CircuitImpl c : circuits) {
c.destroyCircuit();
}
}
} finally {
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) {
@ -125,15 +129,18 @@ public class CircuitManagerImpl implements CircuitManager, DashboardRenderable {
activeCircuits.notifyAll();
}
boolean doDestroy;
lock.lock();
try {
if (!isBuilding) {
// we were asked to stop since this circuit was started
circuit.destroyCircuit();
}
doDestroy = !isBuilding;
} finally {
lock.unlock();
}
if (doDestroy) {
// we were asked to stop since this circuit was started
circuit.destroyCircuit();
}
}
void removeActiveCircuit(CircuitImpl circuit) {