Lifetime reference not released when DBTable is empty
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Juniper Openstack | Status tracked in Trunk | |||||
R2.0 |
Fix Committed
|
High
|
Praveen | |||
R2.1 |
Fix Committed
|
High
|
Praveen | |||
Trunk |
Fix Committed
|
High
|
Praveen |
Bug Description
In Agent, each VrfEntry creates multiple route db-tables - ipv4 unicast db-table, ipv6 unicast db-table, evpn db-table, ipv6 unicast db-table. Each of the route db-table holds a lifetime actor reference to VrfEntry so that VrfEntry is not freed till db-table is deleted.
The route db-table will be deleted and reference released on following conditions -
1. db-table becomes empty
2. There are no more listeners to the dbtable.
The route db-tables rely on invocation to DBTable:
DBTable infrastructure code invokes DBTable:
Due to following sequence of events, the lifetime reference is not deleted
1. DBTable has listener and only one DBEntry
2. The DBEntry is deleted
3. The RetryDelete() callback is invoked. But, the lifetime reference is not deleted since the listener is still present
4. DBTable listener is unregistered
The DBTable Infrastructure code does not invoke RetryDelete() when number of listeners becomes zero.
no longer affects: | juniperopenstack/r2.0 |
information type: | Proprietary → Public |
Review in progress for https:/ /review. opencontrail. org/8161
Submitter: Praveen K V (<email address hidden>)