Skip to content

[DP-104] spawn without hearbeats #197

Open
@qnikst

Description

@qnikst

[Imported from JIRA. Reported by Facundo Dominguez @facundominguez) as DP-104 on 2015-02-24 11:57:14]
by Facundo Dominguez at https://cloud-haskell.atlassian.net/browse/DP-104:

It looks like n-t-tcp does not implement heartbeats, nor does the n-t documentation ask for that. Yet, spawn seems to rely on monitoring to learn of disconnections.

spawn uses delay, which won't run the spawned process unless it gets either a monitor notification or an ack from the caller. On the other hand, the caller can complete the call to spawn before the ack to delay arrives. If a disconnection occurs at this point, the spawned process will block indefinitely.

A simple fix is to stop using delay, and ask the user to take extra precautions if the spawned action is killing the remote node.

A simple workaround is to have the user use spawnAsync directly.


If call starts using cpDelayed as proposed in #183, the spawned process could block indefinitely if there is a disconnection. The call to call would not complete, but there wouldn't be a way to interrupt it while avoiding leaking the spawned process.

A fix for this could be to give up monitoring the spawned process and avoid using cpDelayed.

Thoughts?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions