[CONTROLLER-1760] Tooling to find the real root cause culprit of memory leaks related to non-closed transactions (and tx chains) Created: 28/Aug/17 Updated: 15/Nov/17 Resolved: 04/Sep/17 |
|
| Status: | Resolved |
| Project: | controller |
| Component/s: | mdsal |
| Affects Version/s: | Carbon |
| Fix Version/s: | None |
| Type: | Improvement | ||
| Reporter: | Michael Vorburger | Assignee: | Unassigned |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
Operating System: All |
||
| Issue Links: |
|
||||||||||||||||||||||||
| Description |
|
Originally, I thought that one can find this in HPROF heap dumps, but thinking this through further after Tom's reply on https://lists.opendaylight.org/pipermail/mdsal-dev/2017-August/001323.html and a comment from Robert on IRC, I realized that of course you actually cannot - the "left over" (non closed) transactions piling up on the heap obviously don't have any trace anymore to where they where originally created - thus where the origin of the leak is, that must be bug fixed, is "lost", at that point. It turns out that the mdsal-trace feature in controller already has a useful basis for such a feature (which is a debug utility, not something we would want in production), and I've started to work on this in:
As this currently stand, there's a chance (hope) that |
| Comments |
| Comment by Michael Vorburger [ 29/Aug/17 ] |
|
> I've started to work on this in: |
| Comment by Michael Vorburger [ 29/Aug/17 ] |
|
hello, world - so is this KEWL, or WHAT... check out the output below from this new trace:transactions topic:bug/9060 tool! So I can find 5 opendaylight-user@root>trace:transactions DataBroker : newReadOnlyTransaction() ==> DataBroker : createTransactionChain() ==> 1x TransactionChains opened but not closed: ==> 1x TransactionChains opened but not closed: ==> 1x TransactionChains opened but not closed: ==> |
| Comment by Michael Vorburger [ 31/Aug/17 ] |
|
Status update: This tool is now available in master. https://git.opendaylight.org/gerrit/#/c/62403/ would be great to have in netvirt master to make it much easier to use e.g. by QA folks (and in order to be able to start talking about integrating it into CSIT, which would be VERY cool). Next step: I'll now start looking at the feasibility of back patching this stuff from master to stable/carbon, so that we can run it on internal QA environments under load - and use this to help us find the real culprit of |
| Comment by Michael Vorburger [ 31/Aug/17 ] |
|
> have this used e.g. in a CSIT ==> NETVIRT-878 |
| Comment by Michael Vorburger [ 31/Aug/17 ] |
|
I've just (minutes ago) been able to merge the back-patch of new https://bugs.opendaylight.org/show_bug.cgi?id=9060 tooling from master into the upstream stable/carbon branch, and with that consider this issue fully done from my side. We'll be dealing with enhancements in new issues, such as |
| Comment by Michael Vorburger [ 15/Nov/17 ] |
|
http://blog2.vorburger.ch/2017/09/how-to-find-transaction-related-memory.html |