import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
import java.math.BigInteger;
import java.net.InetAddress;
import java.time.LocalDateTime;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadFactory;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.binding.api.ClusteredDataTreeChangeListener;
import org.opendaylight.mdsal.binding.api.DataBroker;
private static final Logger LOG = LoggerFactory.getLogger(ConnectionManagerImpl.class);
private static final boolean BITMAP_NEGOTIATION_ENABLED = true;
+ private final ThreadFactory threadFactory = new ThreadFactoryBuilder()
+ .setNameFormat("ConnectionHandler-%d")
+ .setDaemon(false)
+ .setUncaughtExceptionHandler((thread, ex) -> LOG.error("Uncaught exception {}", thread, ex))
+ .build();
+ private final ExecutorService executorsService = Executors.newCachedThreadPool(threadFactory);
+
+ private DeviceConnectedHandler deviceConnectedHandler;
private final OpenflowProviderConfig config;
private final ExecutorService executorService;
private final DeviceConnectionRateLimiter deviceConnectionRateLimiter;
private final DataBroker dataBroker;
private final int deviceConnectionHoldTime;
- private DeviceConnectedHandler deviceConnectedHandler;
private DeviceDisconnectedHandler deviceDisconnectedHandler;
private DeviceConnectionStatusProvider deviceConnectionStatusProvider;
private final NotificationPublishService notificationPublishService;
@Override
public void onSwitchConnected(final ConnectionAdapter connectionAdapter) {
+ connectionAdapter.setExecutorService(executorsService);
LOG.trace("prepare connection context");
final ConnectionContext connectionContext = new ConnectionContextImpl(connectionAdapter,
deviceConnectionStatusProvider);
deviceConnectionStatusProvider.close();
deviceConnectionStatusProvider = null;
}
+ if (executorsService != null) {
+ executorsService.shutdownNow();
+ }
}
class DeviceConnectionStatusProviderImpl implements DeviceConnectionStatusProvider,
}
}
}
-
}