[L2SWITCH-48] config-pusher fails in arp-handler module when loading l2switch after openflowplugin Created: 18/Jun/15  Updated: 19/Oct/17  Resolved: 19/Jun/15

Status: Resolved
Project: l2switch
Component/s: General
Affects Version/s: unspecified
Fix Version/s: None

Type: Bug
Reporter: Jamo Luhrsen Assignee: Amit Mandke
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


Issue Links:
Blocks
is blocked by YANGTOOLS-470 IncorrectNestingException incorrectly... Resolved
External issue ID: 3811

 Description   

l2switch is not working if the feature set is loaded after loading the openflowplugin-flow-services-ui feature. not working means, pingall is not working with mininet.

steps to reproduce:

install odl-openflowplugin-flow-services-ui
start mininet with linear,2
install odl-l2switch-switch-ui

after a few moments an Exception (below) is seen for config-pusher for the
arp-handler module.

Exception:

Exception in thread "config-pusher" java.lang.IllegalStateException: Error - getInstance() failed for ModuleIdentifier

{factoryName='arp-handler-impl', instanceName='arp-handler-impl'}

in transaction TransactionIdentifier

{name='ConfigTransaction-91-93'}

at org.opendaylight.controller.config.manager.impl.ConfigTransactionControllerImpl.secondPhaseCommit(ConfigTransactionControllerImpl.java:405)
at org.opendaylight.controller.config.manager.impl.ConfigRegistryImpl.secondPhaseCommit(ConfigRegistryImpl.java:280)
at org.opendaylight.controller.config.manager.impl.ConfigRegistryImpl.commitConfig(ConfigRegistryImpl.java:227)
at sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:75)
at sun.reflect.GeneratedMethodAccessor36.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:279)
at com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:193)
at com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:175)
at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:117)
at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:54)
at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237)
at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138)
at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at com.sun.jmx.mbeanserver.MXBeanProxy$InvokeHandler.invoke(MXBeanProxy.java:150)
at com.sun.jmx.mbeanserver.MXBeanProxy.invoke(MXBeanProxy.java:167)
at javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:252)
at com.sun.proxy.$Proxy22.commitConfig(Unknown Source)
at org.opendaylight.controller.config.util.ConfigRegistryJMXClient.commitConfig(ConfigRegistryJMXClient.java:102)
at org.opendaylight.controller.netconf.confignetconfconnector.transactions.TransactionProvider.commitTransaction(TransactionProvider.java:138)
at org.opendaylight.controller.netconf.confignetconfconnector.operations.Commit.handleWithNoSubsequentOperations(Commit.java:54)
at org.opendaylight.controller.netconf.util.mapping.AbstractLastNetconfOperation.handle(AbstractLastNetconfOperation.java:33)
at org.opendaylight.controller.netconf.util.mapping.AbstractNetconfOperation.handle(AbstractNetconfOperation.java:100)
at org.opendaylight.controller.netconf.persist.impl.ConfigPusherImpl.sendRequestGetResponseCheckIsOK(ConfigPusherImpl.java:342)
at org.opendaylight.controller.netconf.persist.impl.ConfigPusherImpl.pushConfig(ConfigPusherImpl.java:296)
at org.opendaylight.controller.netconf.persist.impl.ConfigPusherImpl.pushConfigWithConflictingVersionRetries(ConfigPusherImpl.java:135)
at org.opendaylight.controller.netconf.persist.impl.ConfigPusherImpl.internalPushConfigs(ConfigPusherImpl.java:103)
at org.opendaylight.controller.netconf.persist.impl.ConfigPusherImpl.process(ConfigPusherImpl.java:76)
at org.opendaylight.controller.netconf.persist.impl.osgi.ConfigPersisterActivator$InnerCustomizer$1.run(ConfigPersisterActivator.java:181)
at java.lang.Thread.run(Thread.java:744)
Caused by: org.opendaylight.yangtools.binding.data.codec.impl.IncorrectNestingException: Class interface org.opendaylight.yang.gen.v1.urn.opendaylight.l2switch.loopremover.rev140714.StpStatusAwareNodeConnector is not valid child of interface org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector
at org.opendaylight.yangtools.binding.data.codec.impl.IncorrectNestingException.create(IncorrectNestingException.java:28)
at org.opendaylight.yangtools.binding.data.codec.impl.DataContainerCodecContext.childNonNull(DataContainerCodecContext.java:178)
at org.opendaylight.yangtools.binding.data.codec.impl.DataObjectCodecContext.bindingPathArgumentChild(DataObjectCodecContext.java:178)
at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext.getCodecContextNode(BindingCodecContext.java:127)
at org.opendaylight.yangtools.binding.data.codec.impl.InstanceIdentifierCodec.serialize(InstanceIdentifierCodec.java:29)
at org.opendaylight.yangtools.binding.data.codec.impl.InstanceIdentifierCodec.serialize(InstanceIdentifierCodec.java:19)
at org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry.toYangInstanceIdentifier(BindingNormalizedNodeCodecRegistry.java:87)
at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toYangInstanceIdentifierBlocking(BindingToNormalizedNodeCodec.java:99)
at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker.registerDataChangeListener(AbstractForwardedDataBroker.java:68)
at org.opendaylight.l2switch.arphandler.core.ProactiveFloodFlowWriter.registerAsDataChangeListener(ProactiveFloodFlowWriter.java:173)
at org.opendaylight.yang.gen.v1.urn.opendaylight.packet.arp.handler.impl.rev140528.ArpHandlerModule.createInstance(ArpHandlerModule.java:51)
at org.opendaylight.controller.config.spi.AbstractModule.getInstance(AbstractModule.java:73)
at sun.reflect.GeneratedMethodAccessor35.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.opendaylight.controller.config.manager.impl.dependencyresolver.DependencyResolverManager$ModuleInvocationHandler.handleInvocation(DependencyResolverManager.java:150)
at com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:87)
at com.sun.proxy.$Proxy78.getInstance(Unknown Source)
at org.opendaylight.controller.config.manager.impl.ConfigTransactionControllerImpl.secondPhaseCommit(ConfigTransactionControllerImpl.java:399)
... 35 more



 Comments   
