{"push_id":847532459,"size":1,"distinct_size":1,"ref":"refs/heads/restartable-tasks","head":"9ce5222f0eec5989a3be053bb3573d8074ea6738","before":"f44ccb829575a3c932ed4e3551dee5b179b1f27e","commits":[{"sha":"9ce5222f0eec5989a3be053bb3573d8074ea6738","author":{"email":"0a592ca970531916270ce283f264ceadc031ba1b@gmail.com","name":"Gian Merlino"},"message":"Some changes that make it possible to restart tasks on the same hardware.\n\nThis is done by killing and respawning the jvms rather than reconnecting to existing\njvms, for a couple reasons. One is that it lets you restore tasks after server reboots\ntoo, and another is that it lets you upgrade all the software on a box at once by just\nrestarting everything.\n\nThe main changes are,\n\n1) Add \"canRestore\" and \"stopGracefully\" methods to Tasks that say if a task can\n   stop gracefully, and actually do a graceful stop. RealtimeIndexTask is the only\n   one that currently implements this.\n\n2) Add \"stop\" method to TaskRunners that attempts to do an orderly shutdown.\n   ThreadPoolTaskRunner- call stopGracefully on restorable tasks, wait for exit\n   ForkingTaskRunner- close output stream to restorable tasks, wait for exit\n   RemoteTaskRunner- do nothing special, we actually don't want to shutdown\n\n3) Add \"restore\" method to TaskRunners that attempts to bootstrap tasks from last run.\n   Only ForkingTaskRunner does anything here. It maintains a \"restore.json\" file with\n   a list of restorable tasks.\n\n4) Have the CliPeon's ExecutorLifecycle lock the task base directory to avoid a restored\n   task and a zombie old task from stomping on each other.","distinct":true,"url":"https://api.github.com/repos/gianm/druid/commits/9ce5222f0eec5989a3be053bb3573d8074ea6738"}]}