Uploaded image for project: 'Gump'
  1. Gump
  2. GUMP-126

Simple scheduling support using a "gump run queue"

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Open
    • Major
    • Resolution: Unresolved
    • Gump3-alpha-7
    • Gump3-alpha-7
    • Python-based Gump
    • None

    Description

      As discussed on the mailing list:

      http://mail-archives.apache.org/mod_mbox/gump-general/200504.mbox/%3cBE93DE74.26EDD%25mail@leosimons.com%3e

      Naïve line-based schedule file using simple commands together with cron could be real nice.

      Creating schedules
      ------------------
      We should have something like

      gump schedule-run --profile=public --official
      gump schedule-run --profile=public
      gump schedule-run --profile=kaffe

      Which writes a file $GUMP_HOME/schedule looking like this

      gump run --profile=public --official
      gump run --profile=public
      gump run --profile=kaffe

      The code would be along the lines of

      schedule_run()

      { local schedulefile="$GUMP_HOME/schedule" echo gump run $* >> $schedulefile }

      You would also want to schedule runs immediately

      gump schedule-run-first --profile=custom --debug

      Which would be something like

      schedule_run_first()

      { local schedulefile="$GUMP_HOME/schedule" echo gump run $* >> $schedulefile.new cat $schedulefile >> $schedulefile.new rm $schedulefile mv $schedulefile.new $schedulefile }

      And of course there's more options like

      schedule_run_when_idle()

      { local pidfile="$GUMP_HOME/pygump/pygump.pid" if [[ ! -f "$pidfile" ]]; then schedule_run fi }

      The next bit is to have calls to those "schedule-run" commands in the
      crontab:

      1. the next run after midnight will be the "official" one
        0 0 * * * . /home/gump/.bash_profile; gump schedule-run-first \
        --profile=public --official
        0 6 * * * . /home/gump/.bash_profile; gump schedule-run \
        --profile=kaffe
        0 12 * * * . /home/gump/.bash_profile; gump schedule-run \
        --profile=jdk15
        0 3,9,15,18 * * * . /home/gump/.bash_profile; gump schedule-run-when-idle \
        --profile=public

      Keeping schedules
      -----------------
      And then have something like

      gump try-to-invoke-run

      Which checks to see if gump is running, and if not, takes a line from
      $GUMP_HOME/schedule and executes it. Along the lines of

      try_to_invoke_run()

      { local pidfile="$GUMP_HOME/pygump/pygump.pid" if [[ ! -f "$pidfile" ]]; then line=remove_first_line_from_schedule `$line` fi }

      And we run that real often from the crontab:

      60/12 * * * * . /home/gump/.bash_profile; gump try-to-invoke-run

      Why

      This would ensure gump would be running just about continuously, but you
      could also easily interrupt using

      gump kill
      gump schedule-run-first --profile=custom --debug

      To manually change the schedule if you wanted to try something.

      Attachments

        Activity

          People

            Unassigned Unassigned
            lsimons Leo Simons
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated: