Hi everyone,
I'm running into a funny issue, using a files promise to clean up files
older than 30 days, that seems to catch very recent files (less than a
few minutes old), or possibly files that are undergoing modifications as
CFEngine runs.
Here are my promises:
bundle clean_www_archives {
files:
"/var/www/archives/"
delete => tidy, # from cfengine_stdlib.cf
file_select => date_pattern("30",
"rudder-sources-.*~git[0-9]{12}\.tar\.bz2"),
depth_search => recurse("inf"),
classes => kept_if_else("archives_clean_ok",
"archives_clean_repaired", "archives_clean_failed";
reports:
archives_clean_repaired:
"/var/www/archives/ has been put in conformity with the
deletion policy";
}
body file_select date_pattern(age, pattern)
{
mtime => irange(ago(0,0,"$(age)",0,0,0), now);
leaf_name => { "$(pattern)" };
file_result => "leaf_name.!mtime";
}
I know that a file was created named
rudder-sources-2.4.0~alpha6~git201203040139.tar.bz2 at 01:39 on
04/03/2012 (the file handily has it's creation time in the name, very
helpful in debugging this issue!). This is a reasonable sized archive,
and can take several minutes to be filled, so we could assume that it's
being written to continuously between 01:39 and 01:39+several minutes.
During this time period, cf-agent is run, and I note this in the logs:
Mar 4 01:41:25 jenkins cfengine[15847]: R: /var/www/archives/ has been put in
conformity with the deletion policy
Needless to say, the file has then disappeared (I know it was created
because I have logs from the script that creates it to confirm that).
Other files, identically named apart from the date-time component, are
correctly handled (those younger than 30 days are kept, those older
removed).
Is it possible that CFEngine calculates "now" on startup, and the file
is modified after that but before CFEngine checks it, and therefore
CFEngine is thinking "oh this file is not between now and 30 days, it's
newer, so I'll delete it"? Has anyone encountered something similar? Or,
more importantly, does anyone have an idea for a workaround?
In case it's relevant, this is cf-agent 3.2.0.
Thanks for your help!
Jonathan
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine