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 >

