From 1a4b38a10cdece531adcb67ae05243e0941dd627 Mon Sep 17 00:00:00 2001 From: Tom Wilkie Date: Mon, 20 Jul 2015 11:55:16 +0000 Subject: [PATCH] Don't delete all the non-tombstone entries every 10mins! --- nameserver/entry.go | 1 + nameserver/nameserver.go | 2 +- nameserver/nameserver_test.go | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/nameserver/entry.go b/nameserver/entry.go index d1c8f830..6d6ba08c 100644 --- a/nameserver/entry.go +++ b/nameserver/entry.go @@ -131,6 +131,7 @@ func (es *Entries) merge(incoming Entries) Entries { return newEntries } +// f returning true means keep the entry. func (es *Entries) tombstone(ourname router.PeerName, f func(*Entry) bool) Entries { es.checkAndPanic() defer es.checkAndPanic() diff --git a/nameserver/nameserver.go b/nameserver/nameserver.go index be4c4987..b56b1dfd 100644 --- a/nameserver/nameserver.go +++ b/nameserver/nameserver.go @@ -176,7 +176,7 @@ func (n *Nameserver) deleteTombstones() { defer n.Unlock() now := time.Now().Unix() n.entries.filter(func(e *Entry) bool { - return now-e.Tombstone <= int64(tombstoneTimeout/time.Second) + return e.Tombstone == 0 || now-e.Tombstone <= int64(tombstoneTimeout/time.Second) }) } diff --git a/nameserver/nameserver_test.go b/nameserver/nameserver_test.go index f0a71ba0..d8884959 100644 --- a/nameserver/nameserver_test.go +++ b/nameserver/nameserver_test.go @@ -230,6 +230,9 @@ func TestTombstoneDeletion(t *testing.T) { require.Nil(t, err) require.Equal(t, []address.Address{0}, nameserver.Lookup("hostname")) + nameserver.deleteTombstones() + require.Equal(t, []address.Address{0}, nameserver.Lookup("hostname")) + err = nameserver.Delete("hostname", "containerid", "", address.Address(0)) require.Nil(t, err) require.Equal(t, []address.Address{}, nameserver.Lookup("hostname"))