From fe8f79677f1ba386d8cb581c848d800131deb549 Mon Sep 17 00:00:00 2001 From: Joe Rafaniello Date: Sat, 14 May 2016 23:00:38 -0400 Subject: [PATCH] evm.pid / process existence is the safe way to ask if we're running? When we changed the process title using setproctitle to "MIQ Server" [1], we broke rake evm:start's detection of a previously running server. While a process title/command line is somewhat helpful to check, only the server should be writing to evm.pid so checking for a process from evm.pid is enough. https://bugzilla.redhat.com/show_bug.cgi?id=1335391 [1] 1ba7801ee1d2591f17fe05861d726ac0d9a20fa1 --- app/models/miq_server.rb | 2 +- spec/models/miq_server_spec.rb | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/app/models/miq_server.rb b/app/models/miq_server.rb index 1a1d6364393..d3ee0d1896e 100644 --- a/app/models/miq_server.rb +++ b/app/models/miq_server.rb @@ -115,7 +115,7 @@ def self.pidfile def self.running? p = PidFile.new(pidfile) - p.running?(/evm_server\.rb/) ? p.pid : false + p.running? ? p.pid : false end def start diff --git a/spec/models/miq_server_spec.rb b/spec/models/miq_server_spec.rb index e33b5c09c81..4664a8d873e 100644 --- a/spec/models/miq_server_spec.rb +++ b/spec/models/miq_server_spec.rb @@ -384,6 +384,15 @@ end end + it "detects already .running?" do + Tempfile.open("evmpid") do |file| + allow(MiqServer).to receive(:pidfile).and_return(file.path) + File.write(file.path, Process.pid) + + expect(MiqServer.running?).to be_truthy + end + end + describe "#active?" do context "Active status returns true" do ["starting", "started"].each do |status|