Skip to content

Commit 7f0770c

Browse files
authored
Merge pull request #9345 from mhashizume/PUP-11728/main/splay
Update splaylimit during daemon run
2 parents c260871 + 7eb8ca0 commit 7f0770c

File tree

3 files changed

+22
-0
lines changed

3 files changed

+22
-0
lines changed

Diff for: lib/puppet/daemon.rb

+1
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ def run_event_loop
165165
reparse_run = Puppet::Scheduler.create_job(Puppet[:filetimeout]) do
166166
Puppet.settings.reparse_config_files
167167
agent_run.run_interval = Puppet[:runinterval]
168+
agent_run.splay_limit = Puppet[:splaylimit] if Puppet[:splay]
168169
if Puppet[:filetimeout] == 0
169170
reparse_run.disable
170171
else

Diff for: lib/puppet/scheduler/splay_job.rb

+9
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,15 @@ def ready?(time)
2525
end
2626
end
2727

28+
# Recalculates splay.
29+
#
30+
# @param splay_limit [Integer] the maximum time (in seconds) to delay before an agent's first run.
31+
# @return @splay [Integer] a random integer less than or equal to the splay limit that represents the seconds to
32+
# delay before next agent run.
33+
def splay_limit=(splay_limit)
34+
@splay = calculate_splay(splay_limit)
35+
end
36+
2837
private
2938

3039
def calculate_splay(limit)

Diff for: spec/unit/daemon_spec.rb

+12
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,18 @@ def run_loop(jobs)
7979
daemon.start
8080
expect(scheduler.jobs[0]).not_to be_enabled
8181
end
82+
83+
it "recalculates splay if splaylimit changes" do
84+
# Set file timeout so the daemon reparses
85+
Puppet[:filetimeout] = 1
86+
Puppet[:splay] = true
87+
allow(agent).to receive(:run)
88+
daemon.start
89+
first_splay = scheduler.jobs[1].splay
90+
allow(Kernel).to receive(:rand).and_return(1738)
91+
scheduler.jobs[0].run(Time.now)
92+
expect(scheduler.jobs[1].splay).to_not eq(first_splay)
93+
end
8294
end
8395

8496
describe "when stopping" do

0 commit comments

Comments
 (0)