Skip to content

Commit 6da7982

Browse files
committed
tmp: revert all, do the tests pass then?
1 parent c6151ff commit 6da7982

File tree

8 files changed

+92
-96
lines changed

8 files changed

+92
-96
lines changed

docs/CONFIGURATION.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ spawning the original workers.
325325

326326
```ruby
327327
after_monitor_ready do |server|
328-
server.logger.info("monitor pid=#{Process.pid} ready")
328+
server.logger.info("Monitor pid=#{Process.pid} ready")
329329
end
330330
```
331331

lib/pitchfork/configurator.rb

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,21 @@ class Configurator
4141
:worker_processes => 1,
4242
:before_fork => nil,
4343
:after_worker_fork => lambda { |server, worker|
44-
server.logger.info("#{worker.to_log} spawned")
44+
server.logger.info("worker=#{worker.nr} gen=#{worker.generation} pid=#{$$} spawned")
4545
},
4646
:after_mold_fork => lambda { |server, worker|
47-
server.logger.info("#{worker.to_log} spawned")
47+
server.logger.info("mold gen=#{worker.generation} pid=#{$$} spawned")
4848
},
4949
:before_worker_exit => nil,
5050
:after_worker_exit => lambda { |server, worker, status|
5151
m = if worker.nil?
52-
"reaped unknown process (#{status.inspect})"
52+
"repead unknown process (#{status.inspect})"
53+
elsif worker.mold?
54+
"mold pid=#{worker.pid rescue 'unknown'} gen=#{worker.generation rescue 'unknown'} reaped (#{status.inspect})"
55+
elsif worker.service?
56+
"service pid=#{worker.pid rescue 'unknown'} gen=#{worker.generation rescue 'unknown'} reaped (#{status.inspect})"
5357
else
54-
"#{worker.to_log} reaped (#{status.inspect})"
58+
"worker=#{worker.nr rescue 'unknown'} pid=#{worker.pid rescue 'unknown'} gen=#{worker.generation rescue 'unknown'} reaped (#{status.inspect})"
5559
end
5660
if status.success?
5761
server.logger.info(m)
@@ -60,10 +64,10 @@ class Configurator
6064
end
6165
},
6266
:after_worker_ready => lambda { |server, worker|
63-
server.logger.info("#{worker.to_log} ready")
67+
server.logger.info("worker=#{worker.nr} gen=#{worker.generation} ready")
6468
},
6569
:after_monitor_ready => lambda { |server|
66-
server.logger.info("monitor pid=#{Process.pid} ready")
70+
server.logger.info("Monitor pid=#{Process.pid} ready")
6771
},
6872
:after_worker_timeout => nil,
6973
:after_worker_hard_timeout => nil,

lib/pitchfork/http_server.rb

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def inspect
5050

5151
def call(original_thread) # :nodoc:
5252
begin
53-
@server.logger.error("#{@worker.to_log} timed out, exiting")
53+
@server.logger.error("worker=#{@worker.nr} pid=#{@worker.pid} timed out, exiting")
5454
if @callback
5555
@callback.call(@server, @worker, Info.new(original_thread, @rack_env))
5656
end
@@ -363,19 +363,19 @@ def monitor_loop(sleep = true)
363363
when Message::WorkerSpawned
364364
worker = @children.update(message)
365365
# TODO: should we send a message to the worker to acknowledge?
366-
logger.info "#{worker.to_log} registered"
366+
logger.info "worker=#{worker.nr} pid=#{worker.pid} gen=#{worker.generation} registered"
367367
when Message::MoldSpawned
368368
new_mold = @children.update(message)
369-
logger.info("#{new_mold.to_log} spawned")
369+
logger.info("mold pid=#{new_mold.pid} gen=#{new_mold.generation} spawned")
370370
when Message::ServiceSpawned
371371
new_service = @children.update(message)
372-
logger.info("#{new_service.to_log} spawned")
372+
logger.info("service pid=#{new_service.pid} gen=#{new_service.generation} spawned")
373373
when Message::MoldReady
374374
old_molds = @children.molds
375375
new_mold = @children.update(message)
376-
logger.info("#{new_mold.to_log} ready")
376+
logger.info("mold pid=#{new_mold.pid} gen=#{new_mold.generation} ready")
377377
old_molds.each do |old_mold|
378-
logger.info("Terminating old #{old_mold.to_log}")
378+
logger.info("Terminating old mold pid=#{old_mold.pid} gen=#{old_mold.generation}")
379379
old_mold.soft_kill(:TERM)
380380
end
381381
else
@@ -413,7 +413,7 @@ def stop(graceful = true)
413413
end
414414

415415
def worker_exit(worker)
416-
logger.info "#{worker.to_log} exiting"
416+
logger.info "worker=#{worker.nr} pid=#{worker.pid} gen=#{worker.generation} exiting"
417417
proc_name status: "exiting"
418418

