[NETCONF-800] Incorrect parsing of stream name Created: 10/Aug/21  Updated: 11/Aug/21  Resolved: 11/Aug/21

Status: Resolved
Project: netconf
Component/s: restconf-nb
Affects Version/s: 1.13.3
Fix Version/s: 1.13.4

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

Issue Links:
Relates
relates to NETCONF-726 Streams should be identified uniquely Resolved

 Description   

We have a regression in CSIT detected here:

https://logs.opendaylight.org/releng/vex-yul-odl-jenkins-1/netconf-csit-1node-userfeatures-rfc8040-all-silicon/301/robot-plugin/log.html.gz#s1-s6-s1-t2-k3

and reports:

14:03:52.702       INFO       GET Response : url=http://10.30.171.179:8181/rests/data/ietf-restconf-monitoring:restconf-state/streams/stream/data-change-event-subscription/opendaylight-inventory:nodes/datastore=CONFIGURATION/scope=BASE 
 status=400, reason=Bad Request 
 body=<errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf"><error><error-tag>malformed-message</error-tag><error-type>protocol</error-type><error-message>Could not parse Instance Identifier 'ietf-restconf-monitoring:restconf-state/streams/stream=opendaylight-inventory:nodes'. Offset: '77' : Reason: Identifier must start with '/'.</error-message></error></errors> 

14:03:52.702       INFO       ${resp} = <Response [400]>

This was already fixed in 2.0.0 through https://git.opendaylight.org/gerrit/c/netconf/+/96268 .



 Comments   
Comment by Robert Varga [ 10/Aug/21 ]

This might be have been fixed on Al by https://git.opendaylight.org/gerrit/c/netconf/+/96394 which is not present in 1.13.x

Comment by Robert Varga [ 11/Aug/21 ]

The call stack of the failure looks like this:

Thread [qtp1857409581-349] (Suspended (exception RestconfDocumentedException))	
	RestconfDocumentedException.throwIf(boolean, RestconfError$ErrorType, RestconfError$ErrorTag, String, Object...) line: 194	
	YangInstanceIdentifierDeserializer.checkValid(boolean, RestconfError$ErrorTag, String, Object...) line: 286	
	YangInstanceIdentifierDeserializer.validArg() line: 320	
	YangInstanceIdentifierDeserializer.parse() line: 94	
	YangInstanceIdentifierDeserializer.create(EffectiveModelContext, String) line: 87	
	IdentifierCodec.deserialize(String, EffectiveModelContext) line: 33	
	SubscribeToStreamUtil.writeDataToDS(EffectiveModelContext, String, DOMDataTreeReadWriteTransaction, MapEntryNode) line: 230	
	SubscribeToStreamUtil$ServerSentEvents(SubscribeToStreamUtil).subscribeToDataStream(String, UriInfo, RestconfStreamsSubscriptionServiceImpl$NotificationQueryParams, RestconfStreamsSubscriptionServiceImpl$HandlersHolder) line: 220	
	RestconfStreamsSubscriptionServiceImpl.subscribeToStream(String, UriInfo) line: 104	
	ServicesWrapper.subscribeToStream(String, UriInfo) line: 164	
	NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]	

the problem is that the parser does not like the ":nodes" part.

Comment by Robert Varga [ 11/Aug/21 ]

This patch was the fix, hence forward-ported it to 1.13.x.

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