[LACP-15] Installing lacp feature after the topology is learnt by the controller throws exception during lacp feature installation. Created: 17/Jun/15  Updated: 19/Oct/17  Resolved: 22/Jun/15

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

Type: Bug
Reporter: Kalaiselvi Assignee: Unassigned
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: 3767

 Description   

Bringup the controller with the openflowplugin.
Connect a mininet topology with the controller.
Let the controller learn the topology.
Install the lacp feature.
On installing the feature, throws the below exceptions
ds-oper-thread-0 | DataObjectCodecContext | 106 - org.opendaylight.yangtools.binding-data-codec - 0.7.0.SNAPSHOT | Failed to load augmentation prototype for GeneratedTransferObject [packageName=org.opendaylight.yang.gen.v1.urn.opendaylight.lacp.node.rev150131, name=LacpNode, comment=, annotations=[], implements=[Type (org.opendaylight.yangtools.yang.binding.DataObject), Type (org.opendaylight.yangtools.yang.binding.Augmentation), GeneratedType [packageName=org.opendaylight.yang.gen.v1.urn.opendaylight.lacp.node.rev150131, name=LagNode, parent=null, comment=null, annotations=[], enclosedTypes=[], enumerations=[], constants=[Constant [type=Type (org.opendaylight.yangtools.yang.common.QName), name=QNAME, value=org.opendaylight.yangtools.yang.common.QName.cachedReference(org.opendaylight.yangtools.yang.common.QName.create("urn:opendaylight:lacp:node","2015-01-31","lag-node")), definingType=org.opendaylight.yang.gen.v1.urn.opendaylight.lacp.node.rev150131.LagNode]], methodSignatures=[MethodSignatureImpl [name=getSystemId, comment=Mac address component of system identifier, definingType=org.opendaylight.yang.gen.v1.urn.opendaylight.lacp.node.rev150131.LagNode, returnType=GeneratedTransferObject [packageName=org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924, name=MacAddress, comment=, annotations=[], extends=null, implements=[], enclosedTypes=[], constants=[], enumerations=[], properties=[GeneratedPropertyImpl [name=value, annotations=[], comment=, parent=org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress, returnType=Type (java.lang.String), isFinal=false, isReadOnly=true, modifier=PUBLIC]], equalsProperties=[], hashCodeProperties=[], stringProperties=[], methods=[]], params=[], annotations=[]], MethodSignatureImpl [name=getSystemPriority, comment=The priority assigned to the system,(Assigned by admin/system policy), definingType=org.opendaylight.yang.gen.v1.urn.opendaylight.lacp.node.rev150131.LagNode, returnType=Type (java.lang.Integer), params=[], annotations=[]], MethodSignatureImpl [name=getLacpAggregators, comment=List of lacp aggregators in the system, definingType=org.opendaylight.yang.gen.v1.urn.opendaylight.lacp.node.rev150131.LagNode, returnType=Type (java.util.List), params=[], annotations=[]], MethodSignatureImpl [name=getNonLagGroupid, comment=Group ID, definingType=org.opendaylight.yang.gen.v1.urn.opendaylight.lacp.node.rev150131.LagNode, returnType=Type (java.lang.Long), params=[], annotations=[]]]]], enclosedTypes=[], constants=[], enumerations=[], properties=, methods=[]]
java.lang.ClassNotFoundException: org.opendaylight.yang.gen.v1.urn.opendaylight.lacp.node.rev150131.LacpNode

