@Override
public void remove(InstanceIdentifier<FlowCapableNodeConnector> identifier, FlowCapableNodeConnector del, InstanceIdentifier<FlowCapableNodeConnector> nodeConnIdent) {
if(compareInstanceIdentifierTail(identifier,II_TO_FLOW_CAPABLE_NODE_CONNECTOR)){
- LOG.warn("Node Connector removed");
+ LOG.info("Node Connector removed");
String sNodeConnectorIdentifier = nodeConnIdent
.firstKeyOf(NodeConnector.class, NodeConnectorKey.class).getId().getValue();
long nDpId = getDpIdFromPortName(sNodeConnectorIdentifier);
@Override
public void update(InstanceIdentifier<FlowCapableNodeConnector> identifier, FlowCapableNodeConnector original, FlowCapableNodeConnector update, InstanceIdentifier<FlowCapableNodeConnector> nodeConnIdent) {
if(compareInstanceIdentifierTail(identifier,II_TO_FLOW_CAPABLE_NODE_CONNECTOR)){
- LOG.warn("Node Connector updated");
+ LOG.info("Node Connector updated");
//donot need to do anything as we are not considering updates here
}
}
@Override
public void add(InstanceIdentifier<FlowCapableNodeConnector> identifier, FlowCapableNodeConnector add, InstanceIdentifier<FlowCapableNodeConnector> nodeConnIdent) {
if(compareInstanceIdentifierTail(identifier,II_TO_FLOW_CAPABLE_NODE_CONNECTOR)){
- LOG.warn("Node Connector added");
+ LOG.info("Node Connector added");
String sNodeConnectorIdentifier = nodeConnIdent
.firstKeyOf(NodeConnector.class, NodeConnectorKey.class).getId().getValue();
long nDpId = getDpIdFromPortName(sNodeConnectorIdentifier);
public void remove(InstanceIdentifier<FlowCapableNode> identifier, FlowCapableNode del,
InstanceIdentifier<FlowCapableNode> nodeIdent) {
if(compareInstanceIdentifierTail(identifier,II_TO_FLOW_CAPABLE_NODE)){
- LOG.warn("Node removed: {}",nodeIdent.firstKeyOf(Node.class).getId().getValue());
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Node removed: {}",nodeIdent.firstKeyOf(Node.class).getId().getValue());
+ }
if ( ! nodeIdent.isWildcarded()) {
flowNodeDisconnected(nodeIdent);
public void add(InstanceIdentifier<FlowCapableNode> identifier, FlowCapableNode add,
InstanceIdentifier<FlowCapableNode> nodeIdent) {
if(compareInstanceIdentifierTail(identifier,II_TO_FLOW_CAPABLE_NODE)){
- LOG.warn("Node added: {}",nodeIdent.firstKeyOf(Node.class).getId().getValue());
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Node added: {}",nodeIdent.firstKeyOf(Node.class).getId().getValue());
+ }
if ( ! nodeIdent.isWildcarded()) {
flowNodeConnected(nodeIdent);
String[] multipartRequestName = result.getResult().getClass().getSimpleName().split("(?=\\p{Upper})");
LOG.warn("Node [{}] does not support statistics request type : {}",
nodeKey.getId(),Joiner.on(" ").join(Arrays.copyOfRange(multipartRequestName, 2, multipartRequestName.length-2)));
+ if (resultTransId != null) {
+ resultTransId.setException(
+ new UnsupportedOperationException());
+ }
} else {
if (resultTransId != null) {
resultTransId.set(id);
@Override
public void onFailure(final Throwable t) {
LOG.warn("Response Registration for Statistics RPC call fail!", t);
+ if (resultTransId != null) {
+ resultTransId.setException(t);
+ }
}
-
}
Futures.addCallback(JdkFutureAdapters.listenInPoolThread(future),new FutureCallbackImpl());
package org.opendaylight.openflowplugin.impl.connection;
import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
import org.opendaylight.openflowplugin.api.openflow.connection.HandshakeContext;
import org.opendaylight.openflowplugin.api.openflow.md.core.HandshakeManager;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
*
*/
public class HandshakeContextImpl implements HandshakeContext {
-
- private static final Logger LOG = LoggerFactory.getLogger(HandshakeContextImpl.class);
-
private ThreadPoolExecutor handshakePool;
private HandshakeManager handshakeManager;
}
@Override
- public void close() throws Exception {
- shutdownPoolPolitely();
- }
-
- private void shutdownPoolPolitely() {
- LOG.debug("terminating handshake pool");
- handshakePool.shutdown();
- try {
- handshakePool.awaitTermination(1, TimeUnit.SECONDS);
- } catch (InterruptedException e) {
- LOG.error("Error while awaiting termination on pool. Will use shutdownNow method.");
- } finally {
- handshakePool.purge();
- if (! handshakePool.isTerminated()) {
- handshakePool.shutdownNow();
- }
- LOG.debug("pool is terminated: {}", handshakePool.isTerminated());
- }
+ public void close() {
}
}
@Override
public void processFlowRemovedMessage(final FlowRemoved flowRemoved) {
+ //1. translate to general flow (table, priority, match, cookie)
+ final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.FlowRemoved flowRemovedNotification =
+ flowRemovedTranslator.translate(flowRemoved, deviceInfo, null);
+ // Trigger off a notification
+ notificationPublishService.offerNotification(flowRemovedNotification);
+
final ItemLifecycleListener itemLifecycleListener = flowLifeCycleKeeper.getItemLifecycleListener();
if (itemLifecycleListener != null) {
- //1. translate to general flow (table, priority, match, cookie)
- final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.FlowRemoved flowRemovedNotification =
- flowRemovedTranslator.translate(flowRemoved, deviceInfo, null);
//2. create registry key
final FlowRegistryKey flowRegKey = FlowRegistryKeyFactory.create(flowRemovedNotification);
//3. lookup flowId
.child(Flow.class, new FlowKey(flowDescriptor.getFlowId()));
// b) notify listener
itemLifecycleListener.onRemoved(flowPath);
- // c) trigger off a notification
- notificationPublishService.offerNotification(flowRemovedNotification);
} else {
LOG.debug("flow id not found: nodeId={} tableId={}, priority={}",
getDeviceInfo().getNodeId(), flowRegKey.getTableId(), flowRemovedNotification.getPriority());
LOG.info("context for invalidation not found");
} else {
synchronized (context) {
- for (Entry<SwitchConnectionDistinguisher, ConnectionConductor> auxEntry : context.getAuxiliaryConductors()) {
- invalidateAuxiliary(sessionKey, auxEntry.getKey());
+ if (context.isValid()) {
+ for (Entry<SwitchConnectionDistinguisher, ConnectionConductor> auxEntry : context.getAuxiliaryConductors()) {
+ invalidateAuxiliary(sessionKey, auxEntry.getKey());
+ }
+ context.getPrimaryConductor().disconnect();
+ context.setValid(false);
+ removeSessionContext(context);
+ // TODO:: notify listeners
+ } else {
+ LOG.warn("Ignore invalid session context: {}",
+ Arrays.toString(sessionKey.getId()));
}
- context.getPrimaryConductor().disconnect();
- context.setValid(false);
- removeSessionContext(context);
- // TODO:: notify listeners
}
}
}
LOG.info("context for invalidation not found");
} else {
synchronized (sessionContext) {
- for (Entry<SwitchConnectionDistinguisher, ConnectionConductor> auxEntry : sessionContext
- .getAuxiliaryConductors()) {
- invalidateAuxiliary(sessionContext, auxEntry.getKey(), true);
+ if (sessionContext.isValid()) {
+ for (Entry<SwitchConnectionDistinguisher, ConnectionConductor> auxEntry : sessionContext
+ .getAuxiliaryConductors()) {
+ invalidateAuxiliary(sessionContext, auxEntry.getKey(), true);
+ }
+ sessionContext.setValid(false);
+ removeSessionContext(sessionContext);
+ // TODO:: notify listeners
+ } else {
+ LOG.warn("Ignore invalid dead session context: {}",
+ Arrays.toString(
+ sessionContext.getSessionKey().getId()));
}
- sessionContext.setValid(false);
- removeSessionContext(sessionContext);
- // TODO:: notify listeners
}
}
}
if (LOG.isDebugEnabled()) {
LOG.debug("removing session: {}", Arrays.toString(sessionContext.getSessionKey().getId()));
}
- sessionLot.remove(sessionContext.getSessionKey(), sessionContext);
- sessionNotifier.onSessionRemoved(sessionContext);
+ if (sessionLot.remove(sessionContext.getSessionKey(), sessionContext)) {
+ sessionNotifier.onSessionRemoved(sessionContext);
+ } else {
+ // This should never happen.
+ LOG.warn("Ignore session context that was already removed: {}",
+ Arrays.toString(sessionContext.getSessionKey().getId()));
+ }
}
@Override