Comment by Jamo Luhrsen [ 18/Jun/15 ]

This was seen with Lithium RC1 as well as latest stable/lithium from nexus:
distribution-karaf-0.3.0-20150618.213024-2645.zip

Comment by Luis Gomez [ 18/Jun/15 ]

In addition when I test other projects features with l2switch I also see similar time to time:

2015-06-18 13:53:50,385 | ERROR | config-pusher | ConfigTransactionControllerImpl | 91 - org.opendaylight.controller.config-manager - 0.4.0.SNAPSHOT | Commit failed on ModuleIdentifier

{factoryName='arp-handler-impl', instanceName='arp-handler-impl'} in transaction TransactionIdentifier{name='ConfigTransaction-189-191'}
org.opendaylight.yangtools.binding.data.codec.impl.IncorrectNestingException: Class interface org.opendaylight.yang.gen.v1.urn.opendaylight.l2switch.loopremover.rev140714.StpStatusAwareNodeConnector is not valid child of interface org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector
at org.opendaylight.yangtools.binding.data.codec.impl.IncorrectNestingException.create(IncorrectNestingException.java:28)
at org.opendaylight.yangtools.binding.data.codec.impl.DataContainerCodecContext.childNonNull(DataContainerCodecContext.java:178)
at org.opendaylight.yangtools.binding.data.codec.impl.DataObjectCodecContext.bindingPathArgumentChild(DataObjectCodecContext.java:178)
at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext.getCodecContextNode(BindingCodecContext.java:127)
at org.opendaylight.yangtools.binding.data.codec.impl.InstanceIdentifierCodec.serialize(InstanceIdentifierCodec.java:29)
at org.opendaylight.yangtools.binding.data.codec.impl.InstanceIdentifierCodec.serialize(InstanceIdentifierCodec.java:19)
at org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry.toYangInstanceIdentifier(BindingNormalizedNodeCodecRegistry.java:87)
at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toYangInstanceIdentifierBlocking(BindingToNormalizedNodeCodec.java:99)
at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker.registerDataChangeListener(AbstractForwardedDataBroker.java:68)
at org.opendaylight.l2switch.arphandler.core.ProactiveFloodFlowWriter.registerAsDataChangeListener(ProactiveFloodFlowWriter.java:173)
at org.opendaylight.yang.gen.v1.urn.opendaylight.packet.arp.handler.impl.rev140528.ArpHandlerModule.createInstance(ArpHandlerModule.java:51)
at org.opendaylight.controller.config.spi.AbstractModule.getInstance(AbstractModule.java:73)
at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_71]
at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_71]
at org.opendaylight.controller.config.manager.impl.dependencyresolver.DependencyResolverManager$ModuleInvocationHandler.handleInvocation(DependencyResolverManager.java:150)
at com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:87)
at com.sun.proxy.$Proxy84.getInstance(Unknown Source)
at org.opendaylight.controller.config.manager.impl.ConfigTransactionControllerImpl.secondPhaseCommit(ConfigTransactionControllerImpl.java:399)
at org.opendaylight.controller.config.manager.impl.ConfigRegistryImpl.secondPhaseCommit(ConfigRegistryImpl.java:280)
at org.opendaylight.controller.config.manager.impl.ConfigRegistryImpl.commitConfig(ConfigRegistryImpl.java:227)
at sun.reflect.GeneratedMethodAccessor189.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_71]
at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_71]
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:75)[:1.7.0_71]
at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_71]
at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_71]
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:279)[:1.7.0_71]
at com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:193)[:1.7.0_71]
at com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:175)[:1.7.0_71]
at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:117)[:1.7.0_71]
at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:54)[:1.7.0_71]
at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237)[:1.7.0_71]
at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138)[:1.7.0_71]
at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252)[:1.7.0_71]
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)[:1.7.0_71]
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)[:1.7.0_71]
at com.sun.jmx.mbeanserver.MXBeanProxy$InvokeHandler.invoke(MXBeanProxy.java:150)[:1.7.0_71]
at com.sun.jmx.mbeanserver.MXBeanProxy.invoke(MXBeanProxy.java:167)[:1.7.0_71]
at javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:252)[:1.7.0_71]
at com.sun.proxy.$Proxy15.commitConfig(Unknown Source)[85:org.opendaylight.controller.config-api:0.4.0.SNAPSHOT]
at org.opendaylight.controller.config.util.ConfigRegistryJMXClient.commitConfig(ConfigRegistryJMXClient.java:102)[86:org.opendaylight.controller.config-util:0.4.0.SNAPSHOT]
at org.opendaylight.controller.netconf.confignetconfconnector.transactions.TransactionProvider.commitTransaction(TransactionProvider.java:138)[106:org.opendaylight.controller.config-netconf-connector:0.4.0.SNAPSHOT]
at org.opendaylight.controller.netconf.confignetconfconnector.operations.Commit.handleWithNoSubsequentOperations(Commit.java:54)[106:org.opendaylight.controller.config-netconf-connector:0.4.0.SNAPSHOT]
at org.opendaylight.controller.netconf.util.mapping.AbstractLastNetconfOperation.handle(AbstractLastNetconfOperation.java:33)[104:org.opendaylight.controller.netconf-util:0.4.0.SNAPSHOT]
at org.opendaylight.controller.netconf.util.mapping.AbstractNetconfOperation.handle(AbstractNetconfOperation.java:100)[104:org.opendaylight.controller.netconf-util:0.4.0.SNAPSHOT]
at org.opendaylight.controller.netconf.persist.impl.ConfigPusherImpl.sendRequestGetResponseCheckIsOK(ConfigPusherImpl.java:342)[109:org.opendaylight.controller.config-persister-impl:0.4.0.SNAPSHOT]
at org.opendaylight.controller.netconf.persist.impl.ConfigPusherImpl.pushConfig(ConfigPusherImpl.java:296)[109:org.opendaylight.controller.config-persister-impl:0.4.0.SNAPSHOT]
at org.opendaylight.controller.netconf.persist.impl.ConfigPusherImpl.pushConfigWithConflictingVersionRetries(ConfigPusherImpl.java:135)[109:org.opendaylight.controller.config-persister-impl:0.4.0.SNAPSHOT]
at org.opendaylight.controller.netconf.persist.impl.ConfigPusherImpl.internalPushConfigs(ConfigPusherImpl.java:103)[109:org.opendaylight.controller.config-persister-impl:0.4.0.SNAPSHOT]
at org.opendaylight.controller.netconf.persist.impl.ConfigPusherImpl.process(ConfigPusherImpl.java:76)[109:org.opendaylight.controller.config-persister-impl:0.4.0.SNAPSHOT]
at org.opendaylight.controller.netconf.persist.impl.osgi.ConfigPersisterActivator$InnerCustomizer$1.run(ConfigPersisterActivator.java:181)[109:org.opendaylight.controller.config-persister-impl:0.4.0.SNAPSHOT]
at java.lang.Thread.run(Thread.java:745)[:1.7.0_71]
2015-06-18 13:53:50,398 | ERROR | config-pusher | ConfigRegistryImpl | 91 - org.opendaylight.controller.config-manager - 0.4.0.SNAPSHOT | Configuration Transaction failed on 2PC, server is unhealthy
java.lang.IllegalStateException: Error - getInstance() failed for ModuleIdentifier{factoryName='arp-handler-impl', instanceName='arp-handler-impl'}

