consul: Adding PendingExpiration

This commit is contained in:
Armon Dadgar 2014-12-15 14:22:32 -08:00
parent 10604a6fa8
commit 3bcf957d95
2 changed files with 23 additions and 0 deletions

View File

@ -102,6 +102,13 @@ func (t *TombstoneGC) Hint(index uint64) {
} }
} }
// PendingExpiration is used to check if any expirations are pending
func (t *TombstoneGC) PendingExpiration() bool {
t.expiresLock.Lock()
defer t.expiresLock.Unlock()
return len(t.expires) > 0
}
// nextExpires is used to calculate the next experation time // nextExpires is used to calculate the next experation time
func (t *TombstoneGC) nextExpires() time.Time { func (t *TombstoneGC) nextExpires() time.Time {
expires := time.Now().Add(t.ttl) expires := time.Now().Add(t.ttl)

View File

@ -30,6 +30,10 @@ func TestTombstoneGC(t *testing.T) {
t.Fatalf("should fail") t.Fatalf("should fail")
} }
if gc.PendingExpiration() {
t.Fatalf("should not be pending")
}
start := time.Now() start := time.Now()
gc.Hint(100) gc.Hint(100)
@ -38,6 +42,10 @@ func TestTombstoneGC(t *testing.T) {
gc.Hint(120) gc.Hint(120)
gc.Hint(125) gc.Hint(125)
if !gc.PendingExpiration() {
t.Fatalf("should be pending")
}
select { select {
case index := <-gc.ExpireCh(): case index := <-gc.ExpireCh():
end := time.Now() end := time.Now()
@ -75,9 +83,17 @@ func TestTombstoneGC_Expire(t *testing.T) {
t.Fatalf("should fail") t.Fatalf("should fail")
} }
if gc.PendingExpiration() {
t.Fatalf("should not be pending")
}
gc.Hint(100) gc.Hint(100)
gc.Reset() gc.Reset()
if gc.PendingExpiration() {
t.Fatalf("should not be pending")
}
select { select {
case <-gc.ExpireCh(): case <-gc.ExpireCh():
t.Fatalf("shoudl be reset") t.Fatalf("shoudl be reset")