Merge pull request #1382 from mrjana/overlay

Fix spurious overlay errors
This commit is contained in:
Madhu Venugopal 2016-08-11 11:38:57 +05:30 committed by GitHub
commit f77a0c9f54
3 changed files with 25 additions and 4 deletions

View File

@ -468,7 +468,10 @@ func (n *network) addDriverWatches() {
}
c.agent.networkDB.WalkTable(tableName, func(nid, key string, value []byte) bool {
d.EventNotify(driverapi.Create, n.ID(), tableName, key, value)
if nid == n.ID() {
d.EventNotify(driverapi.Create, nid, tableName, key, value)
}
return false
})
}

View File

@ -637,6 +637,10 @@ func (n *network) watchMiss(nlSock *nl.NetlinkSocket) {
continue
}
if !n.driver.isSerfAlive() {
continue
}
mac, IPmask, vtep, err := n.driver.resolvePeer(n.id, neigh.IP)
if err != nil {
logrus.Errorf("could not resolve peer %q: %v", neigh.IP, err)

View File

@ -168,14 +168,14 @@ func (d *driver) peerDbAdd(nid, eid string, peerIP net.IP, peerIPMask net.IPMask
}
func (d *driver) peerDbDelete(nid, eid string, peerIP net.IP, peerIPMask net.IPMask,
peerMac net.HardwareAddr, vtep net.IP) {
peerMac net.HardwareAddr, vtep net.IP) bool {
peerDbWg.Wait()
d.peerDb.Lock()
pMap, ok := d.peerDb.mp[nid]
if !ok {
d.peerDb.Unlock()
return
return false
}
d.peerDb.Unlock()
@ -185,8 +185,20 @@ func (d *driver) peerDbDelete(nid, eid string, peerIP net.IP, peerIPMask net.IPM
}
pMap.Lock()
if pEntry, ok := pMap.mp[pKey.String()]; ok {
// Mismatched endpoint ID(possibly outdated). Do not
// delete peerdb
if pEntry.eid != eid {
pMap.Unlock()
return false
}
}
delete(pMap.mp, pKey.String())
pMap.Unlock()
return true
}
func (d *driver) peerDbUpdateSandbox(nid string) {
@ -301,7 +313,9 @@ func (d *driver) peerDelete(nid, eid string, peerIP net.IP, peerIPMask net.IPMas
}
if updateDb {
d.peerDbDelete(nid, eid, peerIP, peerIPMask, peerMac, vtep)
if !d.peerDbDelete(nid, eid, peerIP, peerIPMask, peerMac, vtep) {
return nil
}
}
n := d.network(nid)