Skip to content

Instantly share code, notes, and snippets.

@jasonlai
Last active January 6, 2019 01:28
Show Gist options
  • Save jasonlai/d1ae04f090bd0587175ca2ff934409ed to your computer and use it in GitHub Desktop.
Save jasonlai/d1ae04f090bd0587175ca2ff934409ed to your computer and use it in GitHub Desktop.
Mesos Agent task run call graph
Slave::run(FrameworkInfo&, ExecutorInfo, Option<TaskInfo>, Option<TaskGroupInfo>, UPID&);
|-> Slave::unschedule(path: string&) -> Future<bool>; // path = paths::getFrameworkPath(work_dir: string&, SlaveID&, FrameworkID&) -> string;
|-> Slave::unschedule(path: string&) -> Future<bool>; // path = paths::getFrameworkPath(metaDir: string&, SlaveID&, FrameworkID&) -> string;
|-> Slave::unschedule(path: string&) -> Future<bool>; // path = paths::getExecutorPath(work_dir: string&, SlaveID&, FrameworkID&, ExecutorID&) -> string;
|-> Slave::unschedule(path: string&) -> Future<bool>; // path = paths::getExecutorPath(metaDir: string&, SlaveID&, FrameworkID&, ExecutorID&) -> string;
\-> Slave::_run(Future<bool>&, FrameworkInfo&, ExecutorInfo&, Option<TaskInfo>&, Option<TaskGroupInfo>&);
|-> Slave::authorizeTask(TaskInfo&, FrameworkInfo&) -> Future<bool>;
\-> Slave::__run(Future<list<bool>>&, FrameworkInfo&, ExecutorInfo&, Option<TaskInfo>&, Option<TaskGroupInfo>&);
|-> Slave::launchExecutor(Option<Future<Secret>>&, FrameworkID&, ExecutorID&, Option<TaskInfo>&);
| |-> MesosContainerizer::launch(ContainerID&, Option<TaskInfo>&, ExecutorInfo&, directory: string&, user: Option<string>&, SlaveID&, environment: map<string, string>&, bool) -> Future<bool>;
| | \-> MesosContainerizer::launch(ContainerID&, ContainerConfig&, environment: map<string, string>&, SlaveID&, bool) -> Future<bool>;
| | |-> Provisioner::provision(ContainerID&, Image&) -> Future<ProvisionInfo>;
| | |-> MesosContainerizer::prepare(ContainerID&, Option<ProvisionInfo>&) -> Future<Nothing>; // None() for Option<ProvisionInfo>& means no root FS;
| | | \-> MesosIsolator::prepare(ContainerID&, ContainerConfig&) -> Future<Option<ContainerLaunchInfo>>; // for each isolator in isolators;
| | |-> IOSwitchboard::extractContainerIO(ContainerID&) -> Future<Option<ContainerIO>>;
| | \-> MesosContainerizer::_launch(ContainerID&, Option<ContainerIO>&, environment: map<string, string>, SlaveID&, bool) -> Future<bool>;
| | |-> LinuxLauncher::fork(ContainerID&, path: string&, argv: vector<string>&, in: process::Subprocess::IO&, out: process::Subprocess::IO&, err: process::Subprocess::IO&, environment: Option<map<string, string>>&, enterNamespaces: Option<int>, cloneNamespaces: Option<int>) -> Try<pid_t>;
| | |-> MesosContainerizer::isolate(ContainerID&, pid_t) -> Future<bool>;
| | | |-> MesosIsolator::watch(ContainerID&) -> Future<ContainerLimitation>;
| | | |-> MesosContainerizer::limited(ContainerID&, Future<ContainerLimitation>&);
| | | \-> MesosIsolator::isolate(ContainerID&, pid_t) -> Future<Nothing>;
| | |-> MesosContainerizer::fetch(ContainerID&, SlaveID&) -> Future<Nothing>;
| | \-> MesosContainerizer::exec(ContainerID&, pipeWrite: int_fd) -> Future<bool>;
| \-> Slave::executorLaunched(FrameworkID&, ExecutorID&, ContainerID&, Future<bool>&);
| |-> MesosContainerizer::wait(ContainerID&) -> Future<Option<ContainerTermination>>;
| |-> Slave::executorTerminated(FrameworkID&, ExecutorID&, Future<Option<ContainerTermination>>&);
| \-> MesosContainerizer::destroy(ContainerID&);
|-> MesosContainerizer::update(ContainerID&, Resources&) -> Future<Nothing>;
| \-> MesosIsolator::update(ContainerID&, Resources&) -> Future<Nothing>;
\-> Slave::___run(Future<Nothing>&, FrameworkID&, ExecutorID&, ContainerID&, list<TaskInfo>&, list<TaskGroupInfo>&);
|-> Executor::send(RunTaskMessage&);
\-> Executor::send(executor::Event&);
MesosContainerizer::attach(ContainerID&) -> Future<process::http::Connection>;
\-> IOSwitchboard::connect(ContainerID&) -> Future<process::http::Connection>;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment