[NETCONF-899] Northbound NETCONF server connection error Created: 21/Aug/22 Updated: 22/Aug/22 Resolved: 22/Aug/22 |
|
| Status: | Resolved |
| Project: | netconf |
| Component/s: | netconf |
| Affects Version/s: | 4.0.0, 4.0.1 |
| Fix Version/s: | 3.0.6, 4.0.2 |
| Type: | Bug | Priority: | High |
| Reporter: | Sangwook Ha | Assignee: | Robert Varga |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
Found in netconf-csit-1node-gate-userfeatures-rfc8040-all-master/59 Connecting to MD-SAL NETCONF server fails with this error: Caused by: org.opendaylight.mdsal.binding.dom.codec.api.IncorrectNestingException: Child interface org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.sessions.Session is not valid child of interface org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netconf.monitoring.rev220718.Session1 at org.opendaylight.mdsal.binding.dom.codec.api.IncorrectNestingException.create(IncorrectNestingException.java:28) ~[?:?] at org.opendaylight.mdsal.binding.dom.codec.impl.DataContainerCodecContext.childNullException(DataContainerCodecContext.java:221) ~[?:?] at org.opendaylight.mdsal.binding.dom.codec.impl.DataContainerCodecContext.childNonNull(DataContainerCodecContext.java:188) ~[?:?] at org.opendaylight.mdsal.binding.dom.codec.impl.DataObjectCodecContext.streamChild(DataObjectCodecContext.java:214) ~[?:?] at org.opendaylight.mdsal.binding.dom.codec.impl.BindingToNormalizedStreamWriter.enter(BindingToNormalizedStreamWriter.java:80) ~[?:?] at org.opendaylight.mdsal.binding.dom.codec.impl.BindingToNormalizedStreamWriter.startAugmentationNode(BindingToNormalizedStreamWriter.java:162) ~[?:?] at org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.netconf.monitoring.rev220718.Session1$$$streamer.serialize(Unknown Source) ~[?:?] at org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext$DataObjectSerializerProxy.serialize(BindingCodecContext.java:116) ~[?:?] at org.opendaylight.mdsal.binding.dom.codec.impl.DataObjectStreamer.emitAugmentation(DataObjectStreamer.java:173) ~[?:?] at org.opendaylight.mdsal.binding.dom.codec.impl.DataObjectStreamer.streamAugmentations(DataObjectStreamer.java:60) ~[?:?] at org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.sessions.Session$$$streamer.serialize(Unknown Source) ~[?:?] at org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext$DataObjectSerializerProxy.serialize(BindingCodecContext.java:116) ~[?:?] at org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext.toNormalizedNode(BindingCodecContext.java:522) ~[?:?] at org.opendaylight.mdsal.binding.dom.codec.spi.ForwardingBindingDOMCodecServices.toNormalizedNode(ForwardingBindingDOMCodecServices.java:67) ~[?:?] at org.opendaylight.mdsal.binding.dom.codec.spi.ForwardingBindingDOMCodecServices.toNormalizedNode(ForwardingBindingDOMCodecServices.java:67) ~[?:?] at org.opendaylight.mdsal.binding.dom.adapter.BindingDOMWriteTransactionAdapter.toNormalized(BindingDOMWriteTransactionAdapter.java:105) ~[?:?] at org.opendaylight.mdsal.binding.dom.adapter.BindingDOMWriteTransactionAdapter.toNormalized(BindingDOMWriteTransactionAdapter.java:98) ~[?:?] at org.opendaylight.mdsal.binding.dom.adapter.BindingDOMWriteTransactionAdapter.put(BindingDOMWriteTransactionAdapter.java:33) ~[?:?] at org.opendaylight.controller.config.yang.netconf.mdsal.monitoring.MonitoringToMdsalWriter.lambda$onSessionStarted$1(MonitoringToMdsalWriter.java:66) ~[?:?] at org.opendaylight.controller.config.yang.netconf.mdsal.monitoring.MonitoringToMdsalWriter.runTransaction(MonitoringToMdsalWriter.java:103) ~[?:?] at org.opendaylight.controller.config.yang.netconf.mdsal.monitoring.MonitoringToMdsalWriter.onSessionStarted(MonitoringToMdsalWriter.java:66) ~[?:?] at org.opendaylight.netconf.impl.osgi.NetconfSessionMonitoringService.notifySessionUp(NetconfSessionMonitoringService.java:131) ~[?:?] at org.opendaylight.netconf.impl.osgi.NetconfSessionMonitoringService.onSessionUp(NetconfSessionMonitoringService.java:82) ~[?:?] at org.opendaylight.netconf.impl.NetconfServerSessionListener.onSessionUp(NetconfServerSessionListener.java:50) ~[?:?] at org.opendaylight.netconf.impl.NetconfServerSessionListener.onSessionUp(NetconfServerSessionListener.java:33) ~[?:?] at org.opendaylight.netconf.nettyutil.AbstractNetconfSession.sessionUp(AbstractNetconfSession.java:100) ~[?:?] at org.opendaylight.netconf.impl.NetconfServerSession.sessionUp(NetconfServerSession.java:86) ~[?:?] at org.opendaylight.netconf.nettyutil.AbstractNetconfSession.handlerAdded(AbstractNetconfSession.java:191) ~[?:?] at io.netty.channel.AbstractChannelHandlerContext.callHandlerAdded(AbstractChannelHandlerContext.java:938) ~[?:?] at io.netty.channel.DefaultChannelPipeline.callHandlerAdded0(DefaultChannelPipeline.java:609) ~[?:?] ... 58 more It appears that the Session1 class generated from odl-netconf-monitoring.yang is loaded twice, one from netconf-impl & mdsal-netconf-impl which has netconf-impl as an embedded dependency causing class comparison to fail. |
| Comments |
| Comment by Robert Varga [ 22/Aug/22 ] |
|
The fix is to use proper imports from netconf-impl and not embed it. The fix should really be also backported to 3.0.x |