in transaction TransactionIdentifier

{name='ConfigTransaction-189-191'}

at org.opendaylight.controller.config.manager.impl.ConfigTransactionControllerImpl.secondPhaseCommit(ConfigTransactionControllerImpl.java:405)
at org.opendaylight.controller.config.manager.impl.ConfigRegistryImpl.secondPhaseCommit(ConfigRegistryImpl.java:280)
at org.opendaylight.controller.config.manager.impl.ConfigRegistryImpl.commitConfig(ConfigRegistryImpl.java:227)
at sun.reflect.GeneratedMethodAccessor189.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_71]
at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_71]
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:75)[:1.7.0_71]
at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_71]
at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_71]
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:279)[:1.7.0_71]
at com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:193)[:1.7.0_71]
at com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:175)[:1.7.0_71]
at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:117)[:1.7.0_71]
at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:54)[:1.7.0_71]
at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237)[:1.7.0_71]
at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138)[:1.7.0_71]
at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252)[:1.7.0_71]
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)[:1.7.0_71]
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)[:1.7.0_71]
at com.sun.jmx.mbeanserver.MXBeanProxy$InvokeHandler.invoke(MXBeanProxy.java:150)[:1.7.0_71]
at com.sun.jmx.mbeanserver.MXBeanProxy.invoke(MXBeanProxy.java:167)[:1.7.0_71]
at javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:252)[:1.7.0_71]
at com.sun.proxy.$Proxy15.commitConfig(Unknown Source)[85:org.opendaylight.controller.config-api:0.4.0.SNAPSHOT]
at org.opendaylight.controller.config.util.ConfigRegistryJMXClient.commitConfig(ConfigRegistryJMXClient.java:102)[86:org.opendaylight.controller.config-util:0.4.0.SNAPSHOT]
at org.opendaylight.controller.netconf.confignetconfconnector.transactions.TransactionProvider.commitTransaction(TransactionProvider.java:138)[106:org.opendaylight.controller.config-netconf-connector:0.4.0.SNAPSHOT]
at org.opendaylight.controller.netconf.confignetconfconnector.operations.Commit.handleWithNoSubsequentOperations(Commit.java:54)[106:org.opendaylight.controller.config-netconf-connector:0.4.0.SNAPSHOT]
at org.opendaylight.controller.netconf.util.mapping.AbstractLastNetconfOperation.handle(AbstractLastNetconfOperation.java:33)[104:org.opendaylight.controller.netconf-util:0.4.0.SNAPSHOT]
at org.opendaylight.controller.netconf.util.mapping.AbstractNetconfOperation.handle(AbstractNetconfOperation.java:100)[104:org.opendaylight.controller.netconf-util:0.4.0.SNAPSHOT]
at org.opendaylight.controller.netconf.persist.impl.ConfigPusherImpl.sendRequestGetResponseCheckIsOK(ConfigPusherImpl.java:342)[109:org.opendaylight.controller.config-persister-impl:0.4.0.SNAPSHOT]
at org.opendaylight.controller.netconf.persist.impl.ConfigPusherImpl.pushConfig(ConfigPusherImpl.java:296)[109:org.opendaylight.controller.config-persister-impl:0.4.0.SNAPSHOT]
at org.opendaylight.controller.netconf.persist.impl.ConfigPusherImpl.pushConfigWithConflictingVersionRetries(ConfigPusherImpl.java:135)[109:org.opendaylight.controller.config-persister-impl:0.4.0.SNAPSHOT]
at org.opendaylight.controller.netconf.persist.impl.ConfigPusherImpl.internalPushConfigs(ConfigPusherImpl.java:103)[109:org.opendaylight.controller.config-persister-impl:0.4.0.SNAPSHOT]
at org.opendaylight.controller.netconf.persist.impl.ConfigPusherImpl.process(ConfigPusherImpl.java:76)[109:org.opendaylight.controller.config-persister-impl:0.4.0.SNAPSHOT]
at org.opendaylight.controller.netconf.persist.impl.osgi.ConfigPersisterActivator$InnerCustomizer$1.run(ConfigPersisterActivator.java:181)[109:org.opendaylight.controller.config-persister-impl:0.4.0.SNAPSHOT]
at java.lang.Thread.run(Thread.java:745)[:1.7.0_71]
Caused by: org.opendaylight.yangtools.binding.data.codec.impl.IncorrectNestingException: Class interface org.opendaylight.yang.gen.v1.urn.opendaylight.l2switch.loopremover.rev140714.StpStatusAwareNodeConnector is not valid child of interface org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector
at org.opendaylight.yangtools.binding.data.codec.impl.IncorrectNestingException.create(IncorrectNestingException.java:28)
at org.opendaylight.yangtools.binding.data.codec.impl.DataContainerCodecContext.childNonNull(DataContainerCodecContext.java:178)
at org.opendaylight.yangtools.binding.data.codec.impl.DataObjectCodecContext.bindingPathArgumentChild(DataObjectCodecContext.java:178)
at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext.getCodecContextNode(BindingCodecContext.java:127)
at org.opendaylight.yangtools.binding.data.codec.impl.InstanceIdentifierCodec.serialize(InstanceIdentifierCodec.java:29)
at org.opendaylight.yangtools.binding.data.codec.impl.InstanceIdentifierCodec.serialize(InstanceIdentifierCodec.java:19)
at org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry.toYangInstanceIdentifier(BindingNormalizedNodeCodecRegistry.java:87)
at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toYangInstanceIdentifierBlocking(BindingToNormalizedNodeCodec.java:99)
at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedDataBroker.registerDataChangeListener(AbstractForwardedDataBroker.java:68)
at org.opendaylight.l2switch.arphandler.core.ProactiveFloodFlowWriter.registerAsDataChangeListener(ProactiveFloodFlowWriter.java:173)
at org.opendaylight.yang.gen.v1.urn.opendaylight.packet.arp.handler.impl.rev140528.ArpHandlerModule.createInstance(ArpHandlerModule.java:51)
at org.opendaylight.controller.config.spi.AbstractModule.getInstance(AbstractModule.java:73)
at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_71]
at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_71]
at org.opendaylight.controller.config.manager.impl.dependencyresolver.DependencyResolverManager$ModuleInvocationHandler.handleInvocation(DependencyResolverManager.java:150)
at com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:87)
at com.sun.proxy.$Proxy84.getInstance(Unknown Source)
at org.opendaylight.controller.config.manager.impl.ConfigTransactionControllerImpl.secondPhaseCommit(ConfigTransactionControllerImpl.java:399)
... 35 more

