Skip to content

x/ref/runtime/internal/flow: message.Release can lead to deadlock for proxies. #286

@cosnicolaou

Description

@cosnicolaou

Sending message.Release messages is subject to flow control and when running through a proxy cannot be fragmented (as of PR vanadium/issues#61) which can lead to deadlock if the message is too big to be sent using the currently available flow control tokens. This is currently encountered in the RPC benchmark suite. However, the fragmentation is only required because of an unrelated bug in the implementation flow.Conn and flow.Flow whereby flow counters are not deleted when a flow is closed see #285. Regardless of how large the Release message is, it should not be subject to flow control to avoid the potential for deadlock. Note that even if the message is fragmented deadlock may arise if the tokens required to unblock the flow are specified in the portion of the message that is not sent (ie. in a second fragment).

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