Skip to content

Spurious Forwarding Failures in Async Monitor Update Clients #661

Closed
@TheBlueMatt

Description

@TheBlueMatt

We use Channel::is_live() for a few things that imply "should we consider this channel available for forwarding HTLCs and sending payments", which is great, except it implies races for clients which use async monitor updates. Such clients will always return a TemporaryFailure on monitor updates, leaving the channel in ChannelState::MonitorUpdateFailed until the monitor updates completes. This implies !is_live() which means such clients will refuse to send or forward HTLCs during monitor updates, which they likely should not. The likely fix would be to only !is_live() a channel if the monitor updating has been running for some time without completion, but this probably has implications for the channel state machine around placing such HTLCs in the holding cell in a new case.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions