75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
# File 'lib/chef/application/windows_service.rb', line 75
def service_main(*startup_parameters)
while running?
if state == RUNNING
begin
Chef::Log.info("Reconfiguring with startup parameters")
reconfigure(startup_parameters)
splay = rand Chef::Config[:splay]
Chef::Log.debug("Splay sleep #{splay} seconds")
sleep splay
next if state != RUNNING
run_chef_client
Chef::Log.debug("Sleeping for #{Chef::Config[:interval]} seconds")
client_sleep Chef::Config[:interval]
rescue Chef::Application::Wakeup => e
Chef::Log.debug("Received Wakeup signal. Starting run.")
next
rescue SystemExit => e
raise
rescue Exception => e
Chef::Log.error("#{e.class}: #{e}")
Chef::Application.debug_stacktrace(e)
Chef::Log.error("Sleeping for #{Chef::Config[:interval]} seconds before trying again")
client_sleep Chef::Config[:interval]
retry
end
else sleep 5
end
end
end
|