1. 20 Jun, 2018 1 commit
    • Alejandro Sanchez's avatar
      Make job_start_data() multi partition aware on REQUEST_JOB_WILL_RUN. · 35a13703
      Alejandro Sanchez authored
      Previously the function was only testing against the first partition in
      the job_record. Now it detects if the job request is multi partition and
      if so then loops through all of them until the job will run in any or
      until the end of the list, returning the error code from the last one if
      the job won't run in any partition.
      
      Bug 5185
      35a13703
  2. 19 Jun, 2018 2 commits
  3. 18 Jun, 2018 1 commit
  4. 15 Jun, 2018 2 commits
  5. 12 Jun, 2018 3 commits
  6. 08 Jun, 2018 2 commits
  7. 06 Jun, 2018 1 commit
    • Brian Christiansen's avatar
      Don't allocate downed cloud nodes · be449407
      Brian Christiansen authored
      which were marked down due to ResumeTimeout.
      
      If a cloud node was marked down due to not responding by ResumeTimeout,
      the code inadvertently added the node back to the avail_node_bitmap --
      after being cleared by set_node_down_ptr(). The scheduler would then
      attempt to allocate the node again, which would cause a loop of hitting
      ResumeTimeout and allocating the downed node again.
      
      Bug 5264
      be449407
  8. 05 Jun, 2018 1 commit
  9. 31 May, 2018 1 commit
    • Alejandro Sanchez's avatar
      Fix incomplete RESPONSE_[RESOURCE|JOB_PACK]_ALLOCATION building path. · 17392e76
      Alejandro Sanchez authored
      There were two code paths building an allocation response by calling
      its own static _build_alloc_msg() function:
      
      1. src/slurmctld/proc_req.c
      2. src/slurmctld/srun_comm.c
      
      These two functions diverged and both had members that were not filled
      in but were filled in the other. This patch makes it so we change the
      signature of the one in proc_req.c to make it extern and then in
      srun_comm.c we call this newly common function.
      
      Also added cpu_freq_[min|max|gov] members in the common one since these
      were the only members missing in proc_req.c function (the one in
      srun_comm.c had more members missing, like all the ntasks_per*, account,
      qos or resv_name).
      
      Bug 4999.
      17392e76
  10. 30 May, 2018 7 commits
  11. 24 May, 2018 1 commit
    • Brian Christiansen's avatar
      Notify srun and ctld when unkillable stepd exits · 956a808d
      Brian Christiansen authored
      Commits f18390e8 and eed76f85 modified the stepd so that if the
      stepd encountered an unkillable step timeout that the stepd would just
      exit the stepd. If the stepd is a batch step then it would reply back
      to the controller with a non-zero exit code which will drain the node.
      But if an srun allocation/step were to get into the unkillable step
      code, the steps wouldn't let the waiting srun or controller know about
      the step going away -- leaving a hanging srun and job.
      
      This patch enables the stepd to notify the waiting sruns and the ctld of
      the stepd being done and drains the node for srun'ed alloction and/or
      steps.
      
      Bug 5164
      956a808d
  12. 21 May, 2018 1 commit
  13. 17 May, 2018 1 commit
  14. 15 May, 2018 1 commit
    • Alejandro Sanchez's avatar
      PMIx - override default paths at configure time if --with-pmix is used. · 635c0232
      Alejandro Sanchez authored
      Previously the default paths continued to be tested even when new ones
      were requested. This had as a consequence that if any of the new paths
      was the same as any of the default ones (i.e. /usr or /usr/local), the
      configure script was incorrectly erroring out specifying that a version
      of PMIx was already found in a previous path.
      
      Bug 5168.
      635c0232
  15. 10 May, 2018 1 commit
    • Alejandro Sanchez's avatar
      Fix different issues when requesting memory per cpu/node. · bf4cb0b1
      Alejandro Sanchez authored
      
      
      First issue was identified on multi partition requests. job_limits_check()
      was overriding the original memory requests, so the next partition
      Slurm validating limits against was not using the original values. The
      solution consists in adding three members to job_details struct to
      preserve the original requests. This issue is reported in bug 4895.
      
      Second issue was memory enforcement behavior being different depending on
      job the request issued against a reservation or not.
      
      Third issue had to do with the automatic adjustments Slurm did underneath
      when the memory request exceeded the limit. These adjustments included
      increasing pn_min_cpus (even incorrectly beyond the number of cpus
      available on the nodes) or different tricks increasing cpus_per_task and
      decreasing mem_per_cpu.
      
      Fourth issue was identified when requesting the special case of 0 memory,
      which was handled inside the select plugin after the partition validations
      and thus that could be used to incorrectly bypass the limits.
      
      Issues 2-4 were identified in bug 4976.
      
      Patch also includes an entire refactor on how and when job memory is
      is both set to default values (if not requested initially) and how and
      when limits are validated.
      
      Co-authored-by: default avatarDominik Bartkiewicz <bart@schedmd.com>
      bf4cb0b1
  16. 09 May, 2018 9 commits
  17. 08 May, 2018 3 commits
    • Brian Christiansen's avatar
      Prevent slurmd from launching steps if prolog fail · 3b029021
      Brian Christiansen authored
      Bug 5146
      3b029021
    • Tim Wickberg's avatar
      Fix issue with invalid protocol_version when using srun on ppc64. · 77d65f4f
      Tim Wickberg authored
      Caused by a corrupted protocol_version field value being received
      by the slurmstepd, as we cannot safely write/read a uint16_t across
      the pipe as if it was an int.
      
      Regression caused by commit 90b116c2.
      
      Bug 5133.
      77d65f4f
    • Brian Christiansen's avatar
      Fix checkpointing requeued jobs in a bad state · f9f395af
      Brian Christiansen authored
      Requeued jobs are marked as PENDING|COMPLETING until the epilog checks
      in. The issue is that if job_set_alloc_tres gets called while in the
      PENDING|COMPLETING state, the job's alloc_tres_str will be free'd. If
      this job then gets checkpointed in this state (PENDING|COMPLETING + no
      tres_alloc_str) on startup the controller would crash because it
      expected the job to have a tres_alloc_str/cnt when in the COMPLETING
      state. This could be triggered if starting the controller without the
      dbd up. When the dbd comes up, the assoc_cache_mgr calls
      _update_job_tres() which calls job_set_alloc_tres. It could also be
      triggered by adding new tres.
      
      This most likely started happening in 17.11.5 because of commit
      865b672f which introduced calling _update_job_tres() on each job
      after the dbd comes up.
      
      Bugs 5137,4522
      f9f395af
  18. 04 May, 2018 1 commit
  19. 03 May, 2018 1 commit