Merge pull request #754 from joostjager/filter-leases
wtxmgr: filter out expired leases
This commit is contained in:
commit
aaf03fee73
2 changed files with 20 additions and 0 deletions
|
@ -1240,6 +1240,12 @@ func (s *Store) ListLockedOutputs(ns walletdb.ReadBucket) ([]*LockedOutput,
|
|||
var outputs []*LockedOutput
|
||||
err := forEachLockedOutput(
|
||||
ns, func(op wire.OutPoint, id LockID, expiration time.Time) {
|
||||
// Skip expired leases. They will be cleaned up with the
|
||||
// next call to DeleteExpiredLockedOutputs.
|
||||
if !s.clock.Now().Before(expiration) {
|
||||
return
|
||||
}
|
||||
|
||||
outputs = append(outputs, &LockedOutput{
|
||||
Outpoint: op,
|
||||
LockID: id,
|
||||
|
|
|
@ -2780,6 +2780,16 @@ func TestOutputLocks(t *testing.T) {
|
|||
// Let the output lock expired.
|
||||
s.clock.(*clock.TestClock).SetTime(expiry)
|
||||
|
||||
// Lock should not longer be listed.
|
||||
assertOutputLocksExist(t, s, ns)
|
||||
|
||||
// But the lock should still exist and active
|
||||
// when time is turned back.
|
||||
assertLocked(
|
||||
t, ns, confirmedOutPoint, time.Time{},
|
||||
true,
|
||||
)
|
||||
|
||||
// Delete all expired locked outputs. We should
|
||||
// no longer see any locked outputs.
|
||||
err = s.DeleteExpiredLockedOutputs(ns)
|
||||
|
@ -2788,6 +2798,10 @@ func TestOutputLocks(t *testing.T) {
|
|||
"locked outputs: %v", err)
|
||||
}
|
||||
assertOutputLocksExist(t, s, ns)
|
||||
assertLocked(
|
||||
t, ns, confirmedOutPoint, time.Time{},
|
||||
false,
|
||||
)
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue