From b6eb96cb447eba90a0a47fe1937b37a949badaec Mon Sep 17 00:00:00 2001 From: Devrandom Date: Sun, 24 Aug 2014 14:41:13 -0700 Subject: [PATCH] Orchid: document an issue with pending circuits on shutdown --- .../subgraph/orchid/circuits/CircuitManagerImpl.java | 11 ++++++----- .../orchid/connections/ConnectionCacheImpl.java | 3 +++ 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/orchid/src/com/subgraph/orchid/circuits/CircuitManagerImpl.java b/orchid/src/com/subgraph/orchid/circuits/CircuitManagerImpl.java index b2617897..ba3277e9 100644 --- a/orchid/src/com/subgraph/orchid/circuits/CircuitManagerImpl.java +++ b/orchid/src/com/subgraph/orchid/circuits/CircuitManagerImpl.java @@ -129,20 +129,21 @@ public class CircuitManagerImpl implements CircuitManager, DashboardRenderable { } void addActiveCircuit(CircuitImpl circuit) { + synchronized (activeCircuits) { + activeCircuits.add(circuit); + activeCircuits.notifyAll(); + } + lock.lock(); try { if (!isBuilding) { + // we were asked to stop since this circuit was started circuit.destroyCircuit(); } } finally { lock.unlock(); } - - synchronized (activeCircuits) { - activeCircuits.add(circuit); - activeCircuits.notifyAll(); - } } void removeActiveCircuit(CircuitImpl circuit) { diff --git a/orchid/src/com/subgraph/orchid/connections/ConnectionCacheImpl.java b/orchid/src/com/subgraph/orchid/connections/ConnectionCacheImpl.java index 89b1e7dc..5f568351 100644 --- a/orchid/src/com/subgraph/orchid/connections/ConnectionCacheImpl.java +++ b/orchid/src/com/subgraph/orchid/connections/ConnectionCacheImpl.java @@ -94,6 +94,9 @@ public class ConnectionCacheImpl implements ConnectionCache, DashboardRenderable logger.warning("Exception closing connection: "+ e.getCause()); } } else { + // FIXME this doesn't close the socket, so the connection task lingers + // A proper fix would require maintaining pending connections in a separate + // collection. f.cancel(true); } }