Details
Description
The docker executor doesn't wait for pending status updates to be acknowledged before shutting down, instead it sleeps for one second and then terminates:
void _stop() { // A hack for now ... but we need to wait until the status update // is sent to the slave before we shut ourselves down. // TODO(tnachen): Remove this hack and also the same hack in the // command executor when we have the new HTTP APIs to wait until // an ack. os::sleep(Seconds(1)); driver.get()->stop(); }
This would result in racing between task status update (e.g. TASK_FINISHED) and executor exit. The latter would lead agent generating a `TASK_FAILED` status update by itself, leading to the confusing case where the agent handles two different terminal status updates.
Attachments
Issue Links
- is related to
-
MESOS-9887 Race condition between two terminal task status updates for Docker/Command executor.
- Resolved
- relates to
-
MESOS-8537 Default executor doesn't wait for status updates to be ack'd before shutting down
- Resolved