[ 
https://issues.apache.org/jira/browse/MESOS-9277?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16640182#comment-16640182
 ] 

Benjamin Mahler commented on MESOS-9277:
----------------------------------------

Solution 1 sounds like the way to go to me, schedulers that expect operation 2 
to occur after operation 1 should send it after 1 is completed. Solution 2 has 
to be quite a bit more sophisticated to provide sequencing, since the calls are 
made on different sockets and we can read from them in any order.

> UNRESERVE scheduler call be dropped if it loses the race with TEARDOWN. 
> ------------------------------------------------------------------------
>
>                 Key: MESOS-9277
>                 URL: https://issues.apache.org/jira/browse/MESOS-9277
>             Project: Mesos
>          Issue Type: Bug
>          Components: scheduler api
>    Affects Versions: 1.5.1, 1.6.1, 1.7.0
>            Reporter: Alexander Rukletsov
>            Priority: Major
>              Labels: mesosphere, v1_api
>
> A typical use pattern for a framework scheduler is to remove its reservations 
> before tearing itself down. However, it is racy: {{UNRESERVE}} is a 
> multi-stage action which aborts if the framework is removed in-between.
> *Solution 1*
> Let schedulers use operation feedback and expect them to wait for an ack for 
> {{UNRESERVE}} before they send {{TEARDOWN}}. Kind of science fiction with a 
> timeline of {{O(months)}} and still possibilities for the race if a scheduler 
> does not comply.
> *Solution 2*
> Serialize calls for schedulers. For example, we can chain [handlers 
> here|https://github.com/apache/mesos/blob/6e21e94ddca5b776d44636fe3eba8500bf88dc25/src/master/http.cpp#L640-L711]
>  onto per-{{Master::Framework}} 
> [{{process::Sequence}}|https://github.com/apache/mesos/blob/6e21e94ddca5b776d44636fe3eba8500bf88dc25/3rdparty/libprocess/include/process/sequence.hpp].
>  For that however, handlers must provide futures indicating when the 
> processing of the call is finished, note that most [handlers 
> here|https://github.com/apache/mesos/blob/6e21e94ddca5b776d44636fe3eba8500bf88dc25/src/master/http.cpp#L640-L711]
>  return void.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to