Browse Source

consul: Adding PendingExpiration

pull/577/head
Armon Dadgar 10 years ago
parent
commit
3bcf957d95
  1. 7
      consul/tombstone_gc.go
  2. 16
      consul/tombstone_gc_test.go

7
consul/tombstone_gc.go

@ -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
func (t *TombstoneGC) nextExpires() time.Time {
expires := time.Now().Add(t.ttl)

16
consul/tombstone_gc_test.go

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

Loading…
Cancel
Save