From b3edd0ef5ead85662e8a2e68dce87a85f7961790 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Wed, 5 Mar 2025 11:04:50 +0530 Subject: [PATCH 1/3] framework/cluster: fix NPE for ms-host status when mgr stops This handles an NPE case for when management server host status is not found in the DB, when stopping the cluster manager. Signed-off-by: Rohit Yadav --- .../com/cloud/cluster/ClusterManagerImpl.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/framework/cluster/src/main/java/com/cloud/cluster/ClusterManagerImpl.java b/framework/cluster/src/main/java/com/cloud/cluster/ClusterManagerImpl.java index 1b45910b88a4..e140fef5d89d 100644 --- a/framework/cluster/src/main/java/com/cloud/cluster/ClusterManagerImpl.java +++ b/framework/cluster/src/main/java/com/cloud/cluster/ClusterManagerImpl.java @@ -1107,9 +1107,18 @@ public boolean stop() { if (_mshostId != null) { final ManagementServerHostVO mshost = _mshostDao.findByMsid(_msId); if (mshost != null) { - final ManagementServerStatusVO mshostStatus = mshostStatusDao.findByMsId(mshost.getUuid()); - mshostStatus.setLastJvmStop(new Date()); - mshostStatusDao.update(mshostStatus.getId(), mshostStatus); + ManagementServerStatusVO mshostStatus = mshostStatusDao.findByMsId(mshost.getUuid()); + if (mshostStatus != null) { + mshostStatus.setLastJvmStop(new Date()); + mshostStatusDao.update(mshostStatus.getId(), mshostStatus); + } else { + mshostStatus = new ManagementServerStatusVO(); + mshostStatus.setMsId(mshost.getUuid()); + mshostStatus.setLastSystemBoot(new Date()); + mshostStatus.setLastJvmStart(new Date()); + mshostStatus.setUpdated(new Date()); + mshostStatusDao.persist(mshostStatus); + } ManagementServerHost.State msHostState = ManagementServerHost.State.Down; if (ManagementServerHost.State.Maintenance.equals(mshost.getState()) || ManagementServerHost.State.PreparingForMaintenance.equals(mshost.getState())) { From 94debbd015a9f7dd0e0423aebf3b0b845780ca75 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Fri, 7 Mar 2025 08:25:41 +0530 Subject: [PATCH 2/3] Update framework/cluster/src/main/java/com/cloud/cluster/ClusterManagerImpl.java Co-authored-by: dahn --- .../src/main/java/com/cloud/cluster/ClusterManagerImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/framework/cluster/src/main/java/com/cloud/cluster/ClusterManagerImpl.java b/framework/cluster/src/main/java/com/cloud/cluster/ClusterManagerImpl.java index e140fef5d89d..81a772dd6c5c 100644 --- a/framework/cluster/src/main/java/com/cloud/cluster/ClusterManagerImpl.java +++ b/framework/cluster/src/main/java/com/cloud/cluster/ClusterManagerImpl.java @@ -1112,6 +1112,7 @@ public boolean stop() { mshostStatus.setLastJvmStop(new Date()); mshostStatusDao.update(mshostStatus.getId(), mshostStatus); } else { + logger.warn("an MS host, [{}] without a status? this should never happen!", mshost); mshostStatus = new ManagementServerStatusVO(); mshostStatus.setMsId(mshost.getUuid()); mshostStatus.setLastSystemBoot(new Date()); From ddd0f999366dc41a77a5853621bc3a580c4af134 Mon Sep 17 00:00:00 2001 From: Rohit Yadav Date: Fri, 7 Mar 2025 08:26:58 +0530 Subject: [PATCH 3/3] Update framework/cluster/src/main/java/com/cloud/cluster/ClusterManagerImpl.java --- .../src/main/java/com/cloud/cluster/ClusterManagerImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/cluster/src/main/java/com/cloud/cluster/ClusterManagerImpl.java b/framework/cluster/src/main/java/com/cloud/cluster/ClusterManagerImpl.java index 81a772dd6c5c..d2c85b498f2d 100644 --- a/framework/cluster/src/main/java/com/cloud/cluster/ClusterManagerImpl.java +++ b/framework/cluster/src/main/java/com/cloud/cluster/ClusterManagerImpl.java @@ -1112,7 +1112,7 @@ public boolean stop() { mshostStatus.setLastJvmStop(new Date()); mshostStatusDao.update(mshostStatus.getId(), mshostStatus); } else { - logger.warn("an MS host, [{}] without a status? this should never happen!", mshost); + logger.warn("Found a management server host [{}] without a status. This should never happen!", mshost); mshostStatus = new ManagementServerStatusVO(); mshostStatus.setMsId(mshost.getUuid()); mshostStatus.setLastSystemBoot(new Date());