mirror of https://github.com/jimsalterjrs/sanoid
make script timeout configureable
This commit is contained in:
parent
a7b7fe8d15
commit
a8d5c5652a
16
sanoid
16
sanoid
|
|
@ -302,11 +302,10 @@ sub prune_snapshots {
|
|||
my $dataset = (split '@', $snap)[0];
|
||||
my $snapname = (split '@', $snap)[1];
|
||||
if ($config{$dataset}{'pruning_script'}) {
|
||||
my $timeout = 5;
|
||||
$ENV{'SANOID_TARGET'} = $dataset;
|
||||
$ENV{'SANOID_SNAPNAME'} = $snapname;
|
||||
if ($args{'verbose'}) { print "executing pruning_script '".$config{$dataset}{'pruning_script'}."' on dataset '$dataset'\n"; }
|
||||
my $ret = runscript('pruning_script',$dataset,$timeout);
|
||||
my $ret = runscript('pruning_script',$dataset);
|
||||
|
||||
delete $ENV{'SANOID_TARGET'};
|
||||
delete $ENV{'SANOID_SNAPNAME'};
|
||||
|
|
@ -475,7 +474,7 @@ sub take_snapshots {
|
|||
$ENV{'SANOID_TARGET'} = $dataset;
|
||||
$ENV{'SANOID_SNAPNAME'} = $snapname;
|
||||
if ($args{'verbose'}) { print "executing pre_snapshot_script '".$config{$dataset}{'pre_snapshot_script'}."' on dataset '$dataset'\n"; }
|
||||
my $ret = runscript('pre_snapshot_script',$dataset,$timeout);
|
||||
my $ret = runscript('pre_snapshot_script',$dataset);
|
||||
|
||||
delete $ENV{'SANOID_TARGET'};
|
||||
delete $ENV{'SANOID_SNAPNAME'};
|
||||
|
|
@ -498,7 +497,7 @@ sub take_snapshots {
|
|||
$ENV{'SANOID_TARGET'} = $dataset;
|
||||
$ENV{'SANOID_SNAPNAME'} = $snapname;
|
||||
if ($args{'verbose'}) { print "executing post_snapshot_script '".$config{$dataset}{'post_snapshot_script'}."' on dataset '$dataset'\n"; }
|
||||
runscript('post_snapshot_script',$dataset,$timeout);
|
||||
runscript('post_snapshot_script',$dataset);
|
||||
|
||||
delete $ENV{'SANOID_TARGET'};
|
||||
delete $ENV{'SANOID_SNAPNAME'};
|
||||
|
|
@ -1358,12 +1357,15 @@ sub removecachedsnapshots {
|
|||
sub runscript {
|
||||
my $key=shift;
|
||||
my $dataset=shift;
|
||||
my $timeout=shift;
|
||||
|
||||
my $timeout=$config{$dataset}{'script_timeout'};
|
||||
|
||||
my $ret;
|
||||
eval {
|
||||
local $SIG{ALRM} = sub { die "alarm\n" };
|
||||
alarm $timeout;
|
||||
if ($timeout gt 0) {
|
||||
local $SIG{ALRM} = sub { die "alarm\n" };
|
||||
alarm $timeout;
|
||||
}
|
||||
$ret = system($config{$dataset}{$key});
|
||||
alarm 0;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -74,12 +74,14 @@
|
|||
### run script after snapshot
|
||||
### dataset name will be supplied as an environment variable $SANOID_TARGET
|
||||
post_snapshot_script = /path/to/script.sh
|
||||
### dataset name will be supplied as an environment variable $SANOID_TARGET
|
||||
pruning_script = /path/to/script.sh
|
||||
### don't take an inconsistent snapshot
|
||||
#no_inconsistent_snapshot = yes
|
||||
### run post_snapshot_script when pre_snapshot_script is failing
|
||||
#force_post_snapshot_script = yes
|
||||
### dataset name will be supplied as an environment variable $SANOID_TARGET
|
||||
pruning_script = /path/to/script.sh
|
||||
### limit allowed execution time of scripts before continuing (<= 0 -> infinite)
|
||||
script_timeout = 5
|
||||
|
||||
[template_ignore]
|
||||
autoprune = no
|
||||
|
|
|
|||
|
|
@ -17,9 +17,10 @@ use_template =
|
|||
process_children_only =
|
||||
pre_snapshot_script =
|
||||
post_snapshot_script =
|
||||
pruning_script =
|
||||
script_timeout = 5
|
||||
no_inconsistent_snapshot =
|
||||
force_post_snapshot_script =
|
||||
pruning_script =
|
||||
|
||||
# If any snapshot type is set to 0, we will not take snapshots for it - and will immediately
|
||||
# prune any of those type snapshots already present.
|
||||
|
|
|
|||
Loading…
Reference in New Issue