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 "############################"
 }