Forum: Cfengine Help Subject: Re: cf_lock.db gets bigger and bigger Author: Lars.O Link to topic: https://cfengine.com/forum/read.php?3,19875,20099#msg-20099
Thanks for the db_dump command, very useful :-) I have now managed to isolate promises which causes cf_lock.db to grow indefinitely. And as you say Mark, this is a case of promises that changes. I'm pretty sure I've seen it also with non changing promises, but this is the first one I found which survives a fresh restart. What I do to test is that I stop cf-execd, delete /var/cfengine/outputs/* and /var/cfengine/state/*, reboot the server, restart cf-execd and monitor cf_lock.db. I use the following promises.cf and script which it calls (sorry for the long entry): #################### promises.cf ####################### ########################################################## body common control { #bundlesequence => { "executor" }; bundlesequence => { "executor", "outputs" }; } ########################################################## body executor control { exec_command => "/var/cfengine/bin/cf-agent"; splaytime => "0"; schedule => { "Min00", "Min02", "Min04", "Min06", "Min08", "Min10", "Min12", "Min14", "Min16", "Min18", "Min20", "Min22", "Min24", "Min26", "Min28", "Min30", "Min32", "Min34", "Min36", "Min38", "Min40", "Min42", "Min44", "Min46", "Min48", "Min50", "Min52", "Min54", "Min56", "Min58" }; } ########################################################## bundle agent executor { processes: "/var/cfengine/bin/cf-execd" comment => "Start cf-execd if no such process running (less than 1 found).", process_count => no_of_procs ("0", "0", "start_cfexecd" ); "/var/cfengine/bin/cf-execd" comment => "Kill all cf-execd and restart one if more than one running (more than 1 found).", process_count => no_of_procs ("2", "99999", "kill_cfexecd" ); commands: "/usr/bin/at -f /var/cfengine/CfengineData/HostInfo/dbout.sh now + 1 minute", comment => "Keep track of database size."; start_cfexecd:: "/var/cfengine/bin/cf-execd"; kill_cfexecd:: "/usr/bin/pkill -f /var/cfengine/bin/cf-execd"; "/var/cfengine/bin/cf-execd"; } ########################################################## body process_count no_of_procs (no1, no2, class) { match_range => irange ( "$(no1)", "$(no2)" ); in_range_define => { "$(class)" }; } ########################################################## bundle agent outputs { files: "/var/cfengine/outputs/.*" # action => immediate, delete => tidy_1, file_select => tidy_2; } ########################################################## # body action immediate { # ifelapsed => "0"; # action_policy => "fix"; } ########################################################## body delete tidy_1 { rmdirs => "false"; } ########################################################## body file_select tidy_2 { leaf_name => { "cf_.*" }; mtime => irange ( ago ( 0, 0, 0, 0, 10, 0 ), "9999999999" ); # mtime => irange ( ago ( 0, 0, 0, 0, 10, 0 ), now ); file_result => "leaf_name.!mtime"; } #file_result => "leaf_name.(!mtime)"; } #file_result => "leaf_name!mtime"; } ################## End of promises.cf ########################## ############# /var/cfengine/CfengineData/HostInfo/dbout.sh ########## #!/bin/sh # This script is used only for keeping track of changes in database size. WhoAmI=`hostname | cut -d"." -f1` LogFile=/var/cfengine/CfengineData/HostInfo/${WhoAmI}.dbout Date=`date +"%Y-%m-%d %H:%M.%S"` if [ ! -f ${LogFile} ]; then OldValue=0; else OldValue=`tail -1 ${LogFile} | awk '{print $3}'` fi if [ -x /var/cfengine/runtime/bdb/bin/db_dump ]; then NewValue=`/var/cfengine/runtime/bdb/bin/db_dump -p /var/cfengine/state/cf_lock.db | wc -l` Comment="lines" else NewValue=`ls -l /var/cfengine/state/cf_lock.* | awk '{print $5}'` Comment="bytes" fi if [ ${NewValue} -ne ${OldValue} ]; then echo ${Date} ${NewValue} ${Comment} >> ${LogFile} if [ "${Comment}" = "lines" ]; then echo ${Date} >> ${LogFile}.contents /var/cfengine/runtime/bdb/bin/db_dump -p /var/cfengine/state/cf_lock.db >> ${LogFile}.contents echo "" >> ${LogFile}.contents fi fi ############# End of /var/cfengine/CfengineData/HostInfo/dbout.sh ################### After the first three runs, db_dump shows the following: 2011-01-13 10:33.01 VERSION=3 format=print type=btree db_pagesize=4096 HEADER=END last.exec_apoptosis.processes.signals.process_select.process_owner.ifelapsed.process_count.-hplnx004.proc__var_cfengine_bin_cf_execd_norestart_3085_MD5=f791afa9801f41f79d0565eb9c16b53a\00 x\1e\00\00\83\c6.M last.executor.commands.comment.-hplnx004._usr_bin_at__f__var_cfengine_CfengineData_HostInfo_dbout_sh_now___1_minute_3857_MD5=ec06d844689977c14ffdae8e478c66ae\00 \cf\1e\00\00\bf\c6.M last.executor.processes.comment.process_count.match_range.in_range_define.-hplnx004.proc__var_cfengine_bin_cf_execd_norestart_3579_MD5=735ab2063a2672d0bfbae52e75e01b97\00 \cf\1e\00\00\bf\c6.M last.executor.processes.comment.process_count.match_range.in_range_define.-hplnx004.proc__var_cfengine_bin_cf_execd_norestart_3579_MD5=db98d36c14cca69388c4ac6770479af7\00 \cf\1e\00\00\bf\c6.M last.internal_bundle.exec_cfengine.handle.-hplnx004.the_executor_agent_6177_MD5=1c510be2939d47ba8c35625ffe9b3ced\00 x\1e\00\00\83\c6.M last.outputs.files.delete.rmdirs.file_select.leaf_name.mtime.-hplnx004._var_cfengine_outputs_cf_hplnx004_mo_sw_ericsson_se__1294911167_DAY_MON_13_10_32_47_2011__6bcb90_3782_MD5=cde8ebf3cae689fe58c412b6f0efda1f\00 \cf\1e\00\00\c0\c6.M lock.internal_bundle.exec_cfengine.handle.-hplnx004.the_executor_agent_6177_MD5=1c510be2939d47ba8c35625ffe9b3ced\00 x\1e\00\00\83\c6.M DATA=END 2011-01-13 10:35.01 VERSION=3 format=print type=btree db_pagesize=4096 HEADER=END last.exec_apoptosis.processes.signals.process_select.process_owner.ifelapsed.process_count.-hplnx004.proc__var_cfengine_bin_cf_execd_norestart_3085_MD5=f791afa9801f41f79d0565eb9c16b53a\00 x\1e\00\00\83\c6.M last.executor.commands.comment.-hplnx004._usr_bin_at__f__var_cfengine_CfengineData_HostInfo_dbout_sh_now___1_minute_3857_MD5=ec06d844689977c14ffdae8e478c66ae\00 &\1f\00\007\c7.M last.executor.processes.comment.process_count.match_range.in_range_define.-hplnx004.proc__var_cfengine_bin_cf_execd_norestart_3579_MD5=735ab2063a2672d0bfbae52e75e01b97\00 &\1f\00\007\c7.M last.executor.processes.comment.process_count.match_range.in_range_define.-hplnx004.proc__var_cfengine_bin_cf_execd_norestart_3579_MD5=db98d36c14cca69388c4ac6770479af7\00 &\1f\00\007\c7.M last.internal_bundle.exec_cfengine.handle.-hplnx004.the_executor_agent_6177_MD5=1c510be2939d47ba8c35625ffe9b3ced\00 x\1e\00\00\83\c6.M last.outputs.files.delete.rmdirs.file_select.leaf_name.mtime.-hplnx004._var_cfengine_outputs_cf_hplnx004_mo_sw_ericsson_se__1294911167_DAY_MON_13_10_32_47_2011__6bcb90_3782_MD5=cde8ebf3cae689fe58c412b6f0efda1f\00 &\1f\00\008\c7.M last.outputs.files.delete.rmdirs.file_select.leaf_name.mtime.-hplnx004._var_cfengine_outputs_cf_hplnx004_mo_sw_ericsson_se__1294911287_DAY_MON_13_10_34_47_2011__6bcb90_1490_MD5=01c969dfd00c8b0fd2670a3b42f0f504\00 &\1f\00\008\c7.M lock.internal_bundle.exec_cfengine.handle.-hplnx004.the_executor_agent_6177_MD5=1c510be2939d47ba8c35625ffe9b3ced\00 x\1e\00\00\83\c6.M DATA=END 2011-01-13 10:37.01 VERSION=3 format=print type=btree db_pagesize=4096 HEADER=END last.exec_apoptosis.processes.signals.process_select.process_owner.ifelapsed.process_count.-hplnx004.proc__var_cfengine_bin_cf_execd_norestart_3085_MD5=f791afa9801f41f79d0565eb9c16b53a\00 x\1e\00\00\83\c6.M last.executor.commands.comment.-hplnx004._usr_bin_at__f__var_cfengine_CfengineData_HostInfo_dbout_sh_now___1_minute_3857_MD5=ec06d844689977c14ffdae8e478c66ae\00 \81 \00\00\af\c7.M last.executor.processes.comment.process_count.match_range.in_range_define.-hplnx004.proc__var_cfengine_bin_cf_execd_norestart_3579_MD5=735ab2063a2672d0bfbae52e75e01b97\00 \81 \00\00\af\c7.M last.executor.processes.comment.process_count.match_range.in_range_define.-hplnx004.proc__var_cfengine_bin_cf_execd_norestart_3579_MD5=db98d36c14cca69388c4ac6770479af7\00 \81 \00\00\af\c7.M last.internal_bundle.exec_cfengine.handle.-hplnx004.the_executor_agent_6177_MD5=1c510be2939d47ba8c35625ffe9b3ced\00 x\1e\00\00\83\c6.M last.outputs.files.delete.rmdirs.file_select.leaf_name.mtime.-hplnx004._var_cfengine_outputs_cf_hplnx004_mo_sw_ericsson_se__1294911167_DAY_MON_13_10_32_47_2011__6bcb90_3782_MD5=cde8ebf3cae689fe58c412b6f0efda1f\00 \81 \00\00\b0\c7.M last.outputs.files.delete.rmdirs.file_select.leaf_name.mtime.-hplnx004._var_cfengine_outputs_cf_hplnx004_mo_sw_ericsson_se__1294911287_DAY_MON_13_10_34_47_2011__6bcb90_1490_MD5=01c969dfd00c8b0fd2670a3b42f0f504\00 \81 \00\00\b0\c7.M last.outputs.files.delete.rmdirs.file_select.leaf_name.mtime.-hplnx004._var_cfengine_outputs_cf_hplnx004_mo_sw_ericsson_se__1294911407_DAY_MON_13_10_36_47_2011__6bcb90_4699_MD5=5ffe358412f240bed22d2329fd7cb41c\00 \81 \00\00\b0\c7.M lock.internal_bundle.exec_cfengine.handle.-hplnx004.the_executor_agent_6177_MD5=1c510be2939d47ba8c35625ffe9b3ced\00 x\1e\00\00\83\c6.M DATA=END As you can see there are two lines added for every new file in .../outputs every time Cfengine runs. And these are never deleted. Also long after ther files have been deleted, the entries in cf_lock.db are still there. _______________________________________________ Help-cfengine mailing list Help-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/help-cfengine