From 3b9fcc48e677afcd7ca6a8b6d7449cbd9ce3ada6 Mon Sep 17 00:00:00 2001
From: Alan De Smet <alan.desmet@ssec.wisc.edu>
Date: Fri, 12 May 2023 09:29:33 -0500
Subject: [PATCH] Fix bug; add lockfile to cleaning

it's help=, not description=
---
 example/aitf-clean-temporal | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/example/aitf-clean-temporal b/example/aitf-clean-temporal
index e4898ae..914e0ac 100755
--- a/example/aitf-clean-temporal
+++ b/example/aitf-clean-temporal
@@ -25,6 +25,7 @@ import logging
 import aitf.ancil
 import aitf.conlog
 import csppfetch
+from csppfetch.exclusivelockfile import PIDLockFile
 
 
 def parse_args():
@@ -58,7 +59,7 @@ def parse_args():
     TEMPORAL_CACHE_ENV = 'CSPP_GEO_AITF_TEMPORAL_CACHE'
     TEMPORAL_DEFAULT = os.environ.get(TEMPORAL_CACHE_ENV, TEMPORAL_INVALID)
     ap.add_argument("temporal-dir", metavar = "DIR", nargs='?',
-        description = f'temporal directory to clean (default: environment variable {TEMPORAL_CACHE_ENV}',
+        help = f'temporal directory to clean (default: environment variable {TEMPORAL_CACHE_ENV}',
         default=TEMPORAL_DEFAULT)
 
     subgroup = ap.add_mutually_exclusive_group()
@@ -106,12 +107,16 @@ def main():
     if not args.keep_old:
         from datetime import datetime
         stats = csppfetch.CleaningStats()
-        csppfetch.delete_old_files(args.temporal_dir+"/L1b", args.oldest, stats)
-        csppfetch.delete_old_files(args.temporal_dir+"/L2",  args.oldest, stats)
-        if args.want_summary:
-            sys.stdout.write('Expiring Old Data Summary\n')
-            sys.stdout.write(f'    Removed {stats.num_deleted} files totaling {stats.size_deleted} bytes\n')
-            sys.stdout.write(f'    Kept {stats.num_kept} files totaling {stats.size_kept} bytes\n')
+        with PIDLockFile(args.temporal_dir+"cleaning-process.pid") as has_lock:
+            if has_lock:
+                csppfetch.delete_old_files(args.temporal_dir+"/L1b", args.oldest, stats)
+                csppfetch.delete_old_files(args.temporal_dir+"/L2",  args.oldest, stats)
+                if args.want_summary:
+                    sys.stdout.write('Expiring Old Data Summary\n')
+                    sys.stdout.write(f'    Removed {stats.num_deleted} files totaling {stats.size_deleted} bytes\n')
+                    sys.stdout.write(f'    Kept {stats.num_kept} files totaling {stats.size_kept} bytes\n')
+            else: # No lock
+                sys.stdout.write("Cleaning skipped; another process is already doing so.")
 
     return 0
 
-- 
GitLab