Joseph Wu created MESOS-5378:
--------------------------------
Summary: Terminating a framework during master failover leads to
orphaned tasks
Key: MESOS-5378
URL: https://issues.apache.org/jira/browse/MESOS-5378
Project: Mesos
Issue Type: Bug
Components: framework, master
Affects Versions: 0.28.1, 0.27.2
Reporter: Joseph Wu
Repro steps:
1) Setup:
{code}
bin/mesos-master.sh --work_dir=/tmp/master
bin/mesos-slave.sh --work_dir=/tmp/slave --master=localhost:5050
src/mesos-execute --checkpoint --command="sleep 1000" --master=localhost:5050
--name="test"
{code}
2) Kill all three from (1), in the order they were started.
3) Restart the master and agent. Do not restart the framework.
Result)
* The agent will reconnect to an orphaned task.
* The Web UI will report no memory usage
* {{curl localhost:5050/metrics/snapshot}} will say: {{"master/mem_used":
128,}}
Cause)
When a framework registers with the master, it provides a {{failover_timeout}},
in case the framework disconnects. If the framework disconnects and does not
reconnect within this {{failover_timeout}}, the master will kill all tasks
belonging to the framework.
However, the master does not persist this {{failover_timeout}} across master
failover. The master will "forget" about a framework if:
1) The master dies before {{failover_timeout}} passes.
2) The framework dies while the master is dead.
When the master comes back up, the agent will re-register. The agent will
report the orphaned task(s). Because the master failed over, it does not know
these tasks are orphans (i.e. it thinks the frameworks might re-register).
Proposed solution)
The master should save the {{FrameworkID}} and {{failover_timeout}} in the
registry. Upon recovery, the master should resume the {{failover_timeout}}
timers.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)