mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-10-31 18:17:13 +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
	 Manoj Ghorela
					Manoj Ghorela