[NETCONF-828] root element is not accessable with rfc8040 but with restconf-bierman Created: 04/Nov/21 Updated: 01/Dec/21 Resolved: 09/Nov/21 |
|
| Status: | Resolved |
| Project: | netconf |
| Component/s: | netconf, restconf-nb |
| Affects Version/s: | 1.13.2 |
| Fix Version/s: | 2.0.0, 1.13.6 |
| Type: | Bug | Priority: | Medium |
| Reporter: | Michael Dürre | Assignee: | Michael Dürre |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Description |
|
to reproduce: * mount any netconf device with node-id test * Trying 172.18.0.3:8181... * TCP_NODELAY set * Connected to sdnr (172.18.0.3) port 8181 (#0) * Server auth using Basic with user 'admin' > GET /rests/data/network-topology:network-topology/topology=topology-netconf/node=test/yang-ext:mount/ HTTP/1.1 > Host: sdnr:8181 > Authorization: Basic YWRtaW46YWRtaW4= > User-Agent: curl/7.68.0 > Accept: */* > * Mark bundle as not supporting multiuse < HTTP/1.1 500 Internal Server Error < Set-Cookie: rememberMe=deleteMe; Path=/; Max-Age=0; Expires=Wed, 03-Nov-2021 11:38:25 GMT < Content-Type: application/yang-data+json < Content-Length: 174 < * Connection #0 to host sdnr left intact {"errors":{"error":[{"error-type":"application","error-tag":"operation-failed","error-info":"java.lang.UnsupportedOperationException","error-message":"Transaction failed"}]}} ODL stacktrace: 2021-11-04T10:13:00,071 | WARN | qtp392466213-1028 | FutureCallbackTx | 357 - org.opendaylight.netconf.restconf-nb-rfc8040 - 1.13.2 | - | Transaction(READ) FAILED!2021-11-04T10:13:00,071 | WARN | qtp392466213-1028 | FutureCallbackTx | 357 - org.opendaylight.netconf.restconf-nb-rfc8040 - 1.13.2 | - | Transaction(READ) FAILED!java.util.concurrent.ExecutionException: java.lang.UnsupportedOperationException at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:564) ~[bundleFile:?] at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:545) ~[bundleFile:?] at com.google.common.util.concurrent.FluentFuture$TrustedFuture.get(FluentFuture.java:88) ~[bundleFile:?] at org.opendaylight.restconf.nb.rfc8040.rests.utils.FutureCallbackTx.addCallback(FutureCallbackTx.java:82) ~[bundleFile:?] at org.opendaylight.restconf.nb.rfc8040.rests.utils.FutureCallbackTx.addCallback(FutureCallbackTx.java:57) ~[bundleFile:?] at org.opendaylight.restconf.nb.rfc8040.rests.utils.ReadDataTransactionUtil.extractReadData(ReadDataTransactionUtil.java:470) ~[bundleFile:?] at org.opendaylight.restconf.nb.rfc8040.rests.utils.ReadDataTransactionUtil.readDataViaTransaction(ReadDataTransactionUtil.java:440) ~[bundleFile:?] at org.opendaylight.restconf.nb.rfc8040.rests.utils.ReadDataTransactionUtil.readAllData(ReadDataTransactionUtil.java:487) ~[bundleFile:?] at org.opendaylight.restconf.nb.rfc8040.rests.utils.ReadDataTransactionUtil.readData(ReadDataTransactionUtil.java:220) ~[bundleFile:?] at org.opendaylight.restconf.nb.rfc8040.rests.services.impl.RestconfDataServiceImpl.readData(RestconfDataServiceImpl.java:212) ~[bundleFile:?] at org.opendaylight.restconf.nb.rfc8040.rests.services.impl.RestconfDataServiceImpl.readData(RestconfDataServiceImpl.java:164) ~[bundleFile:?] at org.opendaylight.restconf.nb.rfc8040.services.wrapper.ServicesWrapper.readData(ServicesWrapper.java:118) ~[bundleFile:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:?] at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:?] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:?] at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:76) ~[?:?] at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:148) ~[?:?] at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:191) ~[?:?] at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:200) ~[?:?] at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:103) ~[?:?] at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:493) ~[?:?] at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:415) ~[?:?] at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:104) ~[?:?] at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:277) ~[?:?] at org.glassfish.jersey.internal.Errors$1.call(Errors.java:272) ~[?:?] at org.glassfish.jersey.internal.Errors$1.call(Errors.java:268) ~[?:?] at org.glassfish.jersey.internal.Errors.process(Errors.java:316) ~[?:?] at org.glassfish.jersey.internal.Errors.process(Errors.java:298) ~[?:?] at org.glassfish.jersey.internal.Errors.process(Errors.java:268) ~[?:?] at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:289) ~[?:?] at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:256) ~[?:?] at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:703) ~[?:?] at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:416) ~[?:?] at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:370) ~[?:?] at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:389) ~[?:?] at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:342) ~[?:?] at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:229) ~[?:?] at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1443) ~[bundleFile:9.4.38.v20210224] at org.eclipse.jetty.servlet.ServletHolder.readAllDataerChain.doFilter(ProxiedFilterChain.java:61) ~[?:?] at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) ~[?:?] at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) ~[?:?] at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) ~[?:?] at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) ~[?:?] at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) ~[?:?] at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) ~[?:?] at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) ~[?:?] at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) ~[?:?] at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) ~[?:?] at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) ~[?:?] at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) ~[?:?] at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) ~[?:?] at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) ~[?:?] at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) ~[?:?] at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) ~[?:?] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[bundleFile:9.4.38.v20210224] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[bundleFile:9.4.38.v20210224] at org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:228) ~[bundleFile:9.4.38.v20210224] at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193) ~[bundleFile:9.4.38.v20210224] at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1601) ~[bundleFile:9.4.38.v20210224] at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548) ~[bundleFile:9.4.38.v20210224] at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:71) ~[bundleFile:?] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[bundleFile:9.4.38.v20210224] at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:602) ~[bundleFile:9.4.38.v20210224] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[bundleFile:9.4.38.v20210224] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) ~[bundleFile:9.4.38.v20210224] at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624) ~[bundleFile:9.4.38.v20210224] at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[bundleFile:9.4.38.v20210224] at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1435) ~[bundleFile:9.4.38.v20210224] at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:294) ~[bundleFile:?] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[bundleFile:9.4.38.v20210224] at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) ~[bundleFile:9.4.38.v20210224] at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594) ~[bundleFile:9.4.38.v20210224] at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[bundleFile:9.4.38.v20210224] at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1350) ~[bundleFile:9.4.38.v20210224] at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[bundleFile:9.4.38.v20210224] at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:82) ~[bundleFile:?] at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[bundleFile:9.4.38.v20210224] at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[bundleFile:9.4.38.v20210224] at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388) ~[bundleFile:9.4.38.v20210224] at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633) [bundleFile:9.4.38.v20210224] at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380) [bundleFile:9.4.38.v20210224] at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:279) [bundleFile:9.4.38.v20210224] at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) [bundleFile:9.4.38.v20210224] at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) [bundleFile:9.4.38.v20210224] at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) [bundleFile:9.4.38.v20210224] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) [bundleFile:9.4.38.v20210224] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) [bundleFile:9.4.38.v20210224] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) [bundleFile:9.4.38.v20210224] at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) [bundleFile:9.4.38.v20210224] at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:383) [bundleFile:9.4.38.v20210224] at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:882) [bundleFile:9.4.38.v20210224] at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1036) [bundleFile:9.4.38.v20210224] at java.lang.Thread.run(Unknown Source) [?:?] Caused by: java.lang.UnsupportedOperationException at org.opendaylight.netconf.util.NodeContainerProxy.getPath(NodeContainerProxy.java:121) ~[?:?] at org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream.read(XmlParserStream.java:534) ~[bundleFile:?] at org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream.parse(XmlParserStream.java:273) ~[bundleFile:?] at org.opendaylight.yangtools.yang.data.codec.xml.XmlParserStream.traverse(XmlParserStream.java:300) ~[bundleFile:?] at org.opendaylight.netconf.util.NetconfUtil.transformDOMSourceToNormalizedNode(NetconfUtil.java:366) ~[?:?] at org.opendaylight.netconf.sal.connect.netconf.util.NetconfRpcStructureTransformer.selectFromDataStructure(NetconfRpcStructureTransformer.java:47) ~[?:?] at org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps.lambda$extractData$0(NetconfBaseOps.java:313) ~[?:?] at com.google.common.util.concurrent.AbstractTransformFuture$TransformFuture.doTransform(AbstractTransformFuture.java:242) ~[bundleFile:?] at com.google.common.util.concurrent.AbstractTransformFuture$TransformFuture.doTransform(AbstractTransformFuture.java:232) ~[bundleFile:?] at com.google.common.util.concurrent.AbstractTransformFuture.run(AbstractTransformFuture.java:118) ~[bundleFile:?] at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30) ~[bundleFile:?] at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1174) ~[bundleFile:?] at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:969) ~[bundleFile:?] at com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:738) ~[bundleFile:?] at com.google.common.util.concurrent.SettableFuture.set(SettableFuture.java:47) ~[bundleFile:?] at org.opendaylight.netconf.sal.connect.netconf.sal.KeepaliveSalFacade$RequestTimeoutTask.onSuccess(KeepaliveSalFacade.java:297) ~[?:?] at org.opendaylight.netconf.sal.connect.netconf.sal.KeepaliveSalFacade$RequestTimeoutTask.onSuccess(KeepaliveSalFacade.java:277) ~[?:?] at com.google.common.util.concurrent.Futures$CallbackListener.run(Futures.java:1089) ~[bundleFile:?] at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30) ~[bundleFile:?] at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1174) ~[bundleFile:?] at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:969) ~[bundleFile:?] at com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:738) ~[bundleFile:?] at com.google.common.util.concurrent.SettableFuture.set(SettableFuture.java:47) ~[bundleFile:?] at org.opendaylight.netconf.sal.connect.netconf.sal.NetconfDeviceRpc$1.onSuccess(NetconfDeviceRpc.java:62) ~[?:?] at org.opendaylight.netconf.sal.connect.netconf.sal.NetconfDeviceRpc$1.onSuccess(NetconfDeviceRpc.java:58) ~[?:?] at com.google.common.util.concurrent.Futures$CallbackListener.run(Futures.java:1089) ~[bundleFile:?] at com.google.common.util.concurrent.DirectExecutor.execute(DirectExecutor.java:30) ~[bundleFile:?] at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1174) ~[bundleFile:?] at com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:969) ~[bundleFile:?] at com.google.common.util.concurrent.AbstractFuture.set(AbstractFuture.java:738) ~[bundleFile:?] at org.opendaylight.netconf.sal.connect.netconf.listener.UncancellableFuture.set(UncancellableFuture.java:45) ~[?:?] at org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCommunicator.processMessage(NetconfDeviceCommunicator.java:337) ~[?:?] at org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCommunicator.onMessage(NetconfDeviceCommunicator.java:269) ~[?:?] at org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCommunicator.onMessage(NetconfDeviceCommunicator.java:48) ~[?:?] at org.opendaylight.netconf.nettyutil.AbstractNetconfSession.handleMessage(AbstractNetconfSession.java:64) ~[?:?] at org.opendaylight.netconf.nettyutil.AbstractNetconfSession.channelRead0(AbstractNetconfSession.java:187) ~[?:?] at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99) ~[?:?] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[?:?] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[?:?] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[?:?] at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) ~[?:?] at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296) ~[?:?] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[?:?] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[?:?] at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[?:?] at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) ~[?:?] at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296) ~[?:?] at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[?:?] at io.netty.channel.AbstractChannelHandlerContext.access$600(AbstractChannelHandlerContext.java:61) ~[?:?] at io.netty.channel.AbstractChannelHandlerContext$7.run(AbstractChannelHandlerContext.java:370) ~[?:?] at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) ~[?:?] at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) ~[?:?] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) ~[?:?] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) ~[?:?] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[?:?] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[?:?] ... |
| Comments |
| Comment by Robert Varga [ 04/Nov/21 ] |
|
Does this reproduce with current Phosphorus? |
| Comment by Robert Varga [ 04/Nov/21 ] |
|
This is triggered on an error path, the exception is hiding a data/schema mismatch. What is the SB device this occurs with? |
| Comment by Michael Dürre [ 08/Nov/21 ] |
|
solved in phosphorus-sr0 |
| Comment by Michael Dürre [ 08/Nov/21 ] |
|
>> What is the SB device this occurs with? It is a netopeer2 server with o-ran ru-fh yangs. >> Aside from Phosphorus, what does current netconf 1.13.x ... Since it is working with phosphorus-sr0, should I still test it with this fix? Or do you know why this is happening? |
| Comment by Robert Varga [ 08/Nov/21 ] |
|
Well, depends. |
| Comment by Michael Dürre [ 08/Nov/21 ] |
|
So with this you will be able to provide the patch within silicon-sr3 release? just asking because official release date was 4.11.2021 and we think in ONAP about doing a service release for our Istanbul release. Nevertheless I will do that and put the logs here. |
| Comment by Michael Dürre [ 09/Nov/21 ] |
|
What I have done: [1] tested the fix first for silicon-sr1 (patched netconf 1.13.2). This caused a nullpointer exception on mount. tl;dr: this works. would be great if it will be in silicon-sr3 |
| Comment by Robert Varga [ 09/Nov/21 ] |
|
Interesting. I cannot find anything which would explain that set of observation, but if 1.13.4+patch works, so should 1.13.6. |