Comment by Evan Zeller [ 18/Jun/15 ]

Looks like something similar in GBP from May 11: https://gist.github.com/yapengwu/1fe63eba3a50d53f643a

maybe they can provide insight

Comment by Amit Mandke [ 18/Jun/15 ]

Given steps is not a valid / supported scenario. So this cant be called as a bug. L2switch feature needs to be installed before mininet is connected to controller.

Did this sequence ever worked before, according to me this would never work. So cant call this a bug.

Comment by Luis Gomez [ 18/Jun/15 ]

Jamo will comment in the sequence I still see the config-pusher issue sporadically when testing with other ODL features.

We can close this bug but we will need to write a Release Note warning users to use l2switch stand-alone with no other apps in ODL.

BR/Luis

Comment by Jamo Luhrsen [ 19/Jun/15 ]

A couple of points to make:

1. Having mininet running before starting the controller or any of it's features
is fine. Even before installing odl-l2switch-switch-ui. I can have mininet running,
start karaf, start the l2switch-ui feature set and all seems to be fine (e.g. pingall
works)

This is not a realistic requirement for a production controller.
We can't expect to have the entire network off (or openflow disabled) before
we start/install some features.

2. Luis can see this same issue in other scenarios, but maybe not with such and
easy set of steps to reproduce. I wonder if this is just the one easy way to hit
a more global problem.

