[LISPMAP-136] Expired mapping removed from map-cache, not removed from MD-SAL Created: 25/Aug/16  Updated: 19/Oct/17  Resolved: 06/Sep/17

Status: Resolved
Project: lispflowmapping
Component/s: Service
Affects Version/s: Boron
Fix Version/s: None

Type: Bug
Reporter: Lori Jakab Assignee: Unassigned
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

Operating System: All
Platform: All


External issue ID: 6537
Priority: Normal

 Description   

When a southbound originated mapping lookup triggers the lazy removal of an expired mapping, said mapping is only removed from the map-cache, but not from the operational MD-SAL data-store.



 Comments   
Comment by Sheikh Shakib Ahmed [ 30/Aug/16 ]

I have gone through the mapRequest from Lisp Southbound services which ultimately calls getMapping(src, dst) and which calls getSbMappingWithExpiration(src, dst) which I think is the function being called to get a south bound mapping. If we look at the following piece of code,

private Object getSbMappingWithExpiration(Eid src, Eid dst) {
Object mappingObject = smc.getMapping(src, dst);
if (mappingObject instanceof MappingRecord) {
MappingRecord mapping = (MappingRecord) mappingObject;
if (MappingMergeUtil.mappingIsExpired(mapping))

{ dsbe.removeMapping(DSBEInputUtil.toMapping(MappingOrigin.Southbound, mapping.getEid(), new SiteId(mapping.getSiteId()), mapping)); return null; }

}
return mappingObject;
}

This actually deletes the mapping from Data Store Back End but not from the map cache itself.

Comment by Vina Ermagan [ 01/Sep/16 ]

Thi sis actually reversed: Mapping is removed from MD-SAL, but not from the local map-cache, and also not from other cluster nodes' map caches.

Comment by Vina Ermagan [ 06/Sep/16 ]

Fix: https://git.opendaylight.org/gerrit/#/c/45121/ Pending review

Comment by Lori Jakab [ 06/Sep/16 ]

No, the bug description is correct. The mapping is removed from the map-cache inside SimpleMapCache#getMappingLpmEid, on lines 177-178. However, 'MappingMergeUtil.mappingIsExpired(mapping)' no longer works, since we removed the timestamp from MappingRecord, so 'dsbe.removeMapping()' is not invoked.

I have a different approach in mind, which will help with LISPMAP-127 too. We can discuss offline more details.

Comment by Sheikh Shakib Ahmed [ 06/Sep/16 ]

I have taken a deep look and Lori is right. I also have a solution in my thought and will love to discuss it with you. Please let me know when you are free.

Comment by Lori Jakab [ 12/Aug/17 ]

Old bug, need to see if it is still valid.

Comment by Lori Jakab [ 06/Sep/17 ]

Fixed by the time bucket patch series, verified manually.

Generated at Wed Feb 07 20:06:35 UTC 2024 using Jira 8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d.