From e6e2a9f3b3ad9ad040d95b0591ca4631199d9f7d Mon Sep 17 00:00:00 2001
From: Tanner Prestegard <tanner.prestegard@ligo.org>
Date: Tue, 9 Apr 2019 08:39:47 -0500
Subject: [PATCH] Add error handling to log creation with files

We've had some bad cases where a log entry is created, but the
file is not saved due to filesystem errors. So we put the file
creation in a try-except block and if it fails, delete the log
message that was just created before re-raising the exception.
---
 gracedb/superevents/utils.py | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/gracedb/superevents/utils.py b/gracedb/superevents/utils.py
index ce71bfb19..8b38d75a3 100644
--- a/gracedb/superevents/utils.py
+++ b/gracedb/superevents/utils.py
@@ -231,8 +231,13 @@ def create_log(issuer, comment, event_or_superevent, filename="",
 
     # Create versioned file
     if data_file:
-        version = create_versioned_file(filename, event_or_superevent.datadir,
-            data_file)
+        try:
+            version = create_versioned_file(filename,
+                event_or_superevent.datadir, data_file)
+        except Exception as e:
+            # If creating the file fails, we want to delete the log entry
+            log.delete()
+            raise e
 
         # Update file_version
         log.file_version = version
-- 
GitLab