Uploaded image for project: 'OODT (Retired)'
  1. OODT (Retired)
  2. OODT-79

LRUScheduler removes a job from the JobQueue, but adds it back if can't schedule it, which (in the JobStack impl) causes JobRepo to create duplicate copies of the same JobSpec with different JobIds

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • 0.1-incubating
    • 0.2
    • resource manager
    • None
    • none

    Description

      In LRUScheduler:

      public void run()

      { .... exec = myJobQueue.getNextJob(); .... (on failure) myJobQueue.addJob(spec); }

      In myJobQueue.getNextJob() (where myJobQueue is instanceof JobStack) the JobSpec is deleted and in myJobQueue.addJob(spec) repo.addJob(JobSpec) is called as shown:

      public String addJob(JobSpec spec) throws JobQueueException

      { String jobId = safeAddJob(spec); .... }

      private String safeAddJob(JobSpec spec)

      { .... return this.repo.addJob(spec); .... }
      • Point being: JobStack's addJob(JobSpec) should not be called by LRUScheduler when adding a job back to the JobStack because the jobspec is already stored in JobRepository and everytime addJob(JobSpec) is called the JobSpec is given a new JobId
      • Patch will introduce a new method to JobQueue called: requeueJob(JobSpec) which will add the JobSpec to the back of the JobQueue and update the JobRepo.

      Attachments

        1. OODT-79.2010-12-13.patch.txt
          3 kB
          Brian Foster

        Activity

          People

            bfoster Brian Foster
            bfoster Brian Foster
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: