From e5a215de465234fbff2558ea4ea78e1efe7b9904 Mon Sep 17 00:00:00 2001 From: JeremyHi Date: Mon, 22 May 2023 14:54:40 +0800 Subject: [PATCH] chore: truncate route-table (#1619) --- src/meta-srv/src/service/router.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/meta-srv/src/service/router.rs b/src/meta-srv/src/service/router.rs index 9d7a6674da..bc4385b60e 100644 --- a/src/meta-srv/src/service/router.rs +++ b/src/meta-srv/src/service/router.rs @@ -130,17 +130,21 @@ async fn handle_create( })?; let cluster_id = header.as_ref().map_or(0, |h| h.cluster_id); - let peers = selector.select(cluster_id, &ctx).await?; + let mut peers = selector.select(cluster_id, &ctx).await?; if peers.is_empty() { - let header = Some(ResponseHeader::failed( - cluster_id, - Error::no_active_datanodes(), - )); + warn!("Create table failed due to no active datanodes, table: {table_name:?}"); return Ok(RouteResponse { - header, + header: Some(ResponseHeader::failed( + cluster_id, + Error::no_active_datanodes(), + )), ..Default::default() }); } + // We don't need to keep all peers, just truncate it to the number of partitions. + // If the peers are not enough, some peers will be used for multiple partitions. + peers.truncate(partitions.len()); + let id = table_id_sequence.next().await?; table_info.ident.table_id = id as u32;