diff --git a/manifests/init.pp b/manifests/init.pp index 0fb4b87a..17c6e2ee 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -43,6 +43,16 @@ # every 30 seconds. # Defaults to $::os_service_default. # +# [*rabbit_heartbeat_in_pthread*] +# (Optional) EXPERIMENTAL: Run the health check heartbeat thread +# through a native python thread. By default if this +# option isn't provided the health check heartbeat will +# inherit the execution model from the parent process. By +# example if the parent process have monkey patched the +# stdlib by using eventlet/greenlet then the heartbeat +# will be run through a green thread. +# Defaults to $::os_service_default +# # [*rabbit_use_ssl*] # (Optional) Connect over SSL for RabbitMQ. # Defaults to $::os_service_default. @@ -286,6 +296,7 @@ class heat( $rabbit_ha_queues = $::os_service_default, $rabbit_heartbeat_timeout_threshold = $::os_service_default, $rabbit_heartbeat_rate = $::os_service_default, + $rabbit_heartbeat_in_pthread = $::os_service_default, $rabbit_use_ssl = $::os_service_default, $kombu_ssl_ca_certs = $::os_service_default, $kombu_ssl_certfile = $::os_service_default, @@ -373,6 +384,7 @@ class heat( kombu_compression => $kombu_compression, heartbeat_timeout_threshold => $rabbit_heartbeat_timeout_threshold, heartbeat_rate => $rabbit_heartbeat_rate, + heartbeat_in_pthread => $rabbit_heartbeat_in_pthread, rabbit_use_ssl => $rabbit_use_ssl, amqp_durable_queues => $amqp_durable_queues, rabbit_ha_queues => $rabbit_ha_queues, diff --git a/releasenotes/notes/rabbitmq-heartbeat-over-pthread-9a435ea40182f0be.yaml b/releasenotes/notes/rabbitmq-heartbeat-over-pthread-9a435ea40182f0be.yaml new file mode 100644 index 00000000..496d2279 --- /dev/null +++ b/releasenotes/notes/rabbitmq-heartbeat-over-pthread-9a435ea40182f0be.yaml @@ -0,0 +1,6 @@ +--- +features: + - | + Allow users to run the RabbitMQ heartbeat over a native python thread in the + oslo.messaging RabbitMQ driver, by using the `rabbit_heartbeat_in_pthread` + option in configuration. diff --git a/spec/classes/heat_init_spec.rb b/spec/classes/heat_init_spec.rb index 4c929270..7af78c2c 100644 --- a/spec/classes/heat_init_spec.rb +++ b/spec/classes/heat_init_spec.rb @@ -34,7 +34,8 @@ describe 'heat' do context 'with rabbit heartbeat configured' do before { params.merge!( :rabbit_heartbeat_timeout_threshold => '60', - :rabbit_heartbeat_rate => '10' ) } + :rabbit_heartbeat_rate => '10', + :rabbit_heartbeat_in_pthread => true ) } it_configures 'a heat base installation' it_configures 'rabbit with heartbeat configured' end @@ -160,6 +161,7 @@ describe 'heat' do is_expected.to contain_heat_config('oslo_messaging_rabbit/kombu_compression').with_value('') is_expected.to contain_heat_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('') is_expected.to contain_heat_config('oslo_messaging_rabbit/heartbeat_rate').with_value('') + is_expected.to contain_heat_config('oslo_messaging_rabbit/heartbeat_in_pthread').with_value('') is_expected.to contain_oslo__messaging__rabbit('heat_config').with( :rabbit_use_ssl => '', :kombu_ssl_ca_certs => '', @@ -198,6 +200,7 @@ describe 'heat' do end it { is_expected.to contain_heat_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('60') } it { is_expected.to contain_heat_config('oslo_messaging_rabbit/heartbeat_rate').with_value('10') } + it { is_expected.to contain_heat_config('oslo_messaging_rabbit/heartbeat_in_pthread').with_value(true) } end shared_examples_for 'with SSL enabled with kombu' do