From ac632c541d3186fcfd73d8a6ee5b3866cf440bb6 Mon Sep 17 00:00:00 2001
From: Philipp Schmidt <philipp.schmidt@xfel.eu>
Date: Wed, 10 Apr 2024 13:17:27 +0200
Subject: [PATCH] Copy file before injection and delete copy if it fails

---
 src/cal_tools/constants.py | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/cal_tools/constants.py b/src/cal_tools/constants.py
index a5052a1e2..82cbcc85b 100644
--- a/src/cal_tools/constants.py
+++ b/src/cal_tools/constants.py
@@ -184,15 +184,17 @@ def inject_ccv(const_src, ccv_root, report_to):
         }
     }
 
-    resp = CalibrationClient.inject_new_calibration_constant_version(calibration_client(), inject_h)
-
-    if not resp['success']:
-        raise RuntimeError(resp)
-
     const_dest = _get_default_caldb_root() / const_rel_path / const_filename
     const_dest.parent.mkdir(parents=True, exist_ok=True)
     copyfile(const_src, const_dest)
 
+    resp = CalibrationClient.inject_new_calibration_constant_version(
+        calibration_client(), inject_h)
+
+    if not resp['success']:
+        const_dest.unlink()  # Delete already copied CCV file.
+        raise RuntimeError(resp)
+
 
 def inject_ccv_legacy(in_folder, metadata_folder, runs, calibration, cond,
                       pdu, const_input, begin_at):
-- 
GitLab