Bug 7272: Fix prefix removal in MultiTableMapCache 50/49050/2
authorLorand Jakab <lojakab@cisco.com>
Tue, 6 Dec 2016 18:22:13 +0000 (20:22 +0200)
committerLorand Jakab <lojakab@cisco.com>
Tue, 6 Dec 2016 19:16:00 +0000 (21:16 +0200)
This fix is a bit of a brute-force, since it removes authentication keys
and all data, when removing a mapping, but for the MultiTableMapCache in
lispflowmapping as-is currently it is OK, since authentication keys are
stored in SimpleMapCache. So this is just a band-aid for the particular
use case reported in the bug, but a proper fix will require more
changes, which need to be discussed.

Change-Id: I295d2921f6b81505271887fbde2078ec38dbca0d
Signed-off-by: Lorand Jakab <lojakab@cisco.com>
mappingservice/mapcache/src/main/java/org/opendaylight/lispflowmapping/mapcache/MultiTableMapCache.java
mappingservice/mapcache/src/test/java/org/opendaylight/lispflowmapping/mapcache/MultiTableMapCacheTest.java

index e2489deccda190f70a91ce91be36df795b250fe9..eee73855ea26ee60a7d0892d65ea1726682a668a 100644 (file)
@@ -158,14 +158,10 @@ public class MultiTableMapCache implements IMapCache {
         if (key.getAddress() instanceof SourceDestKey) {
             ILispDAO db = getSDInnerDao(key, table);
             if (db != null) {
-                db.removeSpecific(SourceDestKeyHelper.getSrcBinary(key),
-                        SubKeys.RECORD);
-                db.removeSpecific(SourceDestKeyHelper.getSrcBinary(key),
-                        SubKeys.REGDATE);
+                db.remove(SourceDestKeyHelper.getSrcBinary(key));
             }
         } else {
-            table.removeSpecific(key, SubKeys.RECORD);
-            table.removeSpecific(key, SubKeys.REGDATE);
+            table.remove(key);
         }
     }
 
index 3fad6a1777521e822129d67c8ff29eb8aca89b46..22cee3399266c7ba07a37842d77b516e9365449b 100644 (file)
@@ -192,10 +192,7 @@ public class MultiTableMapCacheTest {
                 .getDstBinary(NORMALIZED_SRCDST_EID), SubKeys.LCAF_SRCDST)).thenReturn(dbMock);
 
         multiTableMapCache.removeMapping(EID_SOURCE_DEST_KEY_TYPE, true);
-        verify(dbMock).removeSpecific(SourceDestKeyHelper.getSrcBinary(NORMALIZED_SRCDST_EID),
-                SubKeys.RECORD);
-        verify(dbMock).removeSpecific(SourceDestKeyHelper.getSrcBinary(NORMALIZED_SRCDST_EID),
-                SubKeys.REGDATE);
+        verify(dbMock).remove(SourceDestKeyHelper.getSrcBinary(NORMALIZED_SRCDST_EID));
     }
 
     /**
@@ -207,8 +204,7 @@ public class MultiTableMapCacheTest {
         when(daoMock.getSpecific(VNI, SubKeys.VNI)).thenReturn(tableDaoMock);
 
         multiTableMapCache.removeMapping(EID_TEST, true);
-        verify(tableDaoMock).removeSpecific(NORMALIZED_EID, SubKeys.RECORD);
-        verify(tableDaoMock).removeSpecific(NORMALIZED_EID, SubKeys.REGDATE);
+        verify(tableDaoMock).remove(NORMALIZED_EID);
     }
 
     /**