Skip to content

Commit

Permalink
Merge pull request #9345 from mhashizume/PUP-11728/main/splay
Browse files Browse the repository at this point in the history
Update splaylimit during daemon run
  • Loading branch information
mhashizume committed Jun 3, 2024
2 parents c260871 + 7eb8ca0 commit 7f0770c
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 0 deletions.
1 change: 1 addition & 0 deletions lib/puppet/daemon.rb
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@ def run_event_loop
reparse_run = Puppet::Scheduler.create_job(Puppet[:filetimeout]) do
Puppet.settings.reparse_config_files
agent_run.run_interval = Puppet[:runinterval]
agent_run.splay_limit = Puppet[:splaylimit] if Puppet[:splay]
if Puppet[:filetimeout] == 0
reparse_run.disable
else
Expand Down
9 changes: 9 additions & 0 deletions lib/puppet/scheduler/splay_job.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,15 @@ def ready?(time)
end
end

# Recalculates splay.
#
# @param splay_limit [Integer] the maximum time (in seconds) to delay before an agent's first run.
# @return @splay [Integer] a random integer less than or equal to the splay limit that represents the seconds to
# delay before next agent run.
def splay_limit=(splay_limit)
@splay = calculate_splay(splay_limit)
end

private

def calculate_splay(limit)
Expand Down
12 changes: 12 additions & 0 deletions spec/unit/daemon_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,18 @@ def run_loop(jobs)
daemon.start
expect(scheduler.jobs[0]).not_to be_enabled
end

it "recalculates splay if splaylimit changes" do
# Set file timeout so the daemon reparses
Puppet[:filetimeout] = 1
Puppet[:splay] = true
allow(agent).to receive(:run)
daemon.start
first_splay = scheduler.jobs[1].splay
allow(Kernel).to receive(:rand).and_return(1738)
scheduler.jobs[0].run(Time.now)
expect(scheduler.jobs[1].splay).to_not eq(first_splay)
end
end

describe "when stopping" do
Expand Down

0 comments on commit 7f0770c

Please sign in to comment.