[CONTROLLER-1731] it provider: produce-transactions does not close itemProducer on success Created: 29/Jun/17 Updated: 25/Jul/23 Resolved: 12/Jul/17 |
|
| Status: | Resolved |
| Project: | controller |
| Component/s: | clustering |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | ||
| Reporter: | Vratko Polak | Assignee: | Vratko Polak |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
Operating System: All |
||
| External issue ID: | 8768 |
| Description |
|
This is similar to This leads [0] to the same "is attached to producer" error message. |
| Comments |
| Comment by Vratko Polak [ 29/Jun/17 ] |
|
Attempt [1] to fix. |
| Comment by Vratko Polak [ 30/Jun/17 ] |
|
Sandbox [2] shows this is not fixed enough. |
| Comment by Vratko Polak [ 03/Jul/17 ] |
|
This week Sandbox: [3]. [3] https://logs.opendaylight.org/sandbox/jenkins091/controller-csit-3node-clustering-li-only-carbon/1/log.html.gz#s1-s4-t1-k2-k25-k1-k8 |
| Comment by Vratko Polak [ 11/Jul/17 ] |
|
Looking at the code, I believe the thinko is not in transaction producers, but in ShardedDOMDataTree (the Mdsal one). Specifically, this change [5] of findProducer() implementation went from explicitly looking for producers registered for sub-trees of the "subtree" argument, to delegating to lookup(), which was later [6] documented to return producers registered at super-trees of the given prefix. I think we need to split findProducer, as both usages (making sure no sub-producer is claimed and finding the nearest super-producer) are valid. P.S.: What is the recommended language when talking about one node being within the subtree rooted at another node? [5] https://git.opendaylight.org/gerrit/#/c/26244/5/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTree.java |
| Comment by Robert Varga [ 11/Jul/17 ] |
|
Ad the PS, this maps to 'descendant' XPath axis, as defined in https://www.w3schools.com/xml/xpath_axes.asp. Hence "node A, which is part of the subtree rooted at node B" maps to "A is descendant of B". |
| Comment by Vratko Polak [ 12/Jul/17 ] |
|
Sandbox run with logging changes [7][8]. Robot failure: [9]. Big karaf.log: [10]. The first status change related to data producers is at 11:53:00,632, the initialization seems to end at 11:56:04,115. After the expected RequestTimeoutException, producer is being closed at 11:58:10,514: ]=org.opendaylight.mdsal.dom.spi.DOMDataTreePrefixTableEntry@71172d08, (tag:opendaylight.org,2017:controller:yang:lowlevel:target?revision=2017-02-15)id-int[ {(tag:opendaylight.org,2017:controller:yang:lowlevel:target?revision=2017-02-15)id=prefix-1}]=org.opendaylight.mdsal.dom.spi.DOMDataTreePrefixTableEntry@76e1e46b} When next producer on the same member is created: ] in entry org.opendaylight.mdsal.dom.spi.DOMDataTreePrefixTableEntry@6e6a640e ] stopped at (tag:opendaylight.org,2017:controller:yang:lowlevel:target?revision=2017-02-15)id-int[ {(tag:opendaylight.org,2017:controller:yang:lowlevel:target?revision=2017-02-15)id=prefix-3}] ]} is attached to producer null ] in entry org.opendaylight.mdsal.dom.spi.DOMDataTreePrefixTableEntry@7e9d594f 2017-07-11 11:58:31,266 | DEBUG | qtp138207402-77 | DOMDataTreePrefixTableEntry | 93 - org.opendaylight.mdsal.dom-spi - 2.2.1.SNAPSHOT | Lookup of /(tag:opendaylight.org,2017:controller:yang:lowlevel:target?revision=2017-02-15)id-ints/id-int/id-int[ {(tag:opendaylight.org,2017:controller:yang:lowlevel:target?revision=2017-02-15)id=prefix-3}] stopped at (tag:opendaylight.org,2017:controller:yang:lowlevel:target?revision=2017-02-15)id-int > "A is descendant of B" A is descendant-or-self of B. > we need to split findProducer I see Entry can contain AbstractObjectRegistration values, no only producers. So probably we need findAncestorOrSelfEntry (for a thing findProducer does today), findAncestorOrSelfProducer (to ask ancestor producer to request subtree producer creation) and findDescendantOrSelfProducer (in order to deny createProducer request). [7] https://git.opendaylight.org/gerrit/#/c/60187/1 |
| Comment by Vratko Polak [ 12/Jul/17 ] |
|
The original symptom is fixed, the additional symptom tracked as |