diff --git a/core/graphman/src/commands/deployment/reassign.rs b/core/graphman/src/commands/deployment/reassign.rs index 5d3d633e082..3950c8d192f 100644 --- a/core/graphman/src/commands/deployment/reassign.rs +++ b/core/graphman/src/commands/deployment/reassign.rs @@ -24,6 +24,18 @@ impl Deployment { pub fn locator(&self) -> &DeploymentLocator { &self.locator } + + pub fn assigned_node( + &self, + primary_pool: ConnectionPool, + ) -> Result, GraphmanError> { + let primary_conn = primary_pool.get().map_err(GraphmanError::from)?; + let mut catalog_conn = catalog::Connection::new(primary_conn); + let node = catalog_conn + .assigned_node(&self.site) + .map_err(GraphmanError::from)?; + Ok(node) + } } #[derive(Debug, Error)] @@ -70,16 +82,13 @@ pub fn reassign_deployment( notification_sender: Arc, deployment: &Deployment, node: &NodeId, + curr_node: Option, ) -> Result { let primary_conn = primary_pool.get().map_err(GraphmanError::from)?; let mut catalog_conn = catalog::Connection::new(primary_conn); - - let changes: Vec = match catalog_conn - .assigned_node(&deployment.site) - .map_err(GraphmanError::from)? - { + let changes: Vec = match &curr_node { Some(curr) => { - if &curr == node { + if &curr == &node { vec![] } else { catalog_conn diff --git a/node/src/manager/commands/deployment/reassign.rs b/node/src/manager/commands/deployment/reassign.rs index 60528f16206..bd87ee22f31 100644 --- a/node/src/manager/commands/deployment/reassign.rs +++ b/node/src/manager/commands/deployment/reassign.rs @@ -16,11 +16,24 @@ pub fn run( node: &NodeId, ) -> Result<()> { let deployment = load_deployment(primary_pool.clone(), &deployment)?; + let curr_node = deployment.assigned_node(primary_pool.clone())?; + let reassign_msg = match &curr_node { + Some(curr_node) => format!( + "Reassigning deployment {} (was {})", + deployment.locator(), + curr_node + ), + None => format!("Reassigning deployment {}", deployment.locator()), + }; + println!("{}", reassign_msg); - println!("Reassigning deployment {}", deployment.locator()); - - let reassign_result = - reassign_deployment(primary_pool, notification_sender, &deployment, node)?; + let reassign_result = reassign_deployment( + primary_pool, + notification_sender, + &deployment, + node, + curr_node, + )?; match reassign_result { ReassignResult::EmptyResponse => { diff --git a/server/graphman/src/resolvers/deployment_mutation/reassign.rs b/server/graphman/src/resolvers/deployment_mutation/reassign.rs index 3887d67032a..026ef94ed9f 100644 --- a/server/graphman/src/resolvers/deployment_mutation/reassign.rs +++ b/server/graphman/src/resolvers/deployment_mutation/reassign.rs @@ -14,11 +14,14 @@ pub fn run( node: &NodeId, ) -> Result { let deployment = load_deployment(ctx.primary_pool.clone(), deployment)?; + let curr_node = deployment.assigned_node(ctx.primary_pool.clone())?; + let reassign_result = reassign_deployment( ctx.primary_pool.clone(), ctx.notification_sender.clone(), &deployment, &node, + curr_node, )?; Ok(reassign_result) }