@@ -146,6 +146,7 @@ impl<PdC: PdClient> Transaction<PdC> {
146146 let plan = PlanBuilder :: new ( rpc, api_version, request)
147147 . resolve_lock ( retry_options. lock_backoff , api_version)
148148 . retry_multi_region ( DEFAULT_REGION_BACKOFF )
149+ . extract_error ( )
149150 . merge ( CollectSingle )
150151 . post_process_default ( )
151152 . plan ( ) ;
@@ -281,6 +282,7 @@ impl<PdC: PdClient> Transaction<PdC> {
281282 let plan = PlanBuilder :: new ( rpc, api_version, request)
282283 . resolve_lock ( retry_options. lock_backoff , api_version)
283284 . retry_multi_region ( retry_options. region_backoff )
285+ . extract_error ( )
284286 . merge ( Collect )
285287 . plan ( ) ;
286288 plan. execute ( )
@@ -333,7 +335,11 @@ impl<PdC: PdClient> Transaction<PdC> {
333335 let keys = keys
334336 . into_iter ( )
335337 . map ( move |k| k. into ( ) . encode_version ( api_version, KeyMode :: Txn ) ) ;
336- self . pessimistic_lock ( keys, true ) . await
338+ let pairs = self
339+ . pessimistic_lock ( keys, true )
340+ . await ?
341+ . truncate_version ( api_version) ;
342+ Ok ( pairs)
337343 }
338344 }
339345
@@ -541,23 +547,14 @@ impl<PdC: PdClient> Transaction<PdC> {
541547 /// # Examples
542548 ///
543549 /// ```rust,no_run
544- /// # use tikv_client::{Key, Config, TransactionClient, proto::kvrpcpb };
550+ /// # use tikv_client::{Key, Config, TransactionClient, transaction::Mutation };
545551 /// # use futures::prelude::*;
546552 /// # futures::executor::block_on(async {
547553 /// # let client = TransactionClient::new(vec!["192.168.0.100", "192.168.0.101"]).await.unwrap();
548554 /// let mut txn = client.begin_optimistic().await.unwrap();
549555 /// let mutations = vec![
550- /// kvrpcpb::Mutation {
551- /// op: kvrpcpb::Op::Del.into(),
552- /// key: b"k0".to_vec(),
553- /// ..Default::default()
554- /// },
555- /// kvrpcpb::Mutation {
556- /// op: kvrpcpb::Op::Put.into(),
557- /// key: b"k1".to_vec(),
558- /// value: b"v1".to_vec(),
559- /// ..Default::default()
560- /// },
556+ /// Mutation::Delete("k0".to_owned().into()),
557+ /// Mutation::Put("k1".to_owned().into(), b"v1".to_vec()),
561558 /// ];
562559 /// txn.batch_mutate(mutations).await.unwrap();
563560 /// txn.commit().await.unwrap();
@@ -574,7 +571,7 @@ impl<PdC: PdClient> Transaction<PdC> {
574571 . map ( |mutation| mutation. encode_version ( self . api_version , KeyMode :: Txn ) )
575572 . collect ( ) ;
576573 if self . is_pessimistic ( ) {
577- self . pessimistic_lock ( mutations. iter ( ) . map ( |m| Key :: from ( m. key ( ) . clone ( ) ) ) , false )
574+ self . pessimistic_lock ( mutations. iter ( ) . map ( |m| m. key ( ) . clone ( ) ) , false )
578575 . await ?;
579576 for m in mutations {
580577 self . buffer . mutate ( m) ;
@@ -623,12 +620,11 @@ impl<PdC: PdClient> Transaction<PdC> {
623620 match self . options . kind {
624621 TransactionKind :: Optimistic => {
625622 for key in keys {
626- self . buffer . lock ( key. into ( ) ) ;
623+ self . buffer . lock ( key) ;
627624 }
628625 }
629626 TransactionKind :: Pessimistic ( _) => {
630- self . pessimistic_lock ( keys, false )
631- . await ?;
627+ self . pessimistic_lock ( keys, false ) . await ?;
632628 }
633629 }
634630 Ok ( ( ) )
@@ -771,6 +767,7 @@ impl<PdC: PdClient> Transaction<PdC> {
771767 self . api_version ,
772768 )
773769 . retry_multi_region ( self . options . retry_options . region_backoff . clone ( ) )
770+ . extract_error ( )
774771 . merge ( CollectSingle )
775772 . post_process_default ( )
776773 . plan ( ) ;
@@ -803,6 +800,7 @@ impl<PdC: PdClient> Transaction<PdC> {
803800 let plan = PlanBuilder :: new ( rpc, api_version, request)
804801 . resolve_lock ( retry_options. lock_backoff , api_version)
805802 . retry_multi_region ( retry_options. region_backoff )
803+ . extract_error ( )
806804 . merge ( Collect )
807805 . plan ( ) ;
808806 plan. execute ( )
@@ -863,6 +861,7 @@ impl<PdC: PdClient> Transaction<PdC> {
863861 )
864862 . preserve_shard ( )
865863 . retry_multi_region_preserve_results ( self . options . retry_options . region_backoff . clone ( ) )
864+ . extract_error ( )
866865 . merge ( CollectWithShard )
867866 . plan ( ) ;
868867 let pairs = plan. execute ( ) . await ;
@@ -920,6 +919,7 @@ impl<PdC: PdClient> Transaction<PdC> {
920919 )
921920 . retry_multi_region ( self . options . retry_options . region_backoff . clone ( ) )
922921 . extract_error ( )
922+ . extract_error ( )
923923 . plan ( ) ;
924924 plan. execute ( ) . await ?;
925925
@@ -989,6 +989,7 @@ impl<PdC: PdClient> Transaction<PdC> {
989989 let plan = PlanBuilder :: new ( rpc. clone ( ) , api_version, request)
990990 . retry_multi_region ( region_backoff. clone ( ) )
991991 . merge ( CollectSingle )
992+ . extract_error ( )
992993 . plan ( ) ;
993994 plan. execute ( ) . await ?;
994995 }
@@ -1042,7 +1043,6 @@ impl<PdC: PdClient> Drop for Transaction<PdC> {
10421043 if self . get_status ( ) == TransactionStatus :: Active {
10431044 match self . options . check_level {
10441045 CheckLevel :: Panic => {
1045- dbg ! ( & self . timestamp) ;
10461046 panic ! ( "Dropping an active transaction. Consider commit or rollback it." )
10471047 }
10481048 CheckLevel :: Warn => {
0 commit comments