419419
if @before_worker_exit
@@ -427,7 +427,7 @@ def worker_exit(worker)
427427
end
428428

429429
def service_exit(service)
430-
logger.info "#{service.to_log} exiting"
430+
logger.info "service pid=#{service.pid} gen=#{service.generation} exiting"
431431
proc_name status: "exiting"
432432

433433
if @before_service_worker_exit
@@ -548,7 +548,11 @@ def hard_timeout(child)
548548
end
549549
end
550550

551-
logger.error "#{child.to_log} timed out, killing"
551+
if child.mold?
552+
logger.error "mold pid=#{child.pid} gen=#{child.generation} timed out, killing"
553+
else
554+
logger.error "worker=#{child.nr} pid=#{child.pid} gen=#{child.generation} timed out, killing"
555+
end
552556
@children.hard_kill(@timeout_signal.call(child.pid), child) # take no prisoners for hard timeout violations
553557
end
554558

@@ -579,7 +583,7 @@ def after_fork_internal
579583
end
580584

581585
def spawn_worker(worker, detach:)
582-
logger.info("#{worker.to_log} spawning...")
586+
logger.info("worker=#{worker.nr} gen=#{worker.generation} spawning...")
583587

584588
# We set the deadline before spawning the child so that if for some
585589
# reason it gets stuck before reaching the worker loop,
@@ -642,7 +646,7 @@ def service_loop(service)
642646
end
643647

644648
def spawn_service(service, detach:)
645-
logger.info("#{service.to_log} spawning...")
649+
logger.info("service gen=#{service.generation} spawning...")
646650

647651
# We set the deadline before spawning the child so that if for some
648652
# reason it gets stuck before reaching the worker loop,
@@ -755,9 +759,9 @@ def restart_outdated_workers
755759
if service = @children.service
756760
if service.outdated?
757761
if service.soft_kill(:TERM)
758-
logger.info("Sent SIGTERM to #{service.to_log}")
762+
logger.info("Sent SIGTERM to service pid=#{service.pid} gen=#{service.generation}")
759763
else
760-
logger.info("Failed to send SIGTERM to #{service.to_log}")
764+
logger.info("Failed to send SIGTERM to service pid=#{service.pid} gen=#{service.generation}")
761765
end
762766
end
763767
end
@@ -766,10 +770,10 @@ def restart_outdated_workers
766770
outdated_workers = @children.workers.select { |w| !w.exiting? && w.generation < @children.mold.generation }
767771
outdated_workers.each do |worker|
768772
if worker.soft_kill(:TERM)
769-
logger.info("Sent SIGTERM to #{worker.to_log}")
773+
logger.info("Sent SIGTERM to worker=#{worker.nr} pid=#{worker.pid} gen=#{worker.generation}")
770774
workers_to_restart -= 1
771775
else
772-
logger.info("Failed to send SIGTERM to #{worker.to_log}")
776+
logger.info("Failed to send SIGTERM to worker=#{worker.nr} pid=#{worker.pid} gen=#{worker.generation}")
773777
end
774778
break if workers_to_restart <= 0
775779
end
@@ -981,7 +985,7 @@ def worker_loop(worker)
981985
if Info.fork_safe?
982986
spawn_mold(worker)
983987
else
984-
logger.error("#{worker.to_log} is no longer fork safe, can't refork")
988+
logger.error("worker=#{worker.nr} gen=#{worker.generation} is no longer fork safe, can't refork")
985989
end
986990
when Message
987991
worker.update(client)
@@ -1001,7 +1005,7 @@ def worker_loop(worker)
10011005
if @refork_condition.met?(worker, logger)
10021006
proc_name status: "requests: #{worker.requests_count}, spawning mold"
10031007
if spawn_mold(worker)
1004-
logger.info("#{worker.to_log} refork condition met, promoting ourselves")
1008+
logger.info("worker=#{worker.nr} gen=#{worker.generation} Refork condition met, promoting ourselves")
10051009
end
10061010
@refork_condition.backoff!
10071011
end
@@ -1064,11 +1068,11 @@ def mold_loop(mold)
10641068
spawn_worker(Worker.new(message.nr, generation: mold.generation), detach: true)
10651069
rescue ForkFailure
10661070
if retries > 0
1067-
@logger.fatal("#{mold.to_log} failed to spawn a worker, retrying")
1071+
@logger.fatal("mold pid=#{mold.pid} gen=#{mold.generation} Failed to spawn a worker. Retrying.")
10681072
retries -= 1
10691073
retry
10701074
else
1071-
@logger.fatal("#{mold.to_log} failed to spawn a worker twice in a row - corrupted mold process?")
1075+
@logger.fatal("mold pid=#{mold.pid} gen=#{mold.generation} Failed to spawn a worker twice in a row. Corrupted mold process?")
10721076
Process.exit(1)
10731077
end
10741078
rescue => error
@@ -1080,11 +1084,11 @@ def mold_loop(mold)
10801084
spawn_service(Service.new(generation: mold.generation), detach: true)
10811085
rescue ForkFailure
10821086
if retries > 0
1083-
@logger.fatal("#{mold.to_log} failed to spawn a service, retrying")
1087+
@logger.fatal("mold pid=#{mold.pid} gen=#{mold.generation} Failed to spawn a service. Retrying.")
10841088
retries -= 1
10851089
retry
10861090
else
1087-
@logger.fatal("#{mold.to_log} failed to spawn a service twice in a row - corrupted mold process?")
1091+
@logger.fatal("mold pid=#{mold.pid} gen=#{mold.generation} Failed to spawn a service twice in a row. Corrupted mold process?")
10881092
Process.exit(1)
10891093
end
10901094
rescue => error

