Uploaded image for project: 'MCollective Plugins'
  1. MCollective Plugins
  2. MCOP-537

puppet runall command blocks on a single busy node


    • Template:
    • Story Points:
    • Release Notes:
      Bug Fix
    • Release Notes Summary:
      mco puppet runall <n> will no longer block running other nodes if the next n nodes are busy.


      The runhosts method in puppetrunner.rb is buggy:

      1) It "fixates" on a busy node. It maintains an internal queue of nodes to be triggered. Each time around a loop it looks at the node at the head of the queue; if this node is idle it triggers a run on it and removes it from the queue. But if it is busy, it pushes it back on the head of the queue (not the tail, as seems to be intended). So next time around it will look at the same node again. It will not trigger runs on any other node (even if they are all idle) until this node finishes its run.

      2) It only considers triggering a run on one node each time around its loop. It basically runs "mco puppet status" and checks to see if the node at the head of its queue is idle. If so, it triggers a run on it - just on that one node. Instead, it could (and I think should) look at all nodes in the queue and trigger runs on any that are idle (up to the concurrency limit, of course.)

      I have fixes for both of these problems, in a fork of the github repo. Should I just create a pull request? I'm not sure what the procedure is for getting this fixed.



          Issue Links




                • Assignee:
                  LorcanH Lorcan Hamill
                • Votes:
                  0 Vote for this issue
                  3 Start watching this issue


                  • Created: