How very inconvenient:
"INFO: Chef client is running, will wait for it to finish and then run."
dum..dee. dum. dumm....
"INFO: Chef client is running, will wait for it to finish and then run."
what? thats like 10 minutes.. what's it doing?
So previously I've seen some bad things happen when executions should take a few seconds, actually take a while. involving recursive operations and restoring from backups... ;-)
As its the weekend, and this is getting boring now. "killall chef-client" or something appropriately destructive followed.
So given that this is definitely not running
[root@server-124 chef]# ps -ef | egrep "(ruby|chef)"
root 3941 29729 0 06:01 pts/0 00:00:00 egrep (ruby|chef)
why am I still seeing this bullshit?
# chef-client --once
[2013-03-30T05:43:09-07:00] INFO: Chef client is running, will wait for it to finish and then run.
So on a normal running service, you would expect to see the pid here;
[root@server-123 chef]# cat /var/run/chef/client.pid
3201
but on this machine, nothing;
[root@server-124 chef]# ls /var/run/chef/client.pid
ls: /var/run/chef/client.pid: No such file or directory
so lets see what the criteria for this "Chef client is running" message;
[root@server-124 chef]# cd /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.4.0/lib/chef/
[root@server-124 chef]# grep -ir "will wait for it to finish" *
run_lock.rb: Chef::Log.info("Chef client #{runpid} is running, will wait for it to finish and then run.")
ah, so that gives up the necessary infos... so I've not set a lockfile in the /etc/chef/client.rb and thus its defaulting to this one;
# Create a new instance of RunLock
# === Arguments
# * config::: This will generally be the `Chef::Config`, but any Hash-like
# object with Symbol keys will work. See 'Parameters' section.
# === Parameters/Config
# * :lockfile::: if set, this will be used as the full path to the lockfile.
# * :file_cache_path::: if `:lockfile` is not set, the lock file will be
# named "chef-client-running.pid" and be placed in the directory given by
# `:file_cache_path`
def initialize(config)
@runlock_file = config[:lockfile] || "#{config[:file_cache_path]}/chef-client-running.pid"
@runlock = nil
end
here;
/var/cache/chef/chef-client-running.pid
delete that, and its working again.
now I have to track down what caused the situation with the zombied lockfile...
now I have to track down what caused the situation with the zombied lockfile...
Nice, thanks!!! :)
ReplyDelete