mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-11-01 02:57:02 +08:00
fix: handle unique constraint violation error gracefully (#1202)
This commit is contained in:
@ -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")]
|
||||||
|
|||||||
Reference in New Issue
Block a user