[ https://issues.apache.org/jira/browse/MESOS-9277?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16640182#comment-16640182 ]
Benjamin Mahler edited comment on MESOS-9277 at 10/5/18 8:50 PM: ----------------------------------------------------------------- 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, if we're talking about calls made on different sockets. was (Author: bmahler): 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)