Skip to content

Commit 6884822

Browse files
authored
fix: handle case where PD cluster has no leader (#538)
\n\nSigned-off-by: MananShukla7 <shuklamanan8@gmail.com>
1 parent 6501047 commit 6884822

1 file changed

Lines changed: 10 additions & 1 deletion

File tree

src/pd/cluster.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,11 @@ impl Connection {
283283
}
284284
}
285285

286+
/// Attempts to connect to the PD cluster leader.
287+
///
288+
/// Iterates over known members to find a responsive node, then connects
289+
/// to the reported leader. Returns an error if no leader is present or
290+
/// reachable.
286291
async fn try_connect_leader(
287292
&self,
288293
previous: &pdpb::GetMembersResponse,
@@ -292,7 +297,11 @@ impl Connection {
292297
keyspacepb::keyspace_client::KeyspaceClient<Channel>,
293298
pdpb::GetMembersResponse,
294299
)> {
295-
let previous_leader = previous.leader.as_ref().unwrap();
300+
let previous_leader = previous
301+
.leader
302+
.as_ref()
303+
.ok_or_else(|| internal_err!("PD cluster has no leader"))?;
304+
296305
let members = &previous.members;
297306
let cluster_id = previous.header.as_ref().unwrap().cluster_id;
298307

0 commit comments

Comments
 (0)