File tree Expand file tree Collapse file tree 2 files changed +14
-1
lines changed Expand file tree Collapse file tree 2 files changed +14
-1
lines changed Original file line number Diff line number Diff line change @@ -111,6 +111,8 @@ pub enum Error {
111
111
} ,
112
112
#[ error( "Transaction not found error: {:?}" , _0) ]
113
113
TxnNotFound ( kvrpcpb:: TxnNotFound ) ,
114
+ #[ error( "PD has no leader" ) ]
115
+ PdNoLeader ,
114
116
}
115
117
116
118
impl From < crate :: proto:: errorpb:: Error > for Error {
Original file line number Diff line number Diff line change @@ -16,6 +16,7 @@ use tonic::Request;
16
16
use super :: timestamp:: TimestampOracle ;
17
17
use crate :: internal_err;
18
18
use crate :: proto:: pdpb;
19
+ use crate :: Error ;
19
20
use crate :: Result ;
20
21
use crate :: SecurityManager ;
21
22
use crate :: Timestamp ;
@@ -46,7 +47,7 @@ impl Cluster {
46
47
timeout : Duration ,
47
48
) -> Result < pdpb:: GetRegionResponse > {
48
49
let mut req = pd_request ! ( self . id, pdpb:: GetRegionRequest ) ;
49
- req. region_key = key. clone ( ) ;
50
+ req. region_key = key;
50
51
req. send ( & mut self . client , timeout) . await
51
52
}
52
53
@@ -203,6 +204,16 @@ impl Connection {
203
204
. get_members ( pdpb:: GetMembersRequest :: default ( ) )
204
205
. await ?
205
206
. into_inner ( ) ;
207
+ if let Some ( err) = resp
208
+ . header
209
+ . as_ref ( )
210
+ . and_then ( |header| header. error . as_ref ( ) )
211
+ {
212
+ return Err ( internal_err ! ( "failed to get PD members, err {:?}" , err) ) ;
213
+ }
214
+ if resp. leader . is_none ( ) {
215
+ return Err ( Error :: PdNoLeader ) ;
216
+ }
206
217
Ok ( ( client, resp) )
207
218
}
208
219
You can’t perform that action at this time.
0 commit comments