11// Copyright 2019 TiKV Project Authors. Licensed under Apache-2.0.
22
3- use super :: requests:: new_scan_lock_request;
43use crate :: {
54 backoff:: DEFAULT_REGION_BACKOFF ,
65 config:: Config ,
@@ -10,10 +9,11 @@ use crate::{
109 transaction:: {
1110 lock:: ResolveLocksOptions , ResolveLocksContext , Snapshot , Transaction , TransactionOptions ,
1211 } ,
13- Backoff , Result ,
12+ transaction_lowering:: new_scan_lock_request,
13+ Backoff , BoundRange , Result ,
1414} ;
1515use slog:: { Drain , Logger } ;
16- use std:: { mem , sync:: Arc } ;
16+ use std:: sync:: Arc ;
1717use tikv_client_proto:: pdpb:: Timestamp ;
1818
1919// FIXME: cargo-culted value
@@ -242,7 +242,7 @@ impl Client {
242242 batch_size : SCAN_LOCK_BATCH_SIZE ,
243243 ..Default :: default ( )
244244 } ;
245- self . cleanup_locks ( & safepoint, options) . await ?;
245+ self . cleanup_locks ( .. , & safepoint, options) . await ?;
246246
247247 // update safepoint to PD
248248 let res: bool = self
@@ -258,24 +258,20 @@ impl Client {
258258
259259 pub async fn cleanup_locks (
260260 & self ,
261+ range : impl Into < BoundRange > ,
261262 safepoint : & Timestamp ,
262263 options : ResolveLocksOptions ,
263264 ) -> Result < CleanupLocksResult > {
264265 debug ! ( self . logger, "invoking cleanup async commit locks" ) ;
265266 // scan all locks with ts <= safepoint
266- let mut start_key = vec ! [ ] ;
267267 let ctx = ResolveLocksContext :: default ( ) ;
268268 let backoff = Backoff :: equal_jitter_backoff ( 100 , 10000 , 50 ) ;
269- let req = new_scan_lock_request (
270- mem:: take ( & mut start_key) ,
271- safepoint. version ( ) ,
272- options. batch_size ,
273- ) ;
269+ let req = new_scan_lock_request ( range. into ( ) , safepoint, options. batch_size ) ;
274270 let plan = crate :: request:: PlanBuilder :: new ( self . pd . clone ( ) , req)
275271 . cleanup_locks ( self . logger . clone ( ) , ctx. clone ( ) , options, backoff)
276272 . retry_multi_region ( DEFAULT_REGION_BACKOFF )
277- . merge ( crate :: request:: Collect )
278273 . extract_error ( )
274+ . merge ( crate :: request:: Collect )
279275 . plan ( ) ;
280276 plan. execute ( ) . await
281277 }
@@ -286,10 +282,10 @@ impl Client {
286282 pub async fn scan_locks (
287283 & self ,
288284 safepoint : & Timestamp ,
289- mut start_key : Vec < u8 > ,
285+ range : impl Into < BoundRange > ,
290286 batch_size : u32 ,
291287 ) -> Result < Vec < tikv_client_proto:: kvrpcpb:: LockInfo > > {
292- let req = new_scan_lock_request ( mem :: take ( & mut start_key ) , safepoint. version ( ) , batch_size) ;
288+ let req = new_scan_lock_request ( range . into ( ) , safepoint, batch_size) ;
293289 let plan = crate :: request:: PlanBuilder :: new ( self . pd . clone ( ) , req)
294290 . retry_multi_region ( DEFAULT_REGION_BACKOFF )
295291 . merge ( crate :: request:: Collect )
0 commit comments