OF13 testing : Need help with a few IllegalArgumentException


Madhu Venugopal
 

Folks,

am using the latest Integration branch to build a Virtualization edition image :

madhu@Madhus-MacBook-Pro opendaylight (master) $ git log -1
commit 358bf0d75aa2e9dc99f5cfec90b6399ce11cad2d
Merge: 96b8df4 153fa0d
Author: Luis Gomez <luis.gomez@...>
Date:   Thu Jan 23 04:50:03 2014 +0000

    Merge "Fix patch error because of whitespace in run.sh."


Including both Openflow1.3 and OVSDB plugins in the runtime execution : "./run.sh -of13 -virt ovsdb".
The only additional change is on the config.ini by including 2 OVSDB specific environment variables :
> of.listenPort=6653
> OF1.3_Provider=true

Am testing the devstack integration of OVSDB with MD-SAL & OF1.3 plugin and have a handful of flows to be programmed.
We are trying OVS 2.0.0 with OpenFlow13 enabled on the bridges. (no CPqD).

Almost for all the flows, I see these exceptions :

2014-01-22 23:06:42.404 PST [pool-22-thread-3] ERROR o.o.c.m.s.c.i.s.TwoPhaseCommit - Transaction: DOM-2851 Request Commit failed
java.lang.IllegalArgumentException: Supplied composite node is not configurational.
        at com.google.common.base.Preconditions.checkArgument(Preconditions.java:92) ~[bundlefile:na]
        at org.opendaylight.yangtools.yang.util.YangDataOperations.checkConfigurational(YangDataOperations.java:51) ~[na:na]
        at org.opendaylight.yangtools.yang.util.YangDataOperations.merge(YangDataOperations.java:30) ~[na:na]
        at org.opendaylight.yangtools.yang.util.YangDataOperations._mergeMultiple(YangDataOperations.java:79) ~[na:na]
        at org.opendaylight.yangtools.yang.util.YangDataOperations.mergeMultiple(YangDataOperations.java:209) ~[na:na]
        at org.opendaylight.yangtools.yang.util.YangDataOperations.mergeContainer(YangDataOperations.java:183) ~[na:na]
        at org.opendaylight.yangtools.yang.util.YangDataOperations.merge(YangDataOperations.java:42) ~[na:na]
        at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter.mergeData(SchemaAwareDataStoreAdapter.java:159) ~[na:na]
        at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter$NormalizedDataModification.mergeConfigurationData(SchemaAwareDataStoreAdapter.java:318) ~[na:na]
        at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter$NormalizedDataModification.mergeConfigurationData(SchemaAwareDataStoreAdapter.java:289) ~[na:na]
        at org.opendaylight.controller.md.sal.common.impl.AbstractDataModification.putConfigurationData(AbstractDataModification.java:70) ~[bundlefile:na]
        at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter.prepareMergedTransaction(SchemaAwareDataStoreAdapter.java:176) ~[na:na]
        at org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter.requestCommit(SchemaAwareDataStoreAdapter.java:115) ~[na:na]
        at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.call(TwoPhaseCommit.java:76) [bundlefile:na]
        at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.call(TwoPhaseCommit.java:31) [bundlefile:na]
        at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_40]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_40]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_40]
        at java.lang.Thread.run(Thread.java:724) [na:1.7.0_40]

java.lang.IllegalArgumentException: injector for given version and target [InjectionKey [version=1, targetClazz=org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.OxmFieldsActionBuilder]] not found
        at org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.ConvertReactor.convert(ConvertReactor.java:57) ~[na:na]
        at org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ActionConvertor.SalToOFSetField(ActionConvertor.java:253) ~[na:na]
        at org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ActionConvertor.getActionList(ActionConvertor.java:205) ~[na:na]
        at org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.FlowConvertor.toInstructions(FlowConvertor.java:227) ~[na:na]
        at org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.FlowConvertor.toFlowModInput(FlowConvertor.java:167) ~[na:na]
        at org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl.addFlow(ModelDrivenSwitchImpl.java:237) ~[na:na]
        at org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowService$$Broker$Router.addFlow(SalFlowService$$Broker$Router.java) ~[na:na]
        at org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowService$$Broker$DirectProxy.addFlow(SalFlowService$$Broker$DirectProxy.java) ~[na:na]
        at org.opendaylight.controller.frm.flow.FlowTransaction.add(FlowTransaction.java:114) ~[na:na]
        at org.opendaylight.controller.frm.AbstractTransaction.callRpcs(AbstractTransaction.java:56) ~[na:na]
        at org.opendaylight.controller.frm.AbstractTransaction.finish(AbstractTransaction.java:28) ~[na:na]
        at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.call(TwoPhaseCommit.java:94) [bundlefile:na]
        at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.call(TwoPhaseCommit.java:31) [bundlefile:na]
        at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_40]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_40]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_40]
        at java.lang.Thread.run(Thread.java:724) [na:1.7.0_40]

