Log on boot errors with one role

We didn't log boot errors if there was one role because there was no
barrier and the logging is done by the first host to close the barrier.

Let's always create the barrier to fix this.
This commit is contained in:
Donal McBreen
2024-06-20 08:28:37 +01:00
parent 1109a864d0
commit f8f88af534
3 changed files with 4 additions and 4 deletions

View File

@@ -14,7 +14,7 @@ class Kamal::Cli::App < Kamal::Cli::Base
end end
# Primary hosts and roles are returned first, so they can open the barrier # Primary hosts and roles are returned first, so they can open the barrier
barrier = Kamal::Cli::Healthcheck::Barrier.new if KAMAL.roles.many? barrier = Kamal::Cli::Healthcheck::Barrier.new
on(KAMAL.hosts, **KAMAL.boot_strategy) do |host| on(KAMAL.hosts, **KAMAL.boot_strategy) do |host|
KAMAL.roles_on(host).each do |role| KAMAL.roles_on(host).each do |role|

View File

@@ -72,7 +72,7 @@ class Kamal::Cli::App::Boot
def release_barrier def release_barrier
if barrier.open if barrier.open
info "First #{KAMAL.primary_role} container is healthy on #{host}, booting other roles" info "First #{KAMAL.primary_role} container is healthy on #{host}, booting any other roles"
end end
end end
@@ -87,7 +87,7 @@ class Kamal::Cli::App::Boot
def close_barrier def close_barrier
if barrier.close if barrier.close
info "First #{KAMAL.primary_role} container is unhealthy on #{host}, not booting other roles" info "First #{KAMAL.primary_role} container is unhealthy on #{host}, not booting any other roles"
error capture_with_info(*app.logs(version: version)) error capture_with_info(*app.logs(version: version))
error capture_with_info(*app.container_health_log(version: version)) error capture_with_info(*app.container_health_log(version: version))
end end

View File

@@ -26,7 +26,7 @@ class BrokenDeployTest < IntegrationTest
private private
def assert_failed_deploy(output) def assert_failed_deploy(output)
assert_match "Waiting for the first healthy web container before booting workers on vm3...", output assert_match "Waiting for the first healthy web container before booting workers on vm3...", output
assert_match /First web container is unhealthy on vm[12], not booting other roles/, output assert_match /First web container is unhealthy on vm[12], not booting any other roles/, output
assert_match "First web container is unhealthy, not booting workers on vm3", output assert_match "First web container is unhealthy, not booting workers on vm3", output
assert_match "nginx: [emerg] unexpected end of file, expecting \";\" or \"}\" in /etc/nginx/conf.d/default.conf:2", output assert_match "nginx: [emerg] unexpected end of file, expecting \";\" or \"}\" in /etc/nginx/conf.d/default.conf:2", output
assert_match 'ERROR {"Status":"unhealthy","FailingStreak":0,"Log":[]}', output assert_match 'ERROR {"Status":"unhealthy","FailingStreak":0,"Log":[]}', output