import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
externalClient.getConnectionInfo().getLocalPort());
List<String> databases = new ArrayList<>();
try {
- databases = externalClient.getDatabases().get();
- } catch (InterruptedException | ExecutionException e) {
- LOG.warn("Unable to fetch database list");
+ databases = externalClient.getDatabases().get(1000, TimeUnit.MILLISECONDS);
+ if(databases.contains(SouthboundConstants.OPEN_V_SWITCH)) {
+ OvsdbConnectionInstance client = connectedButCallBacksNotRegistered(externalClient);
+ // Register Cluster Ownership for ConnectionInfo
+ registerEntityForOwnership(client);
+ }
+ } catch (InterruptedException | ExecutionException | TimeoutException e) {
+ LOG.warn("Unable to fetch Database list from device {}. Disconnecting from the device.",
+ externalClient.getConnectionInfo().getRemoteAddress(), e);
+ externalClient.disconnect();
}
- if(databases.contains(SouthboundConstants.OPEN_V_SWITCH)) {
- OvsdbConnectionInstance client = connectedButCallBacksNotRegistered(externalClient);
- // Register Cluster Ownership for ConnectionInfo
- registerEntityForOwnership(client);
- }
}
public OvsdbConnectionInstance connectedButCallBacksNotRegistered(final OvsdbClient externalClient) {
LOG.warn("disconnected : Connection instance not found for OVSDB Node {} ", key);
}
LOG.trace("OvsdbConnectionManager: exit disconnected client: {}", client);
-
}
public OvsdbClient connect(InstanceIdentifier<Node> iid,