[
https://issues.apache.org/jira/browse/MESOS-8576?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16375252#comment-16375252
]
Greg Mann commented on MESOS-8576:
----------------------------------
Still working on this one. The problem is that {{Docker::inspect()}} has retry
logic embedded within the library function, since we often call it before a
container has started running in order to detect that the container is up. So,
to avoid repeatedly registering {{onDiscard}} callbacks with every retry (which
would constitute a memory leak), we need to pass the "context" of the current
{{docker inspect}} call through the async call chain, and also make it
accessible to the {{onDiscard}} callback which we install onto the returned
future. Since the Docker library is not currently a libprocess actor, this is a
bit difficult.
WIP patch here: https://reviews.apache.org/r/65683/
> Improve discard handling of 'Docker::inspect()'
> -----------------------------------------------
>
> Key: MESOS-8576
> URL: https://issues.apache.org/jira/browse/MESOS-8576
> Project: Mesos
> Issue Type: Improvement
> Components: containerization, docker
> Affects Versions: 1.5.0
> Reporter: Greg Mann
> Assignee: Greg Mann
> Priority: Major
> Labels: mesosphere
>
> In the call path of {{Docker::inspect()}}, each continuation currently checks
> if {{promise->future().hasDiscard()}}, where the {{promise}} is associated
> with the output of the {{docker inspect}} call. However, if the call to
> {{docker inspect}} becomes hung indefinitely, then continuations are never
> invoked, and a subsequent discard of the returned {{Future}} will have no
> effect. We should add proper {{onDiscard}} handling to that {{Future}} so
> that appropriate cleanup is performed in such cases.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)