diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/trove-gc | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/bin/trove-gc b/bin/trove-gc new file mode 100755 index 0000000..82545f5 --- /dev/null +++ b/bin/trove-gc @@ -0,0 +1,50 @@ +#!/bin/sh +# +# Trove garbage collection script +# +# Copyright (C) 2014 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +# This is a rudimentary garbage collector for Trove instances. It wraps the +# `morph gc` command. +# +# Artifacts older than 1 week will be deleted, and artifacts less than 1 day +# old will not be. Age is calculated from mtime, which is set at the time the +# artifact is uploaded to the cache and after that is not updated by any Trove +# components. +# +# Morph's default `cachedir-min-space` value is taken as the amount of space +# to free. Pass --cachedir-min-space to this command to specify your own value. +# +# `morph gc` is designed for running on build machines so it expects there to +# be a tempdir. A harmless side-effect of this script is that you'll get some +# pointless directories created in /tmp/trove-gc-fake-tempdir. +# +# The 'remove all artifacts older than xx' rule is effectively disabled, to +# prevent artifacts that are still needed but do not change often (such as +# stage1 and stage2 of the bootstrap) from being automatically deleted. Those +# artifacts will still be first to be removed in a low disk space condition, +# which is an unfortunate consequence of the simple heuristic we are using +# right now. + +set -eu + +/usr/bin/morph gc --no-default-config \ + --cachedir=/home/cache \ + --cachedir-artifact-delete-older-than=31557600000 \ + --cachedir-artifact-keep-younger-than=86400 \ + --tempdir=/tmp/trove-gc-fake-tempdir \ + --tempdir-min-space=0M \ + "$@" |