Support tuning batch size of DB purge operation
The heat-manage purge_deleted command supports customizing batch size, number of stacks to delete by a single transaction. This change adds the new parameter to customize the parameter. Change-Id: Id980c6f975f22baa305d3cd84378c98b3e9f84f2
This commit is contained in:
parent
f267f9a1d8
commit
ec9c6317ff
@ -46,6 +46,10 @@
|
|||||||
# (optional) Path to file to which rows should be archived
|
# (optional) Path to file to which rows should be archived
|
||||||
# Defaults to '/var/log/heat/heat-purge_deleted.log'.
|
# Defaults to '/var/log/heat/heat-purge_deleted.log'.
|
||||||
#
|
#
|
||||||
|
# [*batch_size*]
|
||||||
|
# (optional) Number of stacks to delete at a time (per transaction).
|
||||||
|
# Defaults to undef.
|
||||||
|
#
|
||||||
class heat::cron::purge_deleted (
|
class heat::cron::purge_deleted (
|
||||||
$ensure = present,
|
$ensure = present,
|
||||||
$minute = 1,
|
$minute = 1,
|
||||||
@ -57,7 +61,8 @@ class heat::cron::purge_deleted (
|
|||||||
$user = $::heat::params::user,
|
$user = $::heat::params::user,
|
||||||
$age = 1,
|
$age = 1,
|
||||||
$age_type = 'days',
|
$age_type = 'days',
|
||||||
$destination = '/var/log/heat/heat-purge_deleted.log'
|
$destination = '/var/log/heat/heat-purge_deleted.log',
|
||||||
|
$batch_size = undef,
|
||||||
) inherits heat::params {
|
) inherits heat::params {
|
||||||
|
|
||||||
if ! member(['days', 'hours', 'minutes', 'seconds'], $age_type) {
|
if ! member(['days', 'hours', 'minutes', 'seconds'], $age_type) {
|
||||||
@ -70,9 +75,15 @@ class heat::cron::purge_deleted (
|
|||||||
$sleep = "sleep `expr \${RANDOM} \\% ${maxdelay}`; "
|
$sleep = "sleep `expr \${RANDOM} \\% ${maxdelay}`; "
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if $batch_size != undef {
|
||||||
|
$batch_size_opt = "-b ${batch_size} "
|
||||||
|
} else {
|
||||||
|
$batch_size_opt = ''
|
||||||
|
}
|
||||||
|
|
||||||
cron { 'heat-manage purge_deleted':
|
cron { 'heat-manage purge_deleted':
|
||||||
ensure => $ensure,
|
ensure => $ensure,
|
||||||
command => "${sleep}heat-manage purge_deleted -g ${age_type} ${age} >>${destination} 2>&1",
|
command => "${sleep}heat-manage purge_deleted -g ${age_type} ${age} ${batch_size_opt}>>${destination} 2>&1",
|
||||||
environment => 'PATH=/bin:/usr/bin:/usr/sbin SHELL=/bin/sh',
|
environment => 'PATH=/bin:/usr/bin:/usr/sbin SHELL=/bin/sh',
|
||||||
user => $user,
|
user => $user,
|
||||||
minute => $minute,
|
minute => $minute,
|
||||||
|
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
The ``heat::cron::purge_deleted`` class now supports customizing batch size
|
||||||
|
of the purge operation.
|
@ -64,6 +64,29 @@ describe 'heat::cron::purge_deleted' do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe 'when batch_size is set' do
|
||||||
|
before :each do
|
||||||
|
params.merge!(
|
||||||
|
:batch_size => 100
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'disables the cron job' do
|
||||||
|
is_expected.to contain_cron('heat-manage purge_deleted').with(
|
||||||
|
:ensure => params[:ensure],
|
||||||
|
:command => "heat-manage purge_deleted -g days 1 -b #{params[:batch_size]} >>#{params[:destination]} 2>&1",
|
||||||
|
:environment => 'PATH=/bin:/usr/bin:/usr/sbin SHELL=/bin/sh',
|
||||||
|
:user => 'heat',
|
||||||
|
:minute => params[:minute],
|
||||||
|
:hour => params[:hour],
|
||||||
|
:monthday => params[:monthday],
|
||||||
|
:month => params[:month],
|
||||||
|
:weekday => params[:weekday],
|
||||||
|
:require => 'Anchor[heat::dbsync::end]'
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe 'when disabling cron job' do
|
describe 'when disabling cron job' do
|
||||||
before :each do
|
before :each do
|
||||||
params.merge!(
|
params.merge!(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user