And ofcourse, the flows are not properly programmed because of these exceptions.

Do you guys have any insight onto what might lead to these exceptions ?
(The 2nd exception above seem to be specific to the OxmField - we are using the Set-Tunnel-Id).

Please refer to OF13ProviderManager class in the ovsdb project if you are interested in the flows that we are trying to program
and search for methods that begins with "write".

Also am seeing a lot more exceptions :

java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: Session for the cookie is invalid.
    at java.util.concurrent.FutureTask.report(FutureTask.java:122) [na:1.7.0_40]
    at java.util.concurrent.FutureTask.get(FutureTask.java:188) [na:1.7.0_40]
    at org.opendaylight.ovsdb.neutron.provider.OF13ProviderManager.writeFlow(OF13ProviderManager.java:1057) [bundlefile:na]
    at org.opendaylight.ovsdb.neutron.provider.OF13ProviderManager.writeLocalTableMiss(OF13ProviderManager.java:1031) [bundlefile:na]
    at org.opendaylight.ovsdb.neutron.provider.OF13ProviderManager.programLocalBridgeRules(OF13ProviderManager.java:298) [bundlefile:na]
    at org.opendaylight.ovsdb.neutron.provider.OF13ProviderManager.programLocalRules(OF13ProviderManager.java:373) [bundlefile:na]
    at org.opendaylight.ovsdb.neutron.provider.OF13ProviderManager.handleInterfaceUpdate(OF13ProviderManager.java:451) [bundlefile:na]
    at org.opendaylight.ovsdb.neutron.SouthboundHandler.handleInterfaceUpdate(SouthboundHandler.java:217) [bundlefile:na]
    at org.opendaylight.ovsdb.neutron.SouthboundHandler.processRowUpdate(SouthboundHandler.java:201) [bundlefile:na]
    at org.opendaylight.ovsdb.neutron.SouthboundHandler.access$100(SouthboundHandler.java:36) [bundlefile:na]
    at org.opendaylight.ovsdb.neutron.SouthboundHandler$1.run(SouthboundHandler.java:69) [bundlefile:na]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_40]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_40]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_40]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_40]
    at java.lang.Thread.run(Thread.java:724) [na:1.7.0_40]
Caused by: java.lang.IllegalArgumentException: Session for the cookie is invalid.
    at org.opendaylight.openflowplugin.openflow.md.core.session.MessageDispatchServiceImpl.getConnectionAdapter(MessageDispatchServiceImpl.java:97) ~[na:na]
    at org.opendaylight.openflowplugin.openflow.md.core.session.MessageDispatchServiceImpl.flowMod(MessageDispatchServiceImpl.java:128) ~[na:na]
    at org.opendaylight.openflowplugin.openflow.md.core.sal.ModelDrivenSwitchImpl.updateFlow(ModelDrivenSwitchImpl.java:604) ~[na:na]
    at org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowService$$Broker$Router.updateFlow(SalFlowService$$Broker$Router.java) ~[na:na]
    at org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowService$$Broker$DirectProxy.updateFlow(SalFlowService$$Broker$DirectProxy.java) ~[na:na]
    at org.opendaylight.controller.frm.flow.FlowTransaction.update(FlowTransaction.java:92) ~[na:na]
    at org.opendaylight.controller.frm.AbstractTransaction.rollbackRpcs(AbstractTransaction.java:105) ~[na:na]
    at org.opendaylight.controller.frm.AbstractTransaction.rollback(AbstractTransaction.java:38) ~[na:na]
    at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.rollback(TwoPhaseCommit.java:147) ~[na:na]
    at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.call(TwoPhaseCommit.java:104) ~[na:na]
    at org.opendaylight.controller.md.sal.common.impl.service.TwoPhaseCommit.call(TwoPhaseCommit.java:31) ~[na:na]



Also saw the following exception once during a controller reboot and MDSAL was frozen.
Another reboot solved the problem :

