File tree Expand file tree Collapse file tree 3 files changed +22
-0
lines changed Expand file tree Collapse file tree 3 files changed +22
-0
lines changed Original file line number Diff line number Diff 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
Original file line number Diff line number Diff 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 )
Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments