mesos-reviews mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jay Buffington">
Subject Re: Review Request 33249: Send statusUpdate to scheduler on containerizer launch failure
Date Mon, 11 May 2015 17:10:38 GMT

This is an automatically generated e-mail. To reply, visit:

(Updated May 11, 2015, 10:10 a.m.)

Review request for mesos, Benjamin Hindman, Jie Yu, and Timothy Chen.


added back the slave_test and fixed tnachen's two comments.

Bugs: MESOS-2020 and MESOS-2656

Repository: mesos


Send statusUpdate to scheduler on containerizer launch failure

This review is actually for three commits.  The three commits are separated out on github

Commit #1:
docker-no-executor-framework example should send ContainerInfo

docker-no-executor-framework stopped working when the protobuf message
changed during development.  Apparently noone noticed because we don't
run it as part of our test suite.  I used it to develop a fix for
proper error reporting, so I fixed it.

Commit #2:
serialize wait and destroy in containerizer

Containerizers keep track of all the containers they have created.  When
a container is destroy()'ed the containerizer removes the container from
its internal hashmap.  This means that wait() must be called before the
container is destroyed.

When the docker containerizer fails because of a "docker pull" or
"docker run" failure, we end up with a race condition where wait() does
not properly return the Termination, so we ended up with a default
failure message of "Abnormal Executor Termination" which isn't very

This commit solves this issue by not destroying the container until
after wait is called in the failure case.

Fixes MESOS-2656

Commit #3:
send scheduler containerizer launch failure errors

If a method in the launch sequence returns a failure the error message
wasn't making it back to the scheduler.

Fixes MESOS-2020

Diffs (updated)

  include/mesos/containerizer/containerizer.proto 95c84dfbecef28ca9a220a98293c5fc6215a692f

  src/examples/docker_no_executor_framework.cpp d5385d9295d30a6039bab9938f3270006582d3da 
  src/slave/containerizer/containerizer.hpp 56c088abb036aa26c323c3142fd27ea29ed51d4f 
  src/slave/containerizer/docker.hpp b25ec55bf3cd30d6e8a804d09d90c632a7d12e3f 
  src/slave/containerizer/docker.cpp f9fc89ad7e3c853c3f9f6dcf9aa68e54dc1888c6 
  src/slave/containerizer/mesos/containerizer.hpp 5e5f13ed8a71ff9510b40b6032d00fd16d312622

  src/slave/containerizer/mesos/containerizer.cpp f2587280dc0e1d566d2b856a80358c7b3896c603

  src/slave/slave.cpp c78ee3c9e7fc38ad364e83f4abe267e86bfbbc13 
  src/tests/docker_containerizer_tests.cpp c9d66b3fbc7d081f36c26781573dca50de823c44 
  src/tests/slave_tests.cpp 04e79ec061e767a82d40242be7884967942c50b6 



I used examples/docker_no_executor_framework.cpp, and wrote a few tests and ran make check


Jay Buffington

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message