Jim,

Let me prototype something small today. After reading my scheduler (in c++)
i do have comments and synchronization on some state vars, but it might
have to do with a more complex async code base I manage.

I'll get back to you.

- alex


On Wed, Jun 10, 2015 at 6:15 AM, James Vanns <[email protected]> wrote:

> Thanks for the responses, guys. That link of the 'detailed description'
> will be handy - I've not come across that before. I do now have another
> question though! Aren't these two a contradiction;
>
> Alex;
> "you launch a task, before the method returns (say you do some blocking
> stuff after, like sync update zookeeper), you might get a statusUpdate()
> callback."
> Ben;
> "Methods will not be invoked concurrently, and each method must complete
> before the next is called."
>
> ??
>
> Jim
>
>
> On 10 June 2015 at 02:22, Benjamin Mahler <[email protected]>
> wrote:
>
>> If that's really what you're seeing, it is a bug and a very surprising
>> one, so please provide evidence :)
>>
>> See the "detailed description" here:
>> http://mesos.apache.org/api/latest/c++/classmesos_1_1Scheduler.html
>>
>> The scheduler driver will serially invoke methods on your Scheduler
>> implementation. Methods will not be invoked concurrently, and each method
>> must complete before the next is called.
>>
>> So, we recommend that you don't block inside the callbacks. Otherwise,
>> you're blocking the driver as well and your own ability to continue
>> processing callbacks.
>>
>> On Tue, Jun 9, 2015 at 8:58 AM, James Vanns <[email protected]> wrote:
>>
>>> Hi. I'm toying with the mesos scheduler (C++) API and running into
>>> unexpected race conditions. I have *not* synchronised access to attributes
>>> of my Scheduler-derived class. Is the mesos library code threaded and
>>> network communication asynchronous? What it *looks like* I'm seeing is my
>>> statusUpdate() callback being executed before the return of
>>> resourceOffers(). Naturally I call driver->launchTasks() inside
>>> resourceOffers(). This is intermittent but generally triggered by tasks
>>> that report status changes very quickly; eg. a task that fails instantly.
>>>
>>> Can anyone point me in the right direction of any online API docs that
>>> explain how callbacks are invoked? Distributed over a pool of worker
>>> threads?
>>>
>>> Also are the state transitions documented? Eg.
>>> mesos::TASK_STAGING -> mesos::TASK_STARTING -> etc.
>>>
>>> Cheers,
>>>
>>> Jim
>>>
>>> --
>>> Senior Code Pig
>>> Industrial Light & Magic
>>>
>>
>>
>
>
> --
> --
> Senior Code Pig
> Industrial Light & Magic
>

Reply via email to