Lifetime reference not released when DBTable is empty

Bug #1429348 reported by Praveen
6
This bug affects 1 person
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::RetryDelete() to release the reference.

DBTable infrastructure code invokes DBTable::RetryDelete() when DBTablePartition is empty.

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.

Tags: vrouter
Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : R2.1

Review in progress for https://review.opencontrail.org/8161
Submitter: Praveen K V (<email address hidden>)

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : master

Review in progress for https://review.opencontrail.org/8167
Submitter: Praveen K V (<email address hidden>)

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : A change has been merged

Reviewed: https://review.opencontrail.org/8167
Committed: http://github.org/Juniper/contrail-controller/commit/0fe0c461668cd61afa88034f6852abde8ad8d3c1
Submitter: Zuul
Branch: master

commit 0fe0c461668cd61afa88034f6852abde8ad8d3c1
Author: Praveen K V <email address hidden>
Date: Sat Mar 7 13:30:07 2015 +0530

Invoke RetryDelete() on unregister of last listener

The lifetime actors for route db-tables will wait till number of entries
in dbtable is 0 and there are no listeners to the table.

DBTable infrastructure invokes RetryDelete() when a DBTablePartition
becomes empty. In addition, it should invoke RetryDelete() when all
db-table listeners are gone also.

The fix will invoke RetryDelete() when number of listeners becomes empty

Change-Id: I659a07bde0b790be08b5cafe1349c3c6b640d1ec
Closes-Bug: #1429348

Nischal Sheth (nsheth)
no longer affects: juniperopenstack/r2.0
Revision history for this message
OpenContrail Admin (ci-admin-f) wrote :

Reviewed: https://review.opencontrail.org/8161
Committed: http://github.org/Juniper/contrail-controller/commit/99df08e18c28c511dd2416e05cf23e775d61cad9
Submitter: Zuul
Branch: R2.1

commit 99df08e18c28c511dd2416e05cf23e775d61cad9
Author: Praveen K V <email address hidden>
Date: Sat Mar 7 13:30:07 2015 +0530

Invoke RetryDelete() on unregister of last listener

The lifetime actors for route db-tables will wait till number of entries
in dbtable is 0 and there are no listeners to the table.

DBTable infrastructure invokes RetryDelete() when a DBTablePartition
becomes empty. In addition, it should invoke RetryDelete() when all
db-table listeners are gone also.

The fix will invoke RetryDelete() when number of listeners becomes empty

Change-Id: I659a07bde0b790be08b5cafe1349c3c6b640d1ec
Closes-Bug: #1429348

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : [Review update] R2.0

Review in progress for https://review.opencontrail.org/11852
Submitter: Nischal Sheth (<email address hidden>)

Revision history for this message
OpenContrail Admin (ci-admin-f) wrote : A change has been merged

Reviewed: https://review.opencontrail.org/11852
Committed: http://github.org/Juniper/contrail-controller/commit/4c3a537ab998d02d33f4335aae0e5da89da22d5e
Submitter: Zuul
Branch: R2.0

commit 4c3a537ab998d02d33f4335aae0e5da89da22d5e
Author: Praveen K V <email address hidden>
Date: Sat Mar 7 13:30:07 2015 +0530

Invoke RetryDelete() on unregister of last listener

The lifetime actors for route db-tables will wait till number of entries
in dbtable is 0 and there are no listeners to the table.

DBTable infrastructure invokes RetryDelete() when a DBTablePartition
becomes empty. In addition, it should invoke RetryDelete() when all
db-table listeners are gone also.

The fix will invoke RetryDelete() when number of listeners becomes empty

Change-Id: I659a07bde0b790be08b5cafe1349c3c6b640d1ec
Closes-Bug: #1429348

information type: Proprietary → Public
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.