java.lang.IllegalStateException: There are inconsistencies between configuration subsystem and yangstore in terms of discovered yang modules, yang modules missing from config subsystem but present in yang store: [(urn:opendaylight:params:xml:ns:yang:controller:netty:threadgroup?revision=2013-11-07)threadgroup],
All modules present in config: [(urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf?revision=2013-10-28)odl-sal-netconf-connector-cfg, (urn:opendaylight:params:xml:ns:yang:controller:shutdown:impl?revision=2013-12-18)shutdown-impl, (urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:flexible?revision=2013 -12-01)threadpool-impl-flexible, (urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:cluster:store?revision=2013-10-28)odl-sal-dom-clustered-store-cfg, (urn:opendaylight:params:xml:ns:yang:controller:netty:eventexecutor?revision=2013-11-12)netty-event-executor, (urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:fixed?revision=2013-12-01)threadpool-impl-fixed< /span>, (urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl:scheduled?revision=2013-12-01)threadpool-impl-scheduled, (urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote:rpc?revision=2013-10-28)odl-sal-dom-rpc-remote-cfg, (urn:opendaylight:params:xml:ns:yang:controller:logback:config?revision=2013-07-16)config-logging, (urn:opendaylight:params:xml:ns:yang:controller:threadpool:impl?revision=2013-04-05)threadpool-impl, (urn:opendaylight:params:xml:ns:yang:controller:netty:timer?revision=2013-11-19)netty-timer, (urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:impl?revision=2013-10-28) opendaylight-sal-dom-broker-impl, (urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding:impl?revision=2013-10-28)opendaylight-sal-binding-broker-impl]
at com.google.common.base.Preconditions.checkState(Preconditions.java:176) ~[na:na]
at org.opendaylight.controller.netconf.confignetconfconnector.osgi .NetconfOperationServiceImpl.checkConsistencyBetweenYangStoreAndConfig(NetconfOperationServiceImpl.java:73) ~[na:na]
at org.opendaylight.controller.netconf.confignetconfconnector.osgi.NetconfOperationServiceImpl.<init>(NetconfOperationServiceImpl.java:49) ~[na:na]
at org.opendaylight.controller.netconf.confignetconfconnector.osgi.NetconfOperationServiceFactoryImpl.createService(NetconfOperationServiceFactoryImpl.java:62) ~[na:na]
at org.opendaylight.controller.netconf.confignetconfconnector.osgi.NetconfOperationServiceFactoryImpl.createService(NetconfOperationServiceFactoryImpl.java:21) ~[na:na ]
at org.opendaylight.controller.netconf.impl.osgi.NetconfOperationServiceSnapshot.<init>(NetconfOperationServiceSnapshot.java:30) ~[na:na]
at org.op endaylight.controller.netconf.impl.osgi.NetconfOperationServiceFactoryListenerImpl.getSnapshot(NetconfOperationServiceFactoryListenerImpl.java:30) ~[na:na]
at org.opendaylight.controller.netconf.impl.NetconfServerSessionNegotiatorFactory.createHelloMessage(NetconfServerSessionNegotiatorFactory.java:87) ~[na:na]
at org.opendaylight.controller.netconf.impl.NetconfServerSessionNegotiatorFactory.getSessionNegotiator< span clas s="o">(NetconfServerSessionNegotiatorFactory.java:64) ~[na:na]
at org.opendaylight.controller.netconf.impl.NetconfServerDispatcher$ServerChannelInitializer.initializeAfterDecoder(NetconfServerDispatcher.java: 56 ) ~[na:na]
at org.opendaylight.controller.netconf.util.AbstractChannelInitializer.initialize(AbstractChannelInitializer.java:26) ~[na:na]
at org .opendaylight.controller.netconf.impl.NetconfServerDispatcher$1.initializeChannel(NetconfServerDispatcher.java:37) ~[na:na]
at org.opendaylight.protocol.framework. AbstractDispatcher$1.initChannel(AbstractDispatcher.java:87) ~[na:na]
at org.opendaylight.protocol.framework.AbstractDispatcher$1.initChannel(AbstractDispatcher.java:83) ~[na:na]
at io.netty.channel.ChannelInitializer.channelRegistered(ChannelInitializer.java:70) ~[bundlefile:na]
at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRegistered(DefaultChannelHandlerContext.java:162) [bundlefile:na]
at io.netty.channel.DefaultChannelHandlerContext.fireChannelRegistered(DefaultChannelHandlerContext.java:148) [bundlefile:na]
at io.netty.channel.DefaultChannelPipeline.fireChannelRegistered(DefaultChannelPipeline.java:730) [bundlefile:na]
at io.netty .< span class="na">channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:441) [bundlefile:na]
at io.netty.channel.AbstractChannel$AbstractUnsafe.access$100(AbstractChannel.j ava:373) [bundlefile:na]
at io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:417) [bundlefile:na]
at io.< span clas s="na">netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:354) [bundlefile:na]
at io.netty.channel.nio.NioEventLoop.run(N ioEventLo op.java:348) [bundlefile:na]
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101) [bundlefile:na]
at java.lang.Thread.run(Thread.java:724) [na:1.7.0_40]

Thanks,
Madhu