• Motivation:
    • current if we want to deploy new changes to gobblin cluster, the gobblin process needs to be stopped and we need to wait for all jobs to finish or stop it.
    • we should have a way to deploy gobblin in a way that seemlessly transfer new job runs on newly deployed code while currently running job finishes gracefully on process running with old code.
  • Proposed Change
    • for scheduled jobs
      • new deployment indicated via new deployment Id should unschedule all the jobs.
    • for Ad-hoc (or runonce) jobs
      • new jobs should be scheduled on the deployment with latest deployment Id
    • udpate gobblin.sh script to take unique deployment Id
    • store the Deployment Id in DB or file ( based on the config )
  • New or Changed Public Interfaces:
    • gobblin.sh --deployment-Id
    • all Gobblin Master classes to look for latest deployment Id from ( DB or File ) or generate new one and register it for others to refer.
  • Migration Plan and Compatibility
    • This feature must be fully backward compatible.
  • Rejected Alternatives:
    • Graceful stopping of streaming jobs can be ok to take some gap and start again, but batch job can not afford to get cancelled since those jobs are expensive to rerun ( not to mention all the management of restarting those jobs )
    • Any other alternative?
  • No labels