This is an automated email from the ASF dual-hosted git repository.
weizhou pushed a commit to branch 4.20
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.20 by this push:
new cd69f2ce16d server: Fix NPE during VM IP fetch for shared networks
(#11389)
cd69f2ce16d is described below
commit cd69f2ce16d4524e2068c3be508dbf5352221316
Author: Suresh Kumar Anaparti <[email protected]>
AuthorDate: Mon Sep 15 13:44:06 2025 +0530
server: Fix NPE during VM IP fetch for shared networks (#11389)
* Fix NPE during VM IP fetch for shared networks
* PR 11389: add missing import org.apache.commons.lang3.ObjectUtils
---------
Co-authored-by: Wei Zhou <[email protected]>
---
server/src/main/java/com/cloud/vm/UserVmManagerImpl.java | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
index b8710943164..794d28c7adc 100644
--- a/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/main/java/com/cloud/vm/UserVmManagerImpl.java
@@ -139,6 +139,7 @@ import org.apache.cloudstack.vm.UnmanagedVMsManager;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang.math.NumberUtils;
+import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
@@ -658,7 +659,7 @@ public class UserVmManagerImpl extends ManagerBase
implements UserVmManager, Vir
"Wait Interval (in seconds) for shared network vm dhcp ip addr
fetch for next iteration ", true);
private static final ConfigKey<Integer> VmIpFetchTrialMax = new
ConfigKey<Integer>("Advanced", Integer.class, "externaldhcp.vmip.max.retry",
"10",
- "The max number of retrieval times for shared entwork vm dhcp ip
fetch, in case of failures", true);
+ "The max number of retrieval times for shared network vm dhcp ip
fetch, in case of failures", true);
private static final ConfigKey<Integer> VmIpFetchThreadPoolMax = new
ConfigKey<Integer>("Advanced", Integer.class,
"externaldhcp.vmipFetch.threadPool.max", "10",
"number of threads for fetching vms ip address", true);
@@ -2674,7 +2675,7 @@ public class UserVmManagerImpl extends ManagerBase
implements UserVmManager, Vir
if (vmIdAndCount.getRetrievalCount() <= 0) {
vmIdCountMap.remove(nicId);
- logger.debug("Vm " + vmId +" nic "+nicId + "
count is zero .. removing vm nic from map ");
+ logger.debug("Vm {} nic {} count is zero ..
removing vm nic from map ", vmId, nicId);
ActionEventUtils.onActionEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM,
Domain.ROOT_DOMAIN,
EventTypes.EVENT_NETWORK_EXTERNAL_DHCP_VM_IPFETCH,
@@ -2683,12 +2684,15 @@ public class UserVmManagerImpl extends ManagerBase
implements UserVmManager, Vir
continue;
}
-
UserVm userVm = _vmDao.findById(vmId);
VMInstanceVO vmInstance =
_vmInstanceDao.findById(vmId);
NicVO nicVo = _nicDao.findById(nicId);
- NetworkVO network =
_networkDao.findById(nicVo.getNetworkId());
+ if (ObjectUtils.anyNull(userVm, vmInstance,
nicVo)) {
+ logger.warn("Couldn't fetch ip addr, Vm {} or
nic {} doesn't exists", vmId, nicId);
+ continue;
+ }
+ NetworkVO network =
_networkDao.findById(nicVo.getNetworkId());
VirtualMachineProfile vmProfile = new
VirtualMachineProfileImpl(userVm);
VirtualMachine vm = vmProfile.getVirtualMachine();
boolean isWindows =
_guestOSCategoryDao.findById(_guestOSDao.findById(vm.getGuestOSId()).getCategoryId()).getName().equalsIgnoreCase("Windows");