[OPNFLWPLUG-599] He: FlowCapableInventoryProvider thread dies Created: 20/Jan/16 Updated: 27/Sep/21 Resolved: 23/Mar/16 |
|
| Status: | Resolved |
| Project: | OpenFlowPlugin |
| Component/s: | General |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | ||
| Reporter: | Guy Sela | Assignee: | Bhalaji Narayanan |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
Operating System: Linux |
||
| Attachments: |
|
| External issue ID: | 5020 |
| Description |
|
The thread that polls from the queue (Named “FlowCapableInventoryProvider”) died at our system, because of an exception in one of the handlers. The Exception that made the thread die: ] but data identifier is ImmutableMapEntryNode{nodeIdentifier=(urn:opendaylight:inventory?revision=2013-08-19)node-connector[ {(urn:opendaylight:inventory?revision=2013-08-19)id=3}], value=[ImmutableLeafNode{nodeIdentifier=(urn:opendaylight:inventory?revision=2013-08-19)id, value=3, attributes={}}], attributes={}} This caused deadlocks in the system, because inventory change operations are now stuck. This is the thread that polls from the Notifications Queue, it is stuck because the FlowCapableInventoryProvider is dead:
So the Notifications Queue is full, and then we can’t put new Notifications: |
| Comments |
| Comment by Robert Varga [ 24/Jan/16 ] |
|
The first exceptions points to a coding bug, incorrect data is being stored – the identifier where we store the data does not match the data item itself. I think that makes it a release blocker. |
| Comment by Abhijit Kumbhare [ 25/Jan/16 ] |
|
Guy, Is this reproducible or did it happen once? Are there steps to reproduce the bug? Abhijit |
| Comment by Matanel Deutsch [ 25/Jan/16 ] |
|
Hi augment "/inv:node-connector-updated" { ext:augment-identifier "new-node-connector-updated"; description "port status updated notification."; uses some-grouping; }
generate java class from this YANG and use it in a notification service(NotificationProviderService) with publish method. |
| Comment by Trung Quang Nguyen [ 10/Feb/16 ] |
|
This is a new update for Updated FlowCapableInventoryProvider class. Two changes on is run() and one in submitOperations() |
| Comment by Trung Quang Nguyen [ 10/Feb/16 ] |
|
Attachment FlowCapableInventoryProvider.java has been added with description: Updated FlowCapableInventoryProvider class |
| Comment by Trung Quang Nguyen [ 10/Feb/16 ] |
|
This FlowCapableInventoryProvider thread actually poses two bugs. The first bug is about memory leak. If you run SDN application to install some rules or flows on a Openflow-supporting switch, through the time it will consume heap memory up. The reason for the bug is that in the infinite loop for(; The second bug is about the mismatch of instance indentifiers. In the submitOperations function, and in the catch block a retry of summiting transaction is conducted but without any try-catch block to prevent the exception happen again because we still have mismatch error. In order to fix that, we need to add another try-catch block again to handle the exception in order to prevent the FlowCapableInventoryProvider thread from crashing. |
| Comment by Shuva Jyoti Kar [ 11/Feb/16 ] |
| Comment by Anil Vishnoi [ 11/Feb/16 ] |
|
shuva, looks like this patch is abandoned, is there any other patch that you pushed? |
| Comment by Abhijit Kumbhare [ 11/Feb/16 ] |
|
Patch in stable/beryllium: |
| Comment by Abhijit Kumbhare [ 11/Feb/16 ] |
|
Patch in master: |
| Comment by Trung Quang Nguyen [ 12/Feb/16 ] |
|
So the memory leak bug is neglected in your patch or is it out of scope of the bug? The memory leak bug is even more crucial because in my case when I've fixed it I haven't seen FlowCapaleInventoryProvider thread dies again |