[NETCONF-802] Restconf reports status 500 when stream does not exist Created: 11/Aug/21  Updated: 11/Aug/21  Resolved: 11/Aug/21

Status: Resolved
Project: netconf
Component/s: restconf-nb
Affects Version/s: None
Fix Version/s: 1.13.4, 2.0.3

Type: Bug Priority: Medium
Reporter: Robert Varga Assignee: Robert Varga
Resolution: Done Votes: 0
Labels: pt
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

This was found while investigating NETCONF-800: when requesting a non-existent stream using:

curl -u admin:admin http://127.0.0.1:8181/rests/data/ietf-restconf-monitoring:restconf-state/streams/stream/data-change-event-subscription/opendaylight-inventory:nodes/datastore=CONFIGURATION/scope=BASE

we end up with a HTTP status 500. This boils down to a IAE being thrown and not wrapped:

11:52:49.327 WARN [qtp348753156-382] /rests/data/ietf-restconf-monitoring:restconf-state/streams/stream/data-change-event-subscription/opendaylight-inventory:nodes/datastore=CONFIGURATION/scope=BASE
javax.servlet.ServletException: javax.servlet.ServletException: java.lang.IllegalArgumentException: Listener doesn't exist : data-change-event-subscription/opendaylight-inventory:nodes/datastore=CONFIGURATION/scope=BASE
        at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:90) ~[?:?]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[?:?]
        at org.eclipse.jetty.server.Server.handle(Server.java:516) ~[?:?]

[snip]

Caused by: javax.servlet.ServletException: java.lang.IllegalArgumentException: Listener doesn't exist : data-change-event-subscription/opendaylight-inventory:nodes/datastore=CONFIGURATION/scope=BASE
        at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:432) ~[?:?]

[snip]

Caused by: java.lang.IllegalArgumentException: Listener doesn't exist : data-change-event-subscription/opendaylight-inventory:nodes/datastore=CONFIGURATION/scope=BASE
        at com.google.common.base.Preconditions.checkArgument(Preconditions.java:142) ~[?:?]
        at org.opendaylight.restconf.nb.rfc8040.rests.services.impl.SubscribeToStreamUtil.subscribeToDataStream(SubscribeToStreamUtil.java:201) ~[?:?]
        at org.opendaylight.restconf.nb.rfc8040.rests.services.impl.RestconfStreamsSubscriptionServiceImpl.subscribeToStream(RestconfStreamsSubscriptionServiceImpl.java:104) ~[?:?]
        at org.opendaylight.restconf.nb.rfc8040.services.wrapper.ServicesWrapper.subscribeToStream(ServicesWrapper.java:164) ~[?:?]


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