Skip to content

Entering infinite loop during run #209

@litch

Description

@litch

Cookbook version

1.7.8 - and 3.0.0

Chef-client version

12.5.1

Platform Details

Ubuntu 14.04, running on Softlayer VPS

Scenario:

During the chef run, the node will just start into an infinite loop when it hits one of my runit_service configurations. I had run into this problem a bit earlier and seemed to get around it with a different version of runit, but it has re-emerged.

Steps to Reproduce:

This is the entire contents of the recipe in question:

health_check_port = 2702

package 'ruby2.3'

package 'obsidian-account-service' do
  action :upgrade
  notifies :restart, 'runit_service[account-service]'
end

package 'libpq-dev'

file "/opt/obsidian/account-service/settings/account.json" do
  content JSON.pretty_generate(
    'externalMessaging' => {
      'eventStore' => {
        'host' => node[:event_store_message_bus][:host],
        'port' => node[:event_store_message_bus][:http_port]
      }
    },

    'eventPublishing' => {
      'eventStore' => {
        'host' => node[:event_store_message_bus][:host],
        'port' => node[:event_store_message_bus][:http_port]
      }
    }
  )
end

file "/opt/obsidian/account-service/settings/account_client.json" do
  content JSON.pretty_generate(
    'eventStore' => {
      'host' => node[:event_store_message_bus][:host],
      'port' => node[:event_store_message_bus][:http_port]
    }
  )
end

file "/opt/obsidian/account-service/settings/error_telemetry_component_client.json" do
  content JSON.pretty_generate(
    'eventStore' => {
      'host' => node[:event_store_message_bus][:host],
      'port' => node[:event_store_message_bus][:http_port]
    }
  )
end

file "/opt/obsidian/account-service/settings/event_store_client_http.json" do
  content JSON.pretty_generate(
    'host' => node[:event_store][:host],
    'port' => node[:event_store][:http_port]
  )
end

file "/opt/obsidian/account-service/settings/read_model.json" do
  content JSON.pretty_generate(
    'postgresConnection' => {
      'database' => node[:read_model][:database],
      'host' => node[:read_model][:host],
      'password' => node[:read_model][:password],
      'username' => node[:read_model][:username]
    }
  )
end

file "/opt/obsidian/account-service/settings/health.json" do
  content JSON.pretty_generate(
    'port' => health_check_port
  )
end

runit_service "account-service" do
  default_logger true
end

obsidian_component_health_check "account-service" do
  port health_check_port
end

Expected Result:

Historically this has worked fine - we have used this strategy to deploy our services for over a year, but as the number of services has grown, we're starting to see this. This recipe should have just configured a runit_service to run.

Actual Result:

Logs are here: https://gist.github.com/litch/a4b1c7a7d4cbc57c58c0ee503811fa45

The resource just keeps invoking itself recursively it seems. =/

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type: BugDoes not work as expected.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions