[
https://issues.apache.org/jira/browse/MESOS-9258?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16673558#comment-16673558
]
Joseph Wu commented on MESOS-9258:
----------------------------------
After some more investigation, requiring two-way streaming will not work for
browsers (i.e. the WebUI) because two-way streaming requires websockets. And
the load balancers that do not close connections (i.e. Elastic LB) do not
support websockets.
Now, we are considering two other workarounds:
1) Creating a separate {{HEARTBEAT}} API call and having the {{SUBSCRIBE}}
return a stream ID. This has the downside of requiring (sometimes) significant
client-side changes as they would need to parse an additional message type,
maintain state, and keep a separate thread for heartbeating. This might also
be harder to justify in a backport (if necessary)
2) Adding an optional field to the {{SUBSCRIBE}} call which lets the client set
the maximum lifetime of a connection. The master would unilaterally close the
connection after the specified duration. This change would require the client
to have retry/reconnect logic (which would be expected anyway).
> Consider making Mesos subscribers send heartbeats
> -------------------------------------------------
>
> Key: MESOS-9258
> URL: https://issues.apache.org/jira/browse/MESOS-9258
> Project: Mesos
> Issue Type: Improvement
> Components: HTTP API
> Reporter: Gastón Kleiman
> Assignee: Joseph Wu
> Priority: Critical
> Labels: mesosphere
>
> Some reverse proxies (e.g., ELB using an HTTP listener) won't close the
> upstream connection to Mesos when they detect that their client is
> disconnected.
> This can make Mesos leak subscribers, which generates unnecessary
> authorization requests and affects performance.
> We should evaluate methods (e.g., heartbeats) to enable Mesos to detect that
> a subscriber is gone, even if the TCP connection is still open.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)