From 5bb955b8588bfd187cf1298ee47c5f59ae013ed4 Mon Sep 17 00:00:00 2001 From: Grzegorz Michalski Date: Thu, 26 Mar 2026 20:02:58 +0100 Subject: [PATCH] feat(FILE_ARCHIVER): Enhance archival and restoration procedures with additional status handling and debug logging --- .../MARS-1409/new_version/FILE_ARCHIVER.pkb | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/MARS_Packages/REL02_POST/MARS-1409/new_version/FILE_ARCHIVER.pkb b/MARS_Packages/REL02_POST/MARS-1409/new_version/FILE_ARCHIVER.pkb index 3c4ca96..af84cf5 100644 --- a/MARS_Packages/REL02_POST/MARS-1409/new_version/FILE_ARCHIVER.pkb +++ b/MARS_Packages/REL02_POST/MARS-1409/new_version/FILE_ARCHIVER.pkb @@ -285,8 +285,9 @@ AS ,PARTITION_MONTH = ym_loop.month -- Record which partition month the data was archived to WHERE r.a_source_file_config_key= pSourceFileConfigKey AND r.source_file_name = f.filename - AND r.processing_status = 'INGESTED' + AND r.processing_status IN ('INGESTED', 'READY_FOR_INGESTION') -- READY_FOR_INGESTION for IS_WORKFLOW_SUCCESS_REQUIRED='N' sources ; + CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('Status updated to ARCHIVED_AND_TRASHED: ' || SQL%ROWCOUNT || ' row(s) for file: ' || f.filename, 'DEBUG', vParameters); EXCEPTION WHEN OTHERS THEN CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT(CT_MRDS.ENV_MANAGER.GET_ERROR_STACK(pFormat => 'TABLE', pCode=> SQLCODE), 'ERROR', vParameters); @@ -358,11 +359,18 @@ AS CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('File restored from TRASH folder: '||f.pathname||'/'||f.filename,'DEBUG', vParameters); UPDATE CT_MRDS.A_SOURCE_FILE_RECEIVED r - SET PROCESSING_STATUS = 'INGESTED' + -- Restore to original pre-archival status: + -- IS_WORKFLOW_SUCCESS_REQUIRED='Y' → INGESTED (standard DBT flow) + -- IS_WORKFLOW_SUCCESS_REQUIRED='N' → READY_FOR_INGESTION (manual/non-DBT sources) + SET PROCESSING_STATUS = CASE WHEN vSourceFileConfig.IS_WORKFLOW_SUCCESS_REQUIRED = 'N' + THEN 'READY_FOR_INGESTION' + ELSE 'INGESTED' + END ,ARCH_PATH = NULL WHERE r.a_source_file_config_key = pSourceFileConfigKey AND r.source_file_name = f.filename ; + CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('ROLLBACK: Status restored to ' || CASE WHEN vSourceFileConfig.IS_WORKFLOW_SUCCESS_REQUIRED = 'N' THEN 'READY_FOR_INGESTION' ELSE 'INGESTED' END || ': ' || SQL%ROWCOUNT || ' row(s) for file: ' || f.filename, 'DEBUG', vParameters); EXCEPTION WHEN OTHERS THEN @@ -681,6 +689,7 @@ AS WHERE A_SOURCE_FILE_RECEIVED_KEY = pSourceFileReceivedKey AND PROCESSING_STATUS = 'ARCHIVED_AND_TRASHED'; vFilesUpdated := SQL%ROWCOUNT; + CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('Status updated to INGESTED (restore L3): ' || vFilesUpdated || ' row(s)', 'DEBUG', vParameters); ELSIF pSourceFileConfigKey IS NOT NULL THEN vRestoreLevel := 'LEVEL_2_CONFIG_FILES'; @@ -722,6 +731,7 @@ AS WHERE A_SOURCE_FILE_CONFIG_KEY = pSourceFileConfigKey AND PROCESSING_STATUS = 'ARCHIVED_AND_TRASHED'; vFilesUpdated := SQL%ROWCOUNT; + CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('Status updated to INGESTED (restore L2): ' || vFilesUpdated || ' row(s)', 'DEBUG', vParameters); ELSIF pRestoreAll THEN vRestoreLevel := 'LEVEL_1_GLOBAL_RESTORE'; @@ -761,6 +771,7 @@ AS PARTITION_MONTH = NULL WHERE PROCESSING_STATUS = 'ARCHIVED_AND_TRASHED'; vFilesUpdated := SQL%ROWCOUNT; + CT_MRDS.ENV_MANAGER.LOG_PROCESS_EVENT('Status updated to INGESTED (restore L1 global): ' || vFilesUpdated || ' row(s)', 'DEBUG', vParameters); ELSE RAISE_APPLICATION_ERROR(-20104, 'No restore level specified. Provide pSourceFileReceivedKey, pSourceFileConfigKey, or set pRestoreAll=TRUE');