lib/pitchfork/refork_condition.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def met?(worker, logger)
1919
if worker.requests_count >= limit
2020
return false if backoff?
2121

22-
logger.info("#{worker.to_log} processed #{worker.requests_count} requests, triggering a refork")
22+
logger.info("worker=#{worker.nr} pid=#{worker.pid} processed #{worker.requests_count} requests, triggering a refork")
2323
return true
2424
end
2525
end

lib/pitchfork/worker.rb

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -208,14 +208,6 @@ def after_fork_in_child
208208
@master&.close
209209
end
210210

211-
def to_log
212-
if mold?
213-
pid ? "mold gen=#{generation} pid=#{pid}" : "mold gen=#{generation}"
214-
else
215-
pid ? "worker=#{nr} gen=#{generation} pid=#{pid}" : "worker=#{nr} gen=#{generation}"
216-
end
217-
end
218-
219211
private
220212

221213
def init_deadline
@@ -265,10 +257,6 @@ def register_to_master(control_socket)
265257
@master.close
266258
end
267259

268-
def to_log
269-
pid ? "service gen=#{generation} pid=#{pid}" : "service gen=#{generation}"
270-
end
271-
272260
private
273261

274262
def init_deadline

test/integration/test_boot.rb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,9 @@ def test_boot_worker_stuck_in_spawn
104104

105105
assert_healthy("http://#{addr}:#{port}")
106106

107-
assert_stderr(/worker=0 gen=0 pid=\d+ ready/)
108-
assert_stderr(/worker=1 gen=0 pid=\d+ registered/)
109-
assert_stderr(/worker=1 gen=0 pid=\d+ timed out, killing/, timeout: 4)
107+
assert_stderr("worker=0 gen=0 ready")
108+
assert_stderr(/worker=1 pid=(\d+) gen=0 registered/)
109+
assert_stderr(/worker=1 pid=\d+ gen=0 timed out, killing/, timeout: 4)
110110

111111
assert_clean_shutdown(pid)
112112
end
@@ -126,14 +126,14 @@ def test_boot_worker_stuck_in_spawn
126126
RUBY
127127

128128
assert_healthy("http://#{addr}:#{port}")
129-
assert_stderr(/worker=0 gen=0 pid=\d+ ready/)
130-
assert_stderr(/worker=1 gen=0 pid=\d+ ready/)
129+
assert_stderr("worker=0 gen=0 ready")
130+
assert_stderr("worker=1 gen=0 ready")
131131

132132
Process.kill(:KILL, pid)
133133
Process.waitpid(pid)
134134

135-
assert_stderr(/worker=0 gen=0 pid=(\d+) exiting/, timeout: 5)
136-
assert_stderr(/worker=1 gen=0 pid=(\d+) exiting/)
135+
assert_stderr(/worker=0 pid=(\d+) gen=0 exiting/, timeout: 5)
136+
assert_stderr(/worker=1 pid=(\d+) gen=0 exiting/)
137137

138138
assert_raises Errno::ESRCH, Errno::ECHILD do
139139
25.times do

test/integration/test_info.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ def test_after_request_complete
1111
CONFIG
1212

1313
assert_healthy("http://#{addr}:#{port}")
14-
assert_stderr(/worker=3 gen=0 pid=\d+ ready/)
14+
assert_stderr "worker=3 gen=0 ready"
1515

1616
response = http_get("http://#{addr}:#{port}/")
1717
assert_equal({workers_count: 4, live_workers_count: 4}.inspect, response.body)
1818

1919
Process.kill(:TTOU, pid)
20-
assert_stderr(/worker=3 gen=0 pid=\d+ reaped/)
20+
assert_stderr(/worker=3 pid=\d+ gen=0 reaped/)
2121
Process.kill(:TTOU, pid)
22-
assert_stderr(/worker=2 gen=0 pid=\d+ reaped/)
22+
assert_stderr(/worker=2 pid=\d+ gen=0 reaped/)
2323

2424
response = http_get("http://#{addr}:#{port}/")
2525
assert_equal({workers_count: 4, live_workers_count: 2}.inspect, response.body)

0 commit comments

Comments
 (0)