Hello,

Continued with other queries and provided information inline. 

Regards,
Sunil

-----Original Message-----
From: Robert Varga [mailto:[email protected]] 
Sent: Tuesday, December 05, 2017 6:10 AM
To: Sunil Kumar G <[email protected]>; 
[email protected]; [email protected]
Subject: Re: [yangtools-dev] Regarding ModifiedNodeDoesNotExistException

On 01/12/17 15:02, Sunil Kumar G wrote:
> Hi,

Hello Sunil,

+openflowplugin-dev, as this relates to OFP.

> I am OFP project dev and was debugging an issue where we were hitting 
> ModifiedNodeDoesNotExistException in 
> AbstractNodeContainerModificationStrategy.java method
> checkTouchApplicable() throws this exception.

Full exception trace (including chained exceptions) is required to show proper 
context.
[Sunil] you can refer this link : 
https://logs.opendaylight.org/releng/jenkins092/netvirt-csit-1node-openstack-ocata-gate-stateful-nitrogen/122/odl1_karaf.log.gz
 to get the context.  This is CSIT run on Nitrogen. 

> Scenario is application is writing group to device directly using OFP 
> RPC's by passing config datastore. During statistic collection, this 
> exception occurs.

You do not mention software version, is this reproducible in Oxygen?
Which branches/configurations are affected?
[Sunil] My bad, sorry for that. This is seen in carbon and nitrogen currently. 

> 
> My guess is in  method checkTouchApplicable() checks for
> modification.getOrginal().isPresent() and cureent.isPresent(), which 
> is an AND check failure of which exception is thrown
> 
>  
> 
> Can you please enlighten me on what exactly happens in this AND check.
> 
> What if the group/flow that is being referred at this moment is not 
> present in config datastore?
> 
> Why is the operation being set to TOUCH, in which situation will this 
> happen ?

TOUCH indicates tree traversal with the intent to modify a subtree. A parent 
node of that subtree was observed to be present in the transaction, but was 
found to be missing in current tree when the transaction was being committed.

InMemoryDataTree is an MVCC data structure and you are facing a 
version/liveness mismatch, hence the changes in the transaction cannot be 
safely merged with modifications that occurred concurrently with the current 
transaction.

This is not a fault in yangtools, InMemoryDataTree is just doing its job, 
AFAICT.
[Sunil] My question was more from understanding the code flow, can I know what 
"current tree" refers to from your statement. 

Regards,
Robert

_______________________________________________
openflowplugin-dev mailing list
[email protected]
https://lists.opendaylight.org/mailman/listinfo/openflowplugin-dev

Reply via email to