at java.net.URLClassLoader$1.run(URLClassLoader.java:366)[:1.7.0_45]
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)[:1.7.0_45]
at java.security.AccessController.doPrivileged(Native Method)[:1.7.0_45]
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)[:1.7.0_45]
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)[:1.7.0_45]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)[:1.7.0_45]
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)[:1.7.0_45]
at org.eclipse.core.runtime.internal.adaptor.ContextFinder.loadClass(ContextFinder.java:131)[org.eclipse.osgi-3.8.2.v20130124-134944.jar:]
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)[:1.7.0_45]
at org.opendaylight.yangtools.util.ClassLoaderUtils.loadClass(ClassLoaderUtils.java:109)[64:org.opendaylight.yangtools.util:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.util.ClassLoaderUtils.loadClassWithTCCL(ClassLoaderUtils.java:125)[64:org.opendaylight.yangtools.util:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.sal.binding.generator.impl.GeneratedClassLoadingStrategy$TCCLClassLoadingStrategy.loadClass(GeneratedClassLoadingStrategy.java:44)[101:org.opendaylight.yangtools.binding-generator-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.sal.binding.generator.impl.ModuleInfoBackedContext.loadClass(ModuleInfoBackedContext.java:69)[101:org.opendaylight.yangtools.binding-generator-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.sal.binding.generator.impl.GeneratedClassLoadingStrategy.loadClass(GeneratedClassLoadingStrategy.java:27)[101:org.opendaylight.yangtools.binding-generator-impl:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.binding.data.codec.impl.DataObjectCodecContext.getAugmentationPrototype(DataObjectCodecContext.java:252)[106:org.opendaylight.yangtools.binding-data-codec:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.binding.data.codec.impl.DataObjectCodecContext.<init>(DataObjectCodecContext.java:107)[106:org.opendaylight.yangtools.binding-data-codec:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.binding.data.codec.impl.ListNodeCodecContext.<init>(ListNodeCodecContext.java:22)[106:org.opendaylight.yangtools.binding-data-codec:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.binding.data.codec.impl.KeyedListNodeCodecContext.<init>(KeyedListNodeCodecContext.java:29)[106:org.opendaylight.yangtools.binding-data-codec:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.binding.data.codec.impl.DataContainerCodecPrototype.createInstance(DataContainerCodecPrototype.java:143)[106:org.opendaylight.yangtools.binding-data-codec:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.binding.data.codec.impl.DataContainerCodecPrototype.get(DataContainerCodecPrototype.java:126)[106:org.opendaylight.yangtools.binding-data-codec:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.binding.data.codec.impl.DataObjectCodecContext.bindingPathArgumentChild(DataObjectCodecContext.java:178)[106:org.opendaylight.yangtools.binding-data-codec:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.binding.data.codec.impl.BindingCodecContext.getCodecContextNode(BindingCodecContext.java:127)[106:org.opendaylight.yangtools.binding-data-codec:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.binding.data.codec.impl.InstanceIdentifierCodec.serialize(InstanceIdentifierCodec.java:29)[106:org.opendaylight.yangtools.binding-data-codec:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.binding.data.codec.impl.InstanceIdentifierCodec.serialize(InstanceIdentifierCodec.java:19)[106:org.opendaylight.yangtools.binding-data-codec:0.7.0.SNAPSHOT]
at org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry.toYangInstanceIdentifier(BindingNormalizedNodeCodecRegistry.java:87)[106:org.opendaylight.yangtools.binding-data-codec:0.7.0.SNAPSHOT]
at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toYangInstanceIdentifierBlocking(BindingToNormalizedNodeCodec.java:99)[157:org.opendaylight.controller.sal-binding-broker-impl:1.2.0.SNAPSHOT]
at org.opendaylight.controller.md.sal.binding.impl.AbstractForwardedTransaction.doRead(AbstractForwardedTransaction.java:63)[157:org.opendaylight.controller.sal-binding-broker-impl:1.2.0.SNAPSHOT]
at org.opendaylight.controller.md.sal.binding.impl.BindingDOMReadWriteTransactionAdapter.read(BindingDOMReadWriteTransactionAdapter.java:31)[157:org.opendaylight.controller.sal-binding-broker-impl:1.2.0.SNAPSHOT]
at org.opendaylight.openflowplugin.applications.statistics.manager.impl.StatListenCommitQueue$1.applyOperation(StatListenCommitQueue.java:109)[195:org.opendaylight.openflowplugin.applications.statistics-manager:0.1.0.SNAPSHOT]
at org.opendaylight.openflowplugin.applications.statistics.manager.impl.StatisticsManagerImpl.run(StatisticsManagerImpl.java:186)[195:org.opendaylight.openflowplugin.applications.statistics-manager:0.1.0.SNAPSHOT]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[:1.7.0_45]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)[:1.7.0_45]
at java.lang.Thread.run(Thread.java:744)[:1.7.0_45]
Similar exception is throw for the nodeconnector augmentation data object also.

Also after the lacp feature comes up, the below exception is thrown.
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 org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node
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.BindingCodecContext.newWriter(BindingCodecContext.java:104)
at org.opendaylight.yangtools.binding.data.codec.impl.BindingNormalizedNodeCodecRegistry.toNormalizedNode(BindingNormalizedNodeCodecRegistry.java:102)
at org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec.toNormalizedNode(BindingToNormalizedNodeCodec.java:133)
at org.opendaylight.controller.md.sal.binding.impl.AbstractWriteTransaction.merge(AbstractWriteTransaction.java:53)
at org.opendaylight.controller.md.sal.binding.impl.BindingDOMWriteTransactionAdapter.merge(BindingDOMWriteTransactionAdapter.java:46)
at org.opendaylight.lacp.inventory.LacpNodeExtn.updateLacpNodeDS(LacpNodeExtn.java:286)
at org.opendaylight.lacp.inventory.LacpNodeExtn.addNonLacpPort(LacpNodeExtn.java:142)
at org.opendaylight.lacp.inventory.LacpSystem.readDataStore(LacpSystem.java:181)
at org.opendaylight.yang.gen.v1.urn.opendaylight.lacp.lacp.main.rev141216.LacpMainModule.createInstance(LacpMainModule.java:90)
at org.opendaylight.controller.config.spi.AbstractModule.getInstance(AbstractModule.java:73)
at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_45]
at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_45]
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.$Proxy37.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.NativeMethodAccessorImpl.invoke0(Native Method)[:1.7.0_45]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[:1.7.0_45]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_45]
at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_45]
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:75)[:1.7.0_45]
at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_45]
at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_45]



 Comments   
Comment by Rajesh B Sindagi [ 17/Jun/15 ]

Workaround for the defect - Start OpenDaylight controller with LACP module and then have the network connect to the controller.

Comment by Luis Gomez [ 19/Jun/15 ]

We found similar bug here:

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

Ed told me Tony will look at it.

BR/Luis

Comment by Tony Tkacik [ 19/Jun/15 ]

https://git.opendaylight.org/gerrit/#/c/22804/1 - required for lacp to start after models are loaded.
https://git.opendaylight.org/gerrit/#/c/22986/ - fixes codec upgrade if other thread created codec before classes from model bundle was known to codec.

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