diff --git a/control_plane/src/attachment_service.rs b/control_plane/src/attachment_service.rs
index b897345048..3914c65aa5 100644
--- a/control_plane/src/attachment_service.rs
+++ b/control_plane/src/attachment_service.rs
@@ -67,7 +67,7 @@ pub struct NodeRegisterRequest {
pub listen_http_port: u16,
}
-#[derive(Serialize, Deserialize)]
+#[derive(Serialize, Deserialize, Debug)]
pub struct TenantLocateResponseShard {
pub shard_id: TenantShardId,
pub node_id: NodeId,
diff --git a/control_plane/src/bin/attachment_service.rs b/control_plane/src/bin/attachment_service.rs
index 4212551f9d..78a02c984c 100644
--- a/control_plane/src/bin/attachment_service.rs
+++ b/control_plane/src/bin/attachment_service.rs
@@ -737,6 +737,15 @@ async fn handle_tenant_locate(req: Request
) -> Result, ApiE
));
}
let shard_params = shard_params.expect("result is non-empty, therefore this is set");
+ tracing::info!(
+ "Located tenant {} on shards {}",
+ tenant_id,
+ result
+ .iter()
+ .map(|s| format!("{:?}", s))
+ .collect::>()
+ .join(",")
+ );
json_response(
StatusCode::OK,
diff --git a/control_plane/src/bin/neon_local.rs b/control_plane/src/bin/neon_local.rs
index 22bf036810..bac106bc12 100644
--- a/control_plane/src/bin/neon_local.rs
+++ b/control_plane/src/bin/neon_local.rs
@@ -921,6 +921,7 @@ async fn handle_endpoint(ep_match: &ArgMatches, env: &local_env::LocalEnv) -> Re
)
})
.collect::>();
+ assert!(!pageservers.is_empty());
let stripe_size = locate_result.shard_params.stripe_size.map(|s| s.0 as usize);
let ps_conf = env.get_pageserver_conf(pageserver_id)?;
diff --git a/control_plane/src/endpoint.rs b/control_plane/src/endpoint.rs
index 6f070c5fe8..fbd944e29a 100644
--- a/control_plane/src/endpoint.rs
+++ b/control_plane/src/endpoint.rs
@@ -481,6 +481,7 @@ impl Endpoint {
}
let pageserver_connstring = Self::build_pageserver_connstr(&pageservers);
+ assert!(!pageserver_connstring.is_empty());
let mut safekeeper_connstrings = Vec::new();
if self.mode == ComputeMode::Primary {