diff --git a/contractcourt/chain_watcher.go b/contractcourt/chain_watcher.go index 06665af29..f07b3e87b 100644 --- a/contractcourt/chain_watcher.go +++ b/contractcourt/chain_watcher.go @@ -131,6 +131,35 @@ func (c *CommitSet) toActiveHTLCSets() map[HtlcSetKey]htlcSet { return htlcSets } +// String return a human-readable representation of the CommitSet. +func (c *CommitSet) String() string { + if c == nil { + return "nil" + } + + // Create a descriptive string for the ConfCommitKey. + commitKey := "none" + c.ConfCommitKey.WhenSome(func(k HtlcSetKey) { + commitKey = k.String() + }) + + // Create a map to hold all the htlcs. + htlcSet := make(map[string]string) + for k, htlcs := range c.HtlcSets { + // Create a map for this particular set. + desc := make([]string, len(htlcs)) + for i, htlc := range htlcs { + desc[i] = fmt.Sprintf("%x", htlc.RHash) + } + + // Add the description to the set key. + htlcSet[k.String()] = fmt.Sprintf("count: %v, htlcs=%v", + len(htlcs), desc) + } + + return fmt.Sprintf("ConfCommitKey=%v, HtlcSets=%v", commitKey, htlcSet) +} + // ChainEventSubscription is a struct that houses a subscription to be notified // for any on-chain events related to a channel. There are three types of // possible on-chain events: a cooperative channel closure, a unilateral diff --git a/contractcourt/channel_arbitrator.go b/contractcourt/channel_arbitrator.go index cfefea457..f73769a10 100644 --- a/contractcourt/channel_arbitrator.go +++ b/contractcourt/channel_arbitrator.go @@ -947,9 +947,9 @@ func (c *ChannelArbitrator) stateStep( // If we're in the default state, then we'll check our set of actions // to see if while we were down, conditions have changed. case StateDefault: - log.Debugf("ChannelArbitrator(%v): new block (height=%v) "+ - "examining active HTLC's", c.cfg.ChanPoint, - triggerHeight) + log.Debugf("ChannelArbitrator(%v): examining active HTLCs in "+ + "block %v, confCommitSet: %v", c.cfg.ChanPoint, + triggerHeight, lnutils.LogClosure(confCommitSet.String)) // As a new block has been connected to the end of the main // chain, we'll check to see if we need to make any on-chain