[JSONRPC-28] Exception thrown in JsonRpcTx is not propagated in restconf Created: 13/Feb/19  Updated: 23/Mar/19  Resolved: 23/Mar/19

Status: Verified
Project: jsonrpc
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Low
Reporter: Richard Kosegi Assignee: Richard Kosegi
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

branch master (sodium)



 Description   

Exception thrown during read data operation (like MessageLibraryTimeoutException) is not propagated correctly in restconf as it is expected to be of type ReadFailedException:

 

4:52:09.448 WARN [qtp1452261570-112] /restconf/config/jsonrpc:config/configured-endpoints/endpoint-1/yang-ext:mount/base-ip:ipv4/vport1
javax.servlet.ServletException: javax.servlet.ServletException: java.lang.ClassCastException: Cannot cast org.opendaylight.jsonrpc.bus.messagelib.MessageLibraryTimeoutException to org.opendaylight.mdsal.common.api.ReadFailedException
    at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:88) ~[?:?]
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) ~[148:org.eclipse.jetty.server:9.4.12.v20180830]
    at org.eclipse.jetty.server.Server.handle(Server.java:503) ~[148:org.eclipse.jetty.server:9.4.12.v20180830]
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:364) [148:org.eclipse.jetty.server:9.4.12.v20180830]
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) [148:org.eclipse.jetty.server:9.4.12.v20180830]
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) [140:org.eclipse.jetty.io:9.4.12.v20180830]
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) [140:org.eclipse.jetty.io:9.4.12.v20180830]
    at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) [140:org.eclipse.jetty.io:9.4.12.v20180830]
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) [151:org.eclipse.jetty.util:9.4.12.v20180830]
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) [151:org.eclipse.jetty.util:9.4.12.v20180830]
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) [151:org.eclipse.jetty.util:9.4.12.v20180830]
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126) [151:org.eclipse.jetty.util:9.4.12.v20180830]
    at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366) [151:org.eclipse.jetty.util:9.4.12.v20180830]
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765) [151:org.eclipse.jetty.util:9.4.12.v20180830]
    at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683) [151:org.eclipse.jetty.util:9.4.12.v20180830]
    at java.lang.Thread.run(Thread.java:748) [?:?]
Caused by: javax.servlet.ServletException: java.lang.ClassCastException: Cannot cast org.opendaylight.jsonrpc.bus.messagelib.MessageLibraryTimeoutException to org.opendaylight.mdsal.common.api.ReadFailedException
    at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:489) ~[?:?]
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427) ~[?:?]
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388) ~[?:?]
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341) ~[?:?]
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228) ~[?:?]
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865) ~[?:?]
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1655) ~[?:?]
    at org.eclipse.jetty.servlets.CrossOriginFilter.handle(CrossOriginFilter.java:311) ~[?:?]
    at org.eclipse.jetty.servlets.CrossOriginFilter.doFilter(CrossOriginFilter.java:265) ~[?:?]
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) ~[?:?]
    at org.apache.shiro.web.servlet.ProxiedFilterChain.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) ~[?:?]



 Comments   
Comment by Richard Kosegi [ 15/Feb/19 ]

We are violating contract of DOMDataTreeReadOperations (implemented by JsonRPCTx). Fix is to catch exception and return proper FluentFuture with it.

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