fix: handle unique constraint violation error gracefully (#1202)

This commit is contained in:
Manoj Ghorela
2023-05-18 22:49:10 +05:30
committed by GitHub
parent 2d49ce56de
commit b3fd174d04

View File

@ -1,4 +1,6 @@
use common_utils::generate_id_with_default_len; use common_utils::generate_id_with_default_len;
#[cfg(feature = "basilisk")]
use error_stack::report;
use error_stack::{IntoReport, ResultExt}; use error_stack::{IntoReport, ResultExt};
#[cfg(feature = "basilisk")] #[cfg(feature = "basilisk")]
use external_services::kms; use external_services::kms;
@ -648,7 +650,7 @@ pub async fn add_delete_tokenized_data_task(
db: &dyn db::StorageInterface, db: &dyn db::StorageInterface,
lookup_key: &str, lookup_key: &str,
pm: enums::PaymentMethod, pm: enums::PaymentMethod,
) -> RouterResult<storage::ProcessTracker> { ) -> RouterResult<()> {
let runner = "DELETE_TOKENIZE_DATA_WORKFLOW"; let runner = "DELETE_TOKENIZE_DATA_WORKFLOW";
let current_time = common_utils::date_time::now(); let current_time = common_utils::date_time::now();
let tracking_data = serde_json::to_value(storage::TokenizeCoreWorkflow { let tracking_data = serde_json::to_value(storage::TokenizeCoreWorkflow {
@ -676,14 +678,14 @@ pub async fn add_delete_tokenized_data_task(
created_at: current_time, created_at: current_time,
updated_at: current_time, updated_at: current_time,
}; };
let response = db let response = db.insert_process(process_tracker_entry).await;
.insert_process(process_tracker_entry) response.map(|_| ()).or_else(|err| {
.await if err.current_context().is_db_unique_violation() {
.change_context(errors::ApiErrorResponse::InternalServerError) Ok(())
.attach_printable_lazy(|| { } else {
format!("Failed while inserting task in process_tracker: lookup_key: {lookup_key}") Err(report!(errors::ApiErrorResponse::InternalServerError))
})?; }
Ok(response) })
} }
#[cfg(feature = "basilisk")] #[cfg(feature = "basilisk")]