File tree Expand file tree Collapse file tree 9 files changed +19
-6
lines changed Expand file tree Collapse file tree 9 files changed +19
-6
lines changed Original file line number Diff line number Diff line change @@ -25,6 +25,7 @@ async fn main() {
25
25
} else {
26
26
Config :: default ( )
27
27
}
28
+ // This example uses the default keyspace, so api-v2 must be enabled on the server.
28
29
. with_default_keyspace ( ) ;
29
30
30
31
// init
Original file line number Diff line number Diff line change @@ -32,6 +32,7 @@ async fn main() -> Result<()> {
32
32
} else {
33
33
Config :: default ( )
34
34
}
35
+ // This example uses the default keyspace, so api-v2 must be enabled on the server.
35
36
. with_default_keyspace ( ) ;
36
37
37
38
// When we first create a client we receive a `Connect` structure which must be resolved before
@@ -137,6 +138,7 @@ async fn main() -> Result<()> {
137
138
) ;
138
139
println ! ( "Scanning batch scan from {batch_scan_keys:?} gives: {vals:?}" ) ;
139
140
141
+ // Delete all keys in the whole range.
140
142
client. delete_range ( "" . to_owned ( ) .."" . to_owned ( ) ) . await ?;
141
143
142
144
Ok ( ( ) )
Original file line number Diff line number Diff line change @@ -88,6 +88,7 @@ async fn main() {
88
88
} else {
89
89
Config :: default ( )
90
90
}
91
+ // This example uses the default keyspace, so api-v2 must be enabled on the server.
91
92
. with_default_keyspace ( ) ;
92
93
93
94
let txn = Client :: new_with_config ( args. pd , config)
Original file line number Diff line number Diff line change @@ -201,7 +201,7 @@ impl RetryClientTrait for RetryClient<Cluster> {
201
201
}
202
202
203
203
async fn get_keyspace_id ( & self , keyspace : & str ) -> Result < u32 > {
204
- retry_mut ! ( self , "get_keyspace_id" , |cluster| async {
204
+ retry ! ( self , "get_keyspace_id" , |cluster| async {
205
205
cluster. get_keyspace_id( keyspace) . await
206
206
} )
207
207
}
Original file line number Diff line number Diff line change @@ -692,7 +692,7 @@ impl<PdC: PdClient> Client<PdC> {
692
692
// limit is a soft limit, so we need check the number of results
693
693
result. truncate ( limit as usize ) ;
694
694
695
- // truncate the version of keys
695
+ // truncate the prefix of keys
696
696
let result = result. truncate_keyspace ( self . keyspace ) ;
697
697
698
698
Ok ( result)
Original file line number Diff line number Diff line change @@ -149,6 +149,15 @@ impl TruncateKeyspace for Vec<KvPair> {
149
149
}
150
150
}
151
151
152
+ impl TruncateKeyspace for Vec < crate :: proto:: kvrpcpb:: LockInfo > {
153
+ fn truncate_keyspace ( mut self , keyspace : Keyspace ) -> Self {
154
+ for lock in self . locks . iter_mut ( ) {
155
+ lock. key . truncate_keyspace ( self . keyspace ) ;
156
+ }
157
+ self
158
+ }
159
+ }
160
+
152
161
fn keyspace_prefix ( keyspace_id : u32 , key_mode : KeyMode ) -> [ u8 ; KEYSPACE_PREFIX_LEN ] {
153
162
let mut prefix = keyspace_id. to_be_bytes ( ) ;
154
163
prefix[ 0 ] = match key_mode {
Original file line number Diff line number Diff line change @@ -284,7 +284,7 @@ impl Client {
284
284
. retry_multi_region ( DEFAULT_REGION_BACKOFF )
285
285
. merge ( crate :: request:: Collect )
286
286
. plan ( ) ;
287
- plan. execute ( ) . await
287
+ Ok ( plan. execute ( ) . await ? . truncate_keyspace ( self . keyspace ) )
288
288
}
289
289
290
290
/// Cleans up all keys in a range and quickly reclaim disk space.
Original file line number Diff line number Diff line change @@ -121,8 +121,8 @@ async fn resolve_lock_with_retry(
121
121
let store = pd_client. clone ( ) . store_for_key ( key. into ( ) ) . await ?;
122
122
let ver_id = store. region_with_leader . ver_id ( ) ;
123
123
let request = requests:: new_resolve_lock_request ( start_version, commit_version) ;
124
- // The only place where single-region is used
125
- let plan = crate :: request:: PlanBuilder :: new ( pd_client. clone ( ) , keyspace , request )
124
+ let encoded_req = EncodedRequest :: new ( request , pd_client . get_codec ( ) ) ;
125
+ let plan = crate :: request:: PlanBuilder :: new ( pd_client. clone ( ) , encoded_req )
126
126
. single_region_with_store ( store)
127
127
. await ?
128
128
. resolve_lock ( Backoff :: no_backoff ( ) , keyspace)
Original file line number Diff line number Diff line change @@ -25,7 +25,7 @@ const REGION_SPLIT_TIME_LIMIT: Duration = Duration::from_secs(15);
25
25
// Delete all entries in TiKV to leave a clean space for following tests.
26
26
pub async fn clear_tikv ( ) {
27
27
// DEFAULT_REGION_BACKOFF is not long enough for CI environment. So set a longer backoff.
28
- // let backoff = tikv_client::Backoff::no_jitter_backoff(100, 30000, 20);
28
+ let backoff = tikv_client:: Backoff :: no_jitter_backoff ( 100 , 30000 , 20 ) ;
29
29
let raw_client =
30
30
RawClient :: new_with_config ( pd_addrs ( ) , Config :: default ( ) . with_default_keyspace ( ) )
31
31
. await
You can’t perform that action at this time.
0 commit comments