From 0eee3612073a76ecba8e61e66793aecf5804087f Mon Sep 17 00:00:00 2001 From: Hugo Deprez Date: Fri, 14 Feb 2025 15:46:50 +0100 Subject: [PATCH 01/18] add new config key --- templates/redis.conf.epp | 42 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/templates/redis.conf.epp b/templates/redis.conf.epp index a2a27f56..9741f0ad 100644 --- a/templates/redis.conf.epp +++ b/templates/redis.conf.epp @@ -32,6 +32,7 @@ Boolean $repl_disable_tcp_nodelay, String[1] $repl_backlog_size, Integer[0] $repl_backlog_ttl, + Variant[Boolean, Enum["yes", "no"]] $repl_diskless_sync, Integer[0] $slave_priority, Integer[0] $min_slaves_to_write, Integer[0] $min_slaves_max_lag, @@ -51,6 +52,7 @@ Integer[-1] $slowlog_log_slower_than, Integer[0] $slowlog_max_len, Integer[0] $latency_monitor_threshold, + Boolean $latency_tracking, Optional[String[1]] $notify_keyspace_events, Integer[0] $hash_max_ziplist_entries, Integer[0] $hash_max_ziplist_value, @@ -566,6 +568,36 @@ slave-priority <%= $slave_priority %> min-slaves-to-write <%= $min_slaves_to_write %> min-slaves-max-lag <%= $min_slaves_max_lag %> +# Replication SYNC strategy: disk or socket. +# +# New replicas and reconnecting replicas that are not able to continue the +# replication process just receiving differences, need to do what is called a +# "full synchronization". An RDB file is transmitted from the master to the +# replicas. +# +# The transmission can happen in two different ways: +# +# 1) Disk-backed: The Redis master creates a new process that writes the RDB +# file on disk. Later the file is transferred by the parent +# process to the replicas incrementally. +# 2) Diskless: The Redis master creates a new process that directly writes the +# RDB file to replica sockets, without touching the disk at all. +# +# With disk-backed replication, while the RDB file is generated, more replicas +# can be queued and served with the RDB file as soon as the current child +# producing the RDB file finishes its work. With diskless replication instead +# once the transfer starts, new replicas arriving will be queued and a new +# transfer will start when the current one terminates. +# +# When diskless replication is used, the master waits a configurable amount of +# time (in seconds) before starting the transfer in the hope that multiple +# replicas will arrive and the transfer can be parallelized. +# +# With slow disks and fast (large bandwidth) networks, diskless replication +# works better. +repl-diskless-sync <%= $repl_diskless_sync %> + + ################################## SECURITY ################################### # Require clients to issue AUTH before processing any other @@ -849,6 +881,16 @@ slowlog-max-len <%= $slowlog_max_len %> # "CONFIG SET latency-monitor-threshold " if needed. latency-monitor-threshold <%= $latency_monitor_threshold %> +################################ LATENCY TRACKING ############################## + +# The Redis extended latency monitoring tracks the per command latencies and enables +# exporting the percentile distribution via the INFO latencystats command, +# and cumulative latency distributions (histograms) via the LATENCY command. +# +# By default, the extended latency monitoring is enabled since the overhead +# of keeping track of the command latency is very small. +latency-tracking <%= $latency_tracking %> + ############################# Event notification ############################## # Redis can notify Pub/Sub clients about events happening in the key space. From 0155c333c7b65ae5e8fe8c99ca28f880c910c352 Mon Sep 17 00:00:00 2001 From: Hugo Deprez Date: Fri, 14 Feb 2025 16:09:12 +0100 Subject: [PATCH 02/18] add parameters --- manifests/init.pp | 6 ++++++ manifests/instance.pp | 6 ++++++ spec/classes/redis_spec.rb | 28 ++++++++++++++++++++++++++++ templates/redis.conf.epp | 2 +- 4 files changed, 41 insertions(+), 1 deletion(-) diff --git a/manifests/init.pp b/manifests/init.pp index c401aced..ef6f806d 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -77,6 +77,8 @@ # Set redis background tasks frequency # @param latency_monitor_threshold # Latency monitoring threshold in milliseconds +# @param latency_tracking +# Latency monitoring enabled # @param list_max_ziplist_entries # Set max ziplist entries for lists. # @param list_max_ziplist_value @@ -160,6 +162,8 @@ # The replication backlog size # @param repl_backlog_ttl # The number of seconds to elapse before freeing backlog buffer +# @param repl_diskless_sync +# Enable/disable diskless replication # @param repl_disable_tcp_nodelay # Enable/disable TCP_NODELAY on the slave socket after SYNC # @param repl_ping_slave_period @@ -387,6 +391,7 @@ Integer[0] $hll_sparse_max_bytes = 3000, Integer[1, 500] $hz = 10, Integer[0] $latency_monitor_threshold = 0, + Boolean $latency_tracking = yes, Integer[0] $list_max_ziplist_entries = 512, Integer[0] $list_max_ziplist_value = 64, Stdlib::Absolutepath $log_dir = $redis::params::log_dir, @@ -427,6 +432,7 @@ Optional[Stdlib::Port] $repl_announce_port = undef, String[1] $repl_backlog_size = '1mb', Integer[0] $repl_backlog_ttl = 3600, + Boolean $repl_diskless_sync = yes, Boolean $repl_disable_tcp_nodelay = false, Integer[1] $repl_ping_slave_period = 10, Integer[1] $repl_timeout = 60, diff --git a/manifests/instance.pp b/manifests/instance.pp index 95b45dda..37c5e0d3 100644 --- a/manifests/instance.pp +++ b/manifests/instance.pp @@ -56,6 +56,8 @@ # Set redis background tasks frequency # @param latency_monitor_threshold # Latency monitoring threshold in milliseconds +# @param latency_tracking +# Latency monitoring enabled # @param list_max_ziplist_entries # Set max ziplist entries for lists. # @param list_max_ziplist_value @@ -113,6 +115,8 @@ # The replication backlog size # @param repl_backlog_ttl # The number of seconds to elapse before freeing backlog buffer +# @param repl_diskless_sync +# Enable/disable diskless replication # @param repl_disable_tcp_nodelay # Enable/disable TCP_NODELAY on the slave socket after SYNC # @param repl_ping_slave_period @@ -321,6 +325,7 @@ Integer[0] $hll_sparse_max_bytes = $redis::hll_sparse_max_bytes, Integer[1, 500] $hz = $redis::hz, Integer[0] $latency_monitor_threshold = $redis::latency_monitor_threshold, + Boolean $latency_tracking = $redis::latency_tracking, Integer[0] $list_max_ziplist_entries = $redis::list_max_ziplist_entries, Integer[0] $list_max_ziplist_value = $redis::list_max_ziplist_value, Stdlib::Absolutepath $log_dir = $redis::log_dir, @@ -346,6 +351,7 @@ Optional[Stdlib::Port] $repl_announce_port = $redis::repl_announce_port, String[1] $repl_backlog_size = $redis::repl_backlog_size, Integer[0] $repl_backlog_ttl = $redis::repl_backlog_ttl, + Boolean $repl_diskless_sync = $redis::repl_diskless_sync, Boolean $repl_disable_tcp_nodelay = $redis::repl_disable_tcp_nodelay, Integer[1] $repl_ping_slave_period = $redis::repl_ping_slave_period, Integer[1] $repl_timeout = $redis::repl_timeout, diff --git a/spec/classes/redis_spec.rb b/spec/classes/redis_spec.rb index d70ded32..d1ebd5c4 100644 --- a/spec/classes/redis_spec.rb +++ b/spec/classes/redis_spec.rb @@ -756,6 +756,20 @@ class { 'redis': } end + describe 'with parameter latency_tracking' do + let(:params) do + { + latency_tracking: yes + } + end + + it { + is_expected.to contain_file(config_file_orig).with( + 'content' => %r{^latency-tracking yes$} + ) + } + end + describe 'with parameter rdbcompression' do let(:params) do { @@ -841,6 +855,20 @@ class { 'redis': } end + describe 'with parameter repl_diskless_sync' do + let(:params) do + { + repl_diskless_sync: yes + } + end + + it { + is_expected.to contain_file(config_file_orig).with( + 'content' => %r{^repl-diskless-sync yes$} + ) + } + end + describe 'with parameter repl_disable_tcp_nodelay' do let(:params) do { diff --git a/templates/redis.conf.epp b/templates/redis.conf.epp index 9741f0ad..3c4369d3 100644 --- a/templates/redis.conf.epp +++ b/templates/redis.conf.epp @@ -32,7 +32,7 @@ Boolean $repl_disable_tcp_nodelay, String[1] $repl_backlog_size, Integer[0] $repl_backlog_ttl, - Variant[Boolean, Enum["yes", "no"]] $repl_diskless_sync, + Boolean $repl_diskless_sync, Integer[0] $slave_priority, Integer[0] $min_slaves_to_write, Integer[0] $min_slaves_max_lag, From e6c9c1de259269d8acd84baa1e8ed8b5ef975105 Mon Sep 17 00:00:00 2001 From: Hugo Deprez Date: Fri, 14 Feb 2025 16:19:22 +0100 Subject: [PATCH 03/18] add parameters --- REFERENCE.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/REFERENCE.md b/REFERENCE.md index c86b60e4..ba039577 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -465,6 +465,14 @@ Latency monitoring threshold in milliseconds Default value: `0` +##### `latency_tracking` + +Data type: `Boolean` + +Enable or disable latency tracking + +Default value: `yes` + ##### `list_max_ziplist_entries` Data type: `Integer[0]` @@ -794,6 +802,14 @@ The number of seconds to elapse before freeing backlog buffer Default value: `3600` +##### `repl_diskless_sync` + +Data type: `Integer[0]` + +The number of seconds to elapse before freeing backlog buffer + +Default value: `3600` + ##### `repl_disable_tcp_nodelay` Data type: `Boolean` From 25b82348a9f60435c4bf1da96e35cd9807e8b6ec Mon Sep 17 00:00:00 2001 From: Hugo Deprez Date: Fri, 14 Feb 2025 16:19:41 +0100 Subject: [PATCH 04/18] add parameters --- REFERENCE.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/REFERENCE.md b/REFERENCE.md index ba039577..029d5eff 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -804,11 +804,11 @@ Default value: `3600` ##### `repl_diskless_sync` -Data type: `Integer[0]` +Data type: `Boolean` -The number of seconds to elapse before freeing backlog buffer +Replication SYNC strategy: disk or socket. -Default value: `3600` +Default value: `yes` ##### `repl_disable_tcp_nodelay` From 2c468477d2f112c86ad7054ccceb0b802b894c67 Mon Sep 17 00:00:00 2001 From: Hugo Deprez Date: Fri, 14 Feb 2025 16:22:57 +0100 Subject: [PATCH 05/18] update table parameters --- REFERENCE.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/REFERENCE.md b/REFERENCE.md index 029d5eff..4dc4d81b 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -113,6 +113,7 @@ The following parameters are available in the `redis` class: * [`hll_sparse_max_bytes`](#-redis--hll_sparse_max_bytes) * [`hz`](#-redis--hz) * [`latency_monitor_threshold`](#-redis--latency_monitor_threshold) +* [`latency_tracking`](#-redis--latency_tracking) * [`list_max_ziplist_entries`](#-redis--list_max_ziplist_entries) * [`list_max_ziplist_value`](#-redis--list_max_ziplist_value) * [`log_dir`](#-redis--log_dir) @@ -154,6 +155,7 @@ The following parameters are available in the `redis` class: * [`repl_announce_port`](#-redis--repl_announce_port) * [`repl_backlog_size`](#-redis--repl_backlog_size) * [`repl_backlog_ttl`](#-redis--repl_backlog_ttl) +* [`repl_diskless_sync`](#-redis--repl_diskless_sync) * [`repl_disable_tcp_nodelay`](#-redis--repl_disable_tcp_nodelay) * [`repl_ping_slave_period`](#-redis--repl_ping_slave_period) * [`repl_timeout`](#-redis--repl_timeout) From 443912c80fa6c6ea5b16ee2587c5d987351c6a8c Mon Sep 17 00:00:00 2001 From: Hugo Deprez Date: Mon, 24 Feb 2025 17:29:21 +0100 Subject: [PATCH 06/18] revert --- REFERENCE.md | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/REFERENCE.md b/REFERENCE.md index 4dc4d81b..82b40779 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -113,7 +113,6 @@ The following parameters are available in the `redis` class: * [`hll_sparse_max_bytes`](#-redis--hll_sparse_max_bytes) * [`hz`](#-redis--hz) * [`latency_monitor_threshold`](#-redis--latency_monitor_threshold) -* [`latency_tracking`](#-redis--latency_tracking) * [`list_max_ziplist_entries`](#-redis--list_max_ziplist_entries) * [`list_max_ziplist_value`](#-redis--list_max_ziplist_value) * [`log_dir`](#-redis--log_dir) @@ -155,7 +154,6 @@ The following parameters are available in the `redis` class: * [`repl_announce_port`](#-redis--repl_announce_port) * [`repl_backlog_size`](#-redis--repl_backlog_size) * [`repl_backlog_ttl`](#-redis--repl_backlog_ttl) -* [`repl_diskless_sync`](#-redis--repl_diskless_sync) * [`repl_disable_tcp_nodelay`](#-redis--repl_disable_tcp_nodelay) * [`repl_ping_slave_period`](#-redis--repl_ping_slave_period) * [`repl_timeout`](#-redis--repl_timeout) @@ -467,14 +465,6 @@ Latency monitoring threshold in milliseconds Default value: `0` -##### `latency_tracking` - -Data type: `Boolean` - -Enable or disable latency tracking - -Default value: `yes` - ##### `list_max_ziplist_entries` Data type: `Integer[0]` @@ -804,14 +794,6 @@ The number of seconds to elapse before freeing backlog buffer Default value: `3600` -##### `repl_diskless_sync` - -Data type: `Boolean` - -Replication SYNC strategy: disk or socket. - -Default value: `yes` - ##### `repl_disable_tcp_nodelay` Data type: `Boolean` @@ -3243,4 +3225,3 @@ Executes a redis-cli command on the target system Data type: `String[1]` The command to run, including all arguments - From e2e39683953583343fbccefd0f7dd625b61f9120 Mon Sep 17 00:00:00 2001 From: Hugo Deprez Date: Mon, 24 Feb 2025 17:30:50 +0100 Subject: [PATCH 07/18] revert --- REFERENCE.md | 1 + 1 file changed, 1 insertion(+) diff --git a/REFERENCE.md b/REFERENCE.md index 82b40779..c86b60e4 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -3225,3 +3225,4 @@ Executes a redis-cli command on the target system Data type: `String[1]` The command to run, including all arguments + From b66e642a86e3c7bd8eddb9144bb98dbffe0d9031 Mon Sep 17 00:00:00 2001 From: Hugo Deprez Date: Mon, 24 Feb 2025 17:35:59 +0100 Subject: [PATCH 08/18] update reference --- REFERENCE.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/REFERENCE.md b/REFERENCE.md index c86b60e4..0ab0343e 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -113,6 +113,7 @@ The following parameters are available in the `redis` class: * [`hll_sparse_max_bytes`](#-redis--hll_sparse_max_bytes) * [`hz`](#-redis--hz) * [`latency_monitor_threshold`](#-redis--latency_monitor_threshold) +* [`latency_tracking`](#-redis--latency_tracking) * [`list_max_ziplist_entries`](#-redis--list_max_ziplist_entries) * [`list_max_ziplist_value`](#-redis--list_max_ziplist_value) * [`log_dir`](#-redis--log_dir) @@ -154,6 +155,7 @@ The following parameters are available in the `redis` class: * [`repl_announce_port`](#-redis--repl_announce_port) * [`repl_backlog_size`](#-redis--repl_backlog_size) * [`repl_backlog_ttl`](#-redis--repl_backlog_ttl) +* [`repl_diskless_sync`](#-redis--repl_diskless_sync) * [`repl_disable_tcp_nodelay`](#-redis--repl_disable_tcp_nodelay) * [`repl_ping_slave_period`](#-redis--repl_ping_slave_period) * [`repl_timeout`](#-redis--repl_timeout) @@ -465,6 +467,14 @@ Latency monitoring threshold in milliseconds Default value: `0` +##### `latency_tracking` + +Data type: `Boolean` + +Latency monitoring enabled + +Default value: `yes` + ##### `list_max_ziplist_entries` Data type: `Integer[0]` @@ -794,6 +804,14 @@ The number of seconds to elapse before freeing backlog buffer Default value: `3600` +##### `repl_diskless_sync` + +Data type: `Boolean` + +Enable/disable diskless replication + +Default value: `yes` + ##### `repl_disable_tcp_nodelay` Data type: `Boolean` @@ -2000,6 +2018,7 @@ The following parameters are available in the `redis::instance` defined type: * [`hll_sparse_max_bytes`](#-redis--instance--hll_sparse_max_bytes) * [`hz`](#-redis--instance--hz) * [`latency_monitor_threshold`](#-redis--instance--latency_monitor_threshold) +* [`latency_tracking`](#-redis--instance--latency_tracking) * [`list_max_ziplist_entries`](#-redis--instance--list_max_ziplist_entries) * [`list_max_ziplist_value`](#-redis--instance--list_max_ziplist_value) * [`log_dir`](#-redis--instance--log_dir) @@ -2028,6 +2047,7 @@ The following parameters are available in the `redis::instance` defined type: * [`repl_announce_port`](#-redis--instance--repl_announce_port) * [`repl_backlog_size`](#-redis--instance--repl_backlog_size) * [`repl_backlog_ttl`](#-redis--instance--repl_backlog_ttl) +* [`repl_diskless_sync`](#-redis--instance--repl_diskless_sync) * [`repl_disable_tcp_nodelay`](#-redis--instance--repl_disable_tcp_nodelay) * [`repl_ping_slave_period`](#-redis--instance--repl_ping_slave_period) * [`repl_timeout`](#-redis--instance--repl_timeout) @@ -2293,6 +2313,14 @@ Latency monitoring threshold in milliseconds Default value: `$redis::latency_monitor_threshold` +##### `latency_tracking` + +Data type: `Boolean` + +Latency monitoring enabled + +Default value: `$redis::latency_tracking` + ##### `list_max_ziplist_entries` Data type: `Integer[0]` @@ -2518,6 +2546,14 @@ The number of seconds to elapse before freeing backlog buffer Default value: `$redis::repl_backlog_ttl` +##### `repl_diskless_sync` + +Data type: `Boolean` + +Enable/disable diskless replication + +Default value: `$redis::repl_diskless_sync` + ##### `repl_disable_tcp_nodelay` Data type: `Boolean` From b94d04996f966e4b268ac180c78c929933b27d7c Mon Sep 17 00:00:00 2001 From: Hugo Deprez Date: Tue, 25 Feb 2025 15:53:53 +0100 Subject: [PATCH 09/18] switch to boolean --- manifests/init.pp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manifests/init.pp b/manifests/init.pp index ef6f806d..aa8bdc16 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -391,7 +391,7 @@ Integer[0] $hll_sparse_max_bytes = 3000, Integer[1, 500] $hz = 10, Integer[0] $latency_monitor_threshold = 0, - Boolean $latency_tracking = yes, + Boolean $latency_tracking = true, Integer[0] $list_max_ziplist_entries = 512, Integer[0] $list_max_ziplist_value = 64, Stdlib::Absolutepath $log_dir = $redis::params::log_dir, @@ -432,7 +432,7 @@ Optional[Stdlib::Port] $repl_announce_port = undef, String[1] $repl_backlog_size = '1mb', Integer[0] $repl_backlog_ttl = 3600, - Boolean $repl_diskless_sync = yes, + Boolean $repl_diskless_sync = true, Boolean $repl_disable_tcp_nodelay = false, Integer[1] $repl_ping_slave_period = 10, Integer[1] $repl_timeout = 60, From 28d55e39f758745e67d4993999becbc7ff4431d6 Mon Sep 17 00:00:00 2001 From: Hugo Deprez Date: Tue, 25 Feb 2025 15:57:21 +0100 Subject: [PATCH 10/18] regenerate doc --- REFERENCE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/REFERENCE.md b/REFERENCE.md index 0ab0343e..486a65c4 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -473,7 +473,7 @@ Data type: `Boolean` Latency monitoring enabled -Default value: `yes` +Default value: `true` ##### `list_max_ziplist_entries` @@ -810,7 +810,7 @@ Data type: `Boolean` Enable/disable diskless replication -Default value: `yes` +Default value: `true` ##### `repl_disable_tcp_nodelay` From 97e84e1e7bda35e24bbac93cc866f54801d97f47 Mon Sep 17 00:00:00 2001 From: Hugo Deprez Date: Tue, 25 Feb 2025 16:47:56 +0100 Subject: [PATCH 11/18] fix template --- templates/redis.conf.epp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/templates/redis.conf.epp b/templates/redis.conf.epp index 3c4369d3..5f544b95 100644 --- a/templates/redis.conf.epp +++ b/templates/redis.conf.epp @@ -595,8 +595,7 @@ min-slaves-max-lag <%= $min_slaves_max_lag %> # # With slow disks and fast (large bandwidth) networks, diskless replication # works better. -repl-diskless-sync <%= $repl_diskless_sync %> - +repl-diskless-sync <%= bool2str($repl-diskless-sync, 'yes', 'no') -%> ################################## SECURITY ################################### @@ -889,7 +888,7 @@ latency-monitor-threshold <%= $latency_monitor_threshold %> # # By default, the extended latency monitoring is enabled since the overhead # of keeping track of the command latency is very small. -latency-tracking <%= $latency_tracking %> +latency-tracking <%= bool2str($latency-tracking, 'yes', 'no') -%> ############################# Event notification ############################## From e32c501fc9ef12b772373e5df0c57100e32ea50e Mon Sep 17 00:00:00 2001 From: Hugo Deprez Date: Thu, 27 Feb 2025 17:07:59 +0100 Subject: [PATCH 12/18] update ci test --- spec/classes/redis_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/classes/redis_spec.rb b/spec/classes/redis_spec.rb index d1ebd5c4..99920d25 100644 --- a/spec/classes/redis_spec.rb +++ b/spec/classes/redis_spec.rb @@ -759,7 +759,7 @@ class { 'redis': describe 'with parameter latency_tracking' do let(:params) do { - latency_tracking: yes + latency_tracking: true } end @@ -858,7 +858,7 @@ class { 'redis': describe 'with parameter repl_diskless_sync' do let(:params) do { - repl_diskless_sync: yes + repl_diskless_sync: true } end From 45405c199215a3510e6ca4bf224a94ebf2bd04f8 Mon Sep 17 00:00:00 2001 From: Hugo Deprez Date: Thu, 27 Feb 2025 17:14:39 +0100 Subject: [PATCH 13/18] pass parameters to template --- manifests/instance.pp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/manifests/instance.pp b/manifests/instance.pp index 37c5e0d3..702443de 100644 --- a/manifests/instance.pp +++ b/manifests/instance.pp @@ -539,6 +539,7 @@ repl_disable_tcp_nodelay => $repl_disable_tcp_nodelay, repl_backlog_size => $repl_backlog_size, repl_backlog_ttl => $repl_backlog_ttl, + repl_diskless_sync => $repl_diskless_sync, slave_priority => $slave_priority, min_slaves_to_write => $min_slaves_to_write, min_slaves_max_lag => $min_slaves_max_lag, @@ -558,6 +559,7 @@ slowlog_log_slower_than => $slowlog_log_slower_than, slowlog_max_len => $slowlog_max_len, latency_monitor_threshold => $latency_monitor_threshold, + latency_tracking => $latency_tracking, notify_keyspace_events => $notify_keyspace_events, hash_max_ziplist_entries => $hash_max_ziplist_entries, hash_max_ziplist_value => $hash_max_ziplist_value, From 33e098c4feeb0fc5806bde23df7247f239314ce1 Mon Sep 17 00:00:00 2001 From: Hugo Deprez Date: Thu, 27 Feb 2025 17:22:14 +0100 Subject: [PATCH 14/18] fix var naming --- templates/redis.conf.epp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/redis.conf.epp b/templates/redis.conf.epp index 5f544b95..58a8aa3c 100644 --- a/templates/redis.conf.epp +++ b/templates/redis.conf.epp @@ -595,7 +595,7 @@ min-slaves-max-lag <%= $min_slaves_max_lag %> # # With slow disks and fast (large bandwidth) networks, diskless replication # works better. -repl-diskless-sync <%= bool2str($repl-diskless-sync, 'yes', 'no') -%> +repl-diskless-sync <%= bool2str($repl_diskless_sync, 'yes', 'no') -%> ################################## SECURITY ################################### @@ -888,7 +888,7 @@ latency-monitor-threshold <%= $latency_monitor_threshold %> # # By default, the extended latency monitoring is enabled since the overhead # of keeping track of the command latency is very small. -latency-tracking <%= bool2str($latency-tracking, 'yes', 'no') -%> +latency-tracking <%= bool2str($latency_tracking, 'yes', 'no') -%> ############################# Event notification ############################## From d03182b6ac6f2e867460472e592dd71c4adbf5a4 Mon Sep 17 00:00:00 2001 From: Hugo Deprez Date: Thu, 27 Feb 2025 18:08:25 +0100 Subject: [PATCH 15/18] manage parameter for redis 7.x --- templates/redis.conf.epp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/templates/redis.conf.epp b/templates/redis.conf.epp index 58a8aa3c..46bf0f02 100644 --- a/templates/redis.conf.epp +++ b/templates/redis.conf.epp @@ -595,7 +595,9 @@ min-slaves-max-lag <%= $min_slaves_max_lag %> # # With slow disks and fast (large bandwidth) networks, diskless replication # works better. +<%- if Integer($facts['redis_server_version'].split('.')[0]) > 7 -%> repl-diskless-sync <%= bool2str($repl_diskless_sync, 'yes', 'no') -%> +<%- end -%> ################################## SECURITY ################################### @@ -888,7 +890,9 @@ latency-monitor-threshold <%= $latency_monitor_threshold %> # # By default, the extended latency monitoring is enabled since the overhead # of keeping track of the command latency is very small. +<%- if Integer($facts['redis_server_version'].split('.')[0]) > 7 -%> latency-tracking <%= bool2str($latency_tracking, 'yes', 'no') -%> +<%- end -%> ############################# Event notification ############################## From 214edfb6b842fef0bf8eb1f743b9512923e33539 Mon Sep 17 00:00:00 2001 From: Hugo Deprez Date: Fri, 28 Feb 2025 11:10:22 +0100 Subject: [PATCH 16/18] debug template --- templates/redis.conf.epp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/templates/redis.conf.epp b/templates/redis.conf.epp index 46bf0f02..7efd7704 100644 --- a/templates/redis.conf.epp +++ b/templates/redis.conf.epp @@ -595,9 +595,9 @@ min-slaves-max-lag <%= $min_slaves_max_lag %> # # With slow disks and fast (large bandwidth) networks, diskless replication # works better. -<%- if Integer($facts['redis_server_version'].split('.')[0]) > 7 -%> +<%- if versioncmp($facts['redis_server_version'], '7.0.0') >= 0 { -%> repl-diskless-sync <%= bool2str($repl_diskless_sync, 'yes', 'no') -%> -<%- end -%> +<%- } -%> ################################## SECURITY ################################### @@ -890,9 +890,9 @@ latency-monitor-threshold <%= $latency_monitor_threshold %> # # By default, the extended latency monitoring is enabled since the overhead # of keeping track of the command latency is very small. -<%- if Integer($facts['redis_server_version'].split('.')[0]) > 7 -%> +<%- if versioncmp($facts['redis_server_version'], '7.0.0') >= 0 { -%> latency-tracking <%= bool2str($latency_tracking, 'yes', 'no') -%> -<%- end -%> +<%- } -%> ############################# Event notification ############################## From 28eef117e9423fbf031d1f825f4b66c43b2a6c81 Mon Sep 17 00:00:00 2001 From: Hugo Deprez Date: Thu, 6 Mar 2025 15:51:40 +0100 Subject: [PATCH 17/18] debug epp --- templates/redis.conf.epp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/redis.conf.epp b/templates/redis.conf.epp index 7efd7704..becd558b 100644 --- a/templates/redis.conf.epp +++ b/templates/redis.conf.epp @@ -890,9 +890,9 @@ latency-monitor-threshold <%= $latency_monitor_threshold %> # # By default, the extended latency monitoring is enabled since the overhead # of keeping track of the command latency is very small. -<%- if versioncmp($facts['redis_server_version'], '7.0.0') >= 0 { -%> +<% if versioncmp($facts['redis_server_version'], '7.0.0') >= 0 { %> latency-tracking <%= bool2str($latency_tracking, 'yes', 'no') -%> -<%- } -%> +<% } %> ############################# Event notification ############################## From 71e1098d18030576e0237f3ad2a934b3c7fb5abf Mon Sep 17 00:00:00 2001 From: Hugo Deprez Date: Thu, 6 Mar 2025 17:55:47 +0100 Subject: [PATCH 18/18] debug epp --- manifests/instance.pp | 4 ++++ templates/redis.conf.epp | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/manifests/instance.pp b/manifests/instance.pp index 702443de..47c3ccb7 100644 --- a/manifests/instance.pp +++ b/manifests/instance.pp @@ -505,6 +505,9 @@ $bind_arr = [$bind].flatten + $default_redis_version = '8.0.0' + $redis_version = $facts.get('redis_server_version', $instance::default_version_var) + $_template_params = { daemonize => $daemonize, pid_file => $pid_file, @@ -611,6 +614,7 @@ rdb_save_incremental_fsync => $rdb_save_incremental_fsync, acls => $acls, custom_options => $custom_options, + redis_version => $redis_version, } # TODO: Rely on https://github.com/puppetlabs/puppetlabs-stdlib/pull/1425 diff --git a/templates/redis.conf.epp b/templates/redis.conf.epp index becd558b..6a2c8c54 100644 --- a/templates/redis.conf.epp +++ b/templates/redis.conf.epp @@ -104,6 +104,7 @@ Optional[Boolean] $rdb_save_incremental_fsync, Array[String[1]] $acls, Hash[String[1],Variant[String[1], Integer]] $custom_options, + String[1] $redis_version | -%> # Redis configuration file example @@ -595,7 +596,7 @@ min-slaves-max-lag <%= $min_slaves_max_lag %> # # With slow disks and fast (large bandwidth) networks, diskless replication # works better. -<%- if versioncmp($facts['redis_server_version'], '7.0.0') >= 0 { -%> +<%- if versioncmp($redis_version, '7.0.0') >= 0 { -%> repl-diskless-sync <%= bool2str($repl_diskless_sync, 'yes', 'no') -%> <%- } -%> @@ -890,7 +891,7 @@ latency-monitor-threshold <%= $latency_monitor_threshold %> # # By default, the extended latency monitoring is enabled since the overhead # of keeping track of the command latency is very small. -<% if versioncmp($facts['redis_server_version'], '7.0.0') >= 0 { %> +<% if versioncmp($redis_version, '7.0.0') >= 0 { %> latency-tracking <%= bool2str($latency_tracking, 'yes', 'no') -%> <% } %>