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 {
111111 } ,
112112 #[ error( "Transaction not found error: {:?}" , _0) ]
113113 TxnNotFound ( kvrpcpb:: TxnNotFound ) ,
114+ #[ error( "PD has no leader" ) ]
115+ PdNoLeader ,
114116}
115117
116118impl From < crate :: proto:: errorpb:: Error > for Error {
Original file line number Diff line number Diff line change @@ -16,6 +16,7 @@ use tonic::Request;
1616use super :: timestamp:: TimestampOracle ;
1717use crate :: internal_err;
1818use crate :: proto:: pdpb;
19+ use crate :: Error ;
1920use crate :: Result ;
2021use crate :: SecurityManager ;
2122use crate :: Timestamp ;
@@ -46,7 +47,7 @@ impl Cluster {
4647 timeout : Duration ,
4748 ) -> Result < pdpb:: GetRegionResponse > {
4849 let mut req = pd_request ! ( self . id, pdpb:: GetRegionRequest ) ;
49- req. region_key = key. clone ( ) ;
50+ req. region_key = key;
5051 req. send ( & mut self . client , timeout) . await
5152 }
5253
@@ -203,6 +204,16 @@ impl Connection {
203204 . get_members ( pdpb:: GetMembersRequest :: default ( ) )
204205 . await ?
205206 . 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+ }
206217 Ok ( ( client, resp) )
207218 }
208219
You can’t perform that action at this time.
0 commit comments