watchtower/wtdb: start populating channel max commitment
In this commit, a new key, cChanMaxCommitmentHeight, is added to the channel details bucket. This key will hold the highest commitment number that the tower has been handed for this channel. In this commit, we start writing to it in the two places where a backup is first persisted in the tower client db: 1) CommitUpdate and 2) in the Queue's `addItem` method. The logic for both 1 & 2 is tested in the next commit which adds a DB helper that allows us to read the new field. A follow up commit will do a migration to back-fill the new field.
This commit is contained in:
2 files changed
+80
-2
No files matched your search
@@ -80,6 +80,7 @@ type DiskQueueDB[T Serializable] struct {
|
||||
db kvdb.Backend
|
||||
topLevelBkt []byte
|
||||
constructor func() T
|
||||
onItemWrite func(tx kvdb.RwTx, item T) error
|
||||
}
|
||||
|
||||
// A compile-time check to ensure that DiskQueueDB implements the Queue
|
||||
@@ -89,12 +90,14 @@ var _ Queue[Serializable] = (*DiskQueueDB[Serializable])(nil)
|
||||
// NewQueueDB constructs a new DiskQueueDB. A queueBktName must be provided so
|
||||
// that the DiskQueueDB can create its own namespace in the bolt db.
|
||||
func NewQueueDB[T Serializable](db kvdb.Backend, queueBktName []byte,
|
||||
constructor func() T) Queue[T] {
|
||||
constructor func() T,
|
||||
onItemWrite func(tx kvdb.RwTx, item T) error) Queue[T] {
|
||||
|
||||
return &DiskQueueDB[T]{
|
||||
db: db,
|
||||
topLevelBkt: queueBktName,
|
||||
constructor: constructor,
|
||||
onItemWrite: onItemWrite,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -279,6 +282,13 @@ func (d *DiskQueueDB[T]) addItem(tx kvdb.RwTx, queueName []byte, item T) error {
|
||||
return err
|
||||
}
|
||||
|
||||
if d.onItemWrite != nil {
|
||||
err = d.onItemWrite(tx, item)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// Find the index to use for placing this new item at the back of the
|
||||
// queue.
|
||||
var nextIndex uint64
|
||||
|
||||
Reference in new issue
Block a user