File tree Expand file tree Collapse file tree 2 files changed +45
-20
lines changed Expand file tree Collapse file tree 2 files changed +45
-20
lines changed Original file line number Diff line number Diff line change @@ -218,15 +218,30 @@ fn update_transaction_manager_status<T>(
218218 instrumentation : & mut DynInstrumentation ,
219219 query : & dyn DebugQuery ,
220220) -> QueryResult < T > {
221- if let Err ( Error :: DatabaseError ( DatabaseErrorKind :: SerializationFailure , _) ) = query_result {
222- transaction_manager
223- . status
224- . set_requires_rollback_maybe_up_to_top_level ( true )
221+ fn non_generic_inner (
222+ query_result : Result < ( ) , & Error > ,
223+ transaction_manager : & mut AnsiTransactionManager ,
224+ instrumentation : & mut DynInstrumentation ,
225+ query : & dyn DebugQuery ,
226+ ) {
227+ if let Err ( Error :: DatabaseError ( DatabaseErrorKind :: SerializationFailure , _) ) = query_result
228+ {
229+ transaction_manager
230+ . status
231+ . set_requires_rollback_maybe_up_to_top_level ( true )
232+ }
233+ instrumentation. on_connection_event ( InstrumentationEvent :: FinishQuery {
234+ query,
235+ error : query_result. err ( ) ,
236+ } ) ;
225237 }
226- instrumentation. on_connection_event ( InstrumentationEvent :: FinishQuery {
238+
239+ non_generic_inner (
240+ query_result. as_ref ( ) . map ( |_| ( ) ) ,
241+ transaction_manager,
242+ instrumentation,
227243 query,
228- error : query_result. as_ref ( ) . err ( ) ,
229- } ) ;
244+ ) ;
230245 query_result
231246}
232247
Original file line number Diff line number Diff line change @@ -332,20 +332,30 @@ fn update_transaction_manager_status<T>(
332332 }
333333 }
334334 }
335- non_generic_inner ( conn, query_result. is_err ( ) ) ;
336- if let Err ( ref e) = query_result {
337- conn. instrumentation
338- . on_connection_event ( InstrumentationEvent :: FinishQuery {
339- query : source,
340- error : Some ( e) ,
341- } ) ;
342- } else if final_call {
343- conn. instrumentation
344- . on_connection_event ( InstrumentationEvent :: FinishQuery {
345- query : source,
346- error : None ,
347- } ) ;
335+
336+ fn non_generic_instrumentation (
337+ query_result : Result < ( ) , & Error > ,
338+ conn : & mut ConnectionAndTransactionManager ,
339+ source : & dyn DebugQuery ,
340+ final_call : bool ,
341+ ) {
342+ if let Err ( e) = query_result {
343+ conn. instrumentation
344+ . on_connection_event ( InstrumentationEvent :: FinishQuery {
345+ query : source,
346+ error : Some ( e) ,
347+ } ) ;
348+ } else if final_call {
349+ conn. instrumentation
350+ . on_connection_event ( InstrumentationEvent :: FinishQuery {
351+ query : source,
352+ error : None ,
353+ } ) ;
354+ }
348355 }
356+
357+ non_generic_inner ( conn, query_result. is_err ( ) ) ;
358+ non_generic_instrumentation ( query_result. as_ref ( ) . map ( |_| ( ) ) , conn, source, final_call) ;
349359 query_result
350360}
351361
You can’t perform that action at this time.
0 commit comments