contractcourt/channel_arbitrator: add missing return on resolver exit
This commit adds a missing return to the resolveContract method, that will ensure the goroutine exits if the ChannelArbitrator shuts down. This fixes a potential deadlock during the integration tests. We also promote some of the logs to Debug from Trace.
This commit is contained in:
parent
25d56eda6f
commit
c5169a79f5
@ -1162,11 +1162,14 @@ func (c *ChannelArbitrator) resolveContract(currentContract ContractResolver) {
|
|||||||
// Until the contract is fully resolved, we'll continue to iteratively
|
// Until the contract is fully resolved, we'll continue to iteratively
|
||||||
// resolve the contract one step at a time.
|
// resolve the contract one step at a time.
|
||||||
for !currentContract.IsResolved() {
|
for !currentContract.IsResolved() {
|
||||||
|
log.Debugf("ChannelArbitrator(%v): contract %T not yet resolved",
|
||||||
|
c.cfg.ChanPoint, currentContract)
|
||||||
|
|
||||||
select {
|
select {
|
||||||
|
|
||||||
// If we've been signalled to quit, then we'll exit early.
|
// If we've been signalled to quit, then we'll exit early.
|
||||||
case <-c.quit:
|
case <-c.quit:
|
||||||
|
return
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// Otherwise, we'll attempt to resolve the current
|
// Otherwise, we'll attempt to resolve the current
|
||||||
@ -1174,7 +1177,8 @@ func (c *ChannelArbitrator) resolveContract(currentContract ContractResolver) {
|
|||||||
nextContract, err := currentContract.Resolve()
|
nextContract, err := currentContract.Resolve()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("ChannelArbitrator(%v): unable to "+
|
log.Errorf("ChannelArbitrator(%v): unable to "+
|
||||||
"progress resolver: %v", c.cfg.ChanPoint, err)
|
"progress resolver: %v",
|
||||||
|
c.cfg.ChanPoint, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1185,7 +1189,7 @@ func (c *ChannelArbitrator) resolveContract(currentContract ContractResolver) {
|
|||||||
// within our logs: the new contract will take the
|
// within our logs: the new contract will take the
|
||||||
// place of the old one.
|
// place of the old one.
|
||||||
case nextContract != nil:
|
case nextContract != nil:
|
||||||
log.Tracef("ChannelArbitrator(%v): swapping "+
|
log.Debugf("ChannelArbitrator(%v): swapping "+
|
||||||
"out contract %T for %T ",
|
"out contract %T for %T ",
|
||||||
c.cfg.ChanPoint, currentContract,
|
c.cfg.ChanPoint, currentContract,
|
||||||
nextContract)
|
nextContract)
|
||||||
@ -1206,7 +1210,7 @@ func (c *ChannelArbitrator) resolveContract(currentContract ContractResolver) {
|
|||||||
// If this contract is actually fully resolved, then
|
// If this contract is actually fully resolved, then
|
||||||
// we'll mark it as such within the database.
|
// we'll mark it as such within the database.
|
||||||
case currentContract.IsResolved():
|
case currentContract.IsResolved():
|
||||||
log.Tracef("ChannelArbitrator(%v): marking "+
|
log.Debugf("ChannelArbitrator(%v): marking "+
|
||||||
"contract %T fully resolved",
|
"contract %T fully resolved",
|
||||||
c.cfg.ChanPoint, currentContract)
|
c.cfg.ChanPoint, currentContract)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user