Inverse offers have the same offer cycle as normal offers.  They can
be Accepted/Declined with a timeout (default 5 seconds).

On Fri, Mar 3, 2017 at 5:29 PM, Zameer Manji <zma...@apache.org> wrote:
> Ben,
>
> Thanks for responding to my questions. I have a follow up on #3.
>
> I have a framework which accepts inverse offers but does not do anything to
> the associated tasks. I noticed that the framework **does not** receive
> another inverse offer  within the allocation period. At what interval will
> an inverse offer be resent to the framework if it was accepted? I took a
> glance at `src/tests/master_maintenance_tests.cpp` and did not notice any
> tests testing for this.
>
> Are you sure that inverse offers are resent after they have been accepted
> but before the tasks are removed from the host?
>
>
> On Thu, Mar 2, 2017 at 4:14 PM, Benjamin Mahler <bmah...@apache.org> wrote:
>>
>> Hey Zameer, great questions. Let us know if there's anything you think
>> could be improved or documented better.
>>
>> Re 1:
>>
>> The 'Viewing maintenance status' section of the documentation should
>> clarify this:
>> http://mesos.apache.org/documentation/latest/maintenance/
>>
>> Re 2:
>>
>> Both of these sound reasonable but the scheduler should not accept the
>> maintenance if it's not yet safe for the machine to be downed. Otherwise a
>> task failure may be mistakenly interpreted as a go ahead to down the
>> machine, despite the scheduler needing to get the task back running. If
>> expensive or long running work needs to finish (e.g. migrate data, replace
>> instances in a manner that doesn't violate SLA, etc.) then I would suggest
>> waiting until the work completes safely before accepting.
>>
>> We likely need a third state like, TENTATIVELY_ACCEPT to signal to
>> operators / mesos that the framework intends to comply, but hasn't finished
>> whatever it needs to do yet for it to be safe to down the machine.
>>
>> Also, one of the challenges here is when to take the action. Should the
>> scheduler prepare itself for maintenance as soon as it safely can? Or as
>> late (but not too late!) as it safely can? If the scheduler runs
>> long-running services, as soon as safely possible makes sense. If the
>> scheduler runs short running batch jobs, as late as safely possible provides
>> work-conservation.
>>
>> Re 3:
>>
>> The framework will receive another inverse offer if the framework still
>> has resources allocated on that agent. If receiving a regular offer for
>> available resources on the agent, an 'Unavailability' [1] will be included
>> if the machine is scheduled for maintenance, so that the scheduler can be
>> aware of the maintenance when placing new work.
>>
>> Re 4:
>>
>> It's not possible currently, and it's the operator's responsibility (the
>> intention was for "operator" to be maintenance tooling). Ideally we can add
>> automation of this decision into mesos, if decision criteria that is widely
>> applicable can be established (e.g. if nothing is running and all relevant
>> frameworks have accepted). Feel free to file a ticket for this or any other
>> improvements!
>>
>> Ben
>>
>> [1]
>> https://github.com/apache/mesos/blob/8f487beb9f8aaed8f27b0404279b1a2f97672ba1/include/mesos/v1/mesos.proto#L1416-L1426
>>
>> On Wed, Mar 1, 2017 at 5:41 PM, Zameer Manji <zma...@apache.org> wrote:
>>>
>>> Hey,
>>>
>>> I'm trying to understand some nuances of the maintenance API. Here are my
>>> questions:
>>>
>>> 1. The documentation mentions that accepting or declining and inverse
>>> offer is a "hint" to the operator. How do operators view if a framework has
>>> declined, accepted or ignored an inverse offer?
>>>
>>> 2. Should a framework accept an inverse offer and then start removing
>>> tasks from an agent or should the framework only accept the inverse offer
>>> after the removal of tasks is complete? I think the former makes sense, but
>>> it implies that operators need to poll the state of the agent to ensure
>>> there are no active tasks whereas the latter implies operators only need to
>>> check if all inverse offers were accepted.
>>>
>>> 3. After accepting the inverse offer, will a framework get another
>>> inverse offer for the same agent? Currently I'm trying to determine if
>>> inverse offer information needs to be persisted so a framework can continue
>>> it's draining work between failovers or if it can just wait for an inverse
>>> offer after starting up.
>>>
>>> 4. Is it possible for the agent to automatically transition from DRAIN to
>>> DOWN if at the start of the unavailability period the agent is free of tasks
>>> or is that still the operator's responsibility?
>>>
>>> --
>>> Zameer Manji
>>>
>>> --
>>> Zameer Manji

Reply via email to