3. I'm fine if this is not a blocker, as the workaround is just not to install
openflowplugin-flow-services-ui before l2switch-ui. But, based on points 1 and
2 above, I would strongly argue that this is still a bug.

I actually have not tried this in Helium, but I can later. It's completely possible
that this has always been the case. As I noted to Evan, in IRC, I only came upon
this accidentally.

Comment by Luis Gomez [ 19/Jun/15 ]

News on this, it seems this issue could be similar to:

https://bugs.opendaylight.org/show_bug.cgi?id=3767

They also show (from lacp bug):

ERROR | config-pusher | ConfigTransactionControllerImpl | 113 - org.opendaylight.controller.config-manager - 0.3.0.SNAPSHOT | Commit failed on ModuleIdentifier

{factoryName='lacp-main', instanceName='lacp-main'}

in transaction TransactionIdentifier

{name='ConfigTransaction-79-81'}

org.opendaylight.yangtools.binding.data.codec.impl.IncorrectNestingException: Class interface org.opendaylight.yang.gen.v1.urn.opendaylight.lacp.node.rev150131.LacpNode is not valid child of interface

Tony and Ed are already working in this as it seems to be a race condition issue in MD-SAL.

BR/Luis

Comment by Tony Tkacik [ 19/Jun/15 ]

https://git.opendaylight.org/gerrit/#/c/22986/ should fix it.

Comment by Jamo Luhrsen [ 19/Jun/15 ]

The exception goes away after https://git.opendaylight.org/gerrit/#/c/22986/.

However, l2switch functionality is not working. links, hosts are not learned and host connectivity is not there (e.g. pingall in mininet).

again, to reiterate this is with these steps:

1 install openflowplugin-flow-services-ui
2 start mininet
3 install l2switch-ui

if the steps are like below, it works:

1 start mininet
2 install l2switch-ui (which will bring in the flow-services-ui as well)

Comment by Jamo Luhrsen [ 19/Jun/15 ]

Marking this fixed as restarting network will allow l2switch functionality to work. and the config-pusher issue is resolved.

Generated at Wed Feb 07 20:05:47 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.