Clean up old garbage before GC
Check for the existence of:
- incoming files
- keep files
- tmp files
And delete them if they are older than configured number of seconds
Change-Id: Ie088e5a2abf3150d60c5974e8f00f1c55d7510e5
diff --git a/maintenance/git-gc/scripts/utils.sh b/maintenance/git-gc/scripts/utils.sh
index 51f1abc..8ce4bb6 100755
--- a/maintenance/git-gc/scripts/utils.sh
+++ b/maintenance/git-gc/scripts/utils.sh
@@ -8,6 +8,9 @@
PRUNE_EXPIRE=${PRUNE_EXPIRE:-""}
PRUNE_PACK_EXPIRE=${PRUNE_PACK_EXPIRE:-""}
GC_LOCK_EXPIRE_SECONDS=${GC_LOCK_EXPIRE_SECONDS:-"43200"} # 12 hours
+INCOMING_EXPIRE_SECONDS=${INCOMING_EXPIRE_SECONDS:-"43200"} # 12 hours
+KEEP_EXPIRE_SECONDS=${KEEP_EXPIRE_SECONDS:-"43200"} # 12 hours
+TMP_EXPIRE_SECONDS=${TMP_EXPIRE_SECONDS:-"43200"} # 12 hours
MAX_HEADS_FOR_BITMAPS=${MAX_HEADS_FOR_BITMAPS:-"300"}
function gc_project {
@@ -23,6 +26,7 @@
log_env
print_stats "$proj" "before"
+ do_clean_up "$proj"
do_gc "$proj"
print_stats "$proj" "after"
@@ -164,6 +168,24 @@
fi
}
+function do_clean_up() {
+ proj=$1
+ log_project "$proj" "Checking incoming files older than $INCOMING_EXPIRE_SECONDS seconds"
+ delete_if_older_than "$INCOMING_EXPIRE_SECONDS" "incoming_*"
+
+ log_project "$proj" "Checking keep files older than $KEEP_EXPIRE_SECONDS seconds"
+ delete_if_older_than "$KEEP_EXPIRE_SECONDS" "*.keep"
+
+ log_project "$proj" "Checking tmp files older than $TMP_EXPIRE_SECONDS seconds"
+ delete_if_older_than "$TMP_EXPIRE_SECONDS" "*_tmp"
+}
+
+function delete_if_older_than() {
+ secondsAgo=$1
+ matchName=$2
+ find . -type f -name "$matchName" -not -newermt "-$secondsAgo seconds" -print -delete
+}
+
function log_env() {
log "######## ENVIRONMENT ########"
log "# GC_PROJECT_LIST=${GC_PROJECT_LIST}"
@@ -177,6 +199,9 @@
log "# JAVA_ARGS=${JAVA_ARGS}"
log "# GC_LOCK_EXPIRE_SECONDS=${GC_LOCK_EXPIRE_SECONDS}"
log "# MAX_HEADS_FOR_BITMAPS=${MAX_HEADS_FOR_BITMAPS}"
+ log "# INCOMING_EXPIRE_SECONDS=${INCOMING_EXPIRE_SECONDS}"
+ log "# KEEP_EXPIRE_SECONDS=${KEEP_EXPIRE_SECONDS}"
+ log "# TMP_EXPIRE_SECONDS=${TMP_EXPIRE_SECONDS}"
log "############################"
}