feat(FILE_ARCHIVER): Enhance archival and restoration procedures with additional status handling and debug logging

This commit is contained in:
Grzegorz Michalski
2026-03-26 20:02:58 +01:00
parent 06a233030e
commit 5bb955b858

View File

@@ -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');