From b8c9b51f2915a658ef6707cac39896af0ceb0ad8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Pocrnji=C4=8D?= Date: Wed, 17 Dec 2025 20:51:31 +0100 Subject: [PATCH] test --- app/Services/ImportProcessor.php | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/app/Services/ImportProcessor.php b/app/Services/ImportProcessor.php index 7bc7eb3..0194b02 100644 --- a/app/Services/ImportProcessor.php +++ b/app/Services/ImportProcessor.php @@ -217,7 +217,23 @@ public function process(Import $import, ?Authenticatable $user = null): array if ($isPg) { // Establish a savepoint so a failing row does not poison the whole transaction - DB::statement('SAVEPOINT import_row_'.$rowNum); + try { + DB::statement('SAVEPOINT import_row_'.$rowNum); + } catch (\Throwable $se) { + ImportEvent::create([ + 'import_id' => $import->id, + 'user_id' => $user?->getAuthIdentifier(), + 'event' => 'savepoint_failed', + 'level' => 'error', + 'message' => 'Failed to create savepoint; transaction already aborted.', + 'context' => [ + 'row_number' => $rowNum, + 'exception' => $this->exceptionContext($se), + ], + ]); + + throw $se; // abort import so root cause surfaces + } } // Scope variables per row so they aren't reused after exception