You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
listPublicIpAddresses NullPointerException on shared networks with a VR (4.22) #14248
On 4.22.1.0, listPublicIpAddresses with forvirtualnetwork=false sometimes fails with a 530:
2026-09-25 06:50:01,162 ERROR [c.c.a.ApiServer] (qtp2038105753-72330:[ctx-762cfe49, ctx-ac3b837a, ctx-e861c603]) (logid:e972f310) unhandled exception executing api command: [Ljava.lang.String;@4e95c7d5 java.lang.NullPointerException: Cannot invoke "java.lang.Long.longValue()" because "this.instanceId" is null
2026-09-25 06:50:01,165 INFO [a.c.c.a.ApiServlet] (qtp2038105753-72330:[ctx-762cfe49, ctx-ac3b837a, ctx-e861c603]) (logid:e972f310) (userId=8 accountId=2 sessionId=null) 0:0:0:0:0:0:0:1 -- GET allocatedonly=false&apikey=<redacted>&command=listPublicIpAddresses&forvirtualnetwork=false&listall=true&page=1&pagesize=500&response=json&signature=<redacted> 530 Cannot invoke "java.lang.Long.longValue()" because "this.instanceId" is null
The same request succeeds on some attempts and fails on others.
It looks like the DomainRouter branch added to ApiResponseHelper.showVmInfoForSharedNetworks() in #10458 is hitting the VR's placeholder NIC, which has a null instance_id. Our shared network has two NIC rows for the VR's IP (the placeholder and the real one), and the NIC lookup can return either, which would explain why it's intermittent. It seems to be the same or a similar problem as #8622, which #8624 fixed for the system VM branch.
versions
ACS 4.22.1.0, KVM, advanced zone. The shared network offering uses VirtualRouter for DHCP, DNS and UserData.
The steps to reproduce the bug
Create a shared network whose offering uses VirtualRouter for DHCP/DNS, and deploy a VM on it so the VR starts.
As admin, call listPublicIpAddresses networkid= forvirtualnetwork=false a few times.
Some calls fail with the NPE above.
What to do about it?
findNonPlaceHolderByIp4AddressAndNetworkId() looks to skip placeholder IP addresses, so should be able to change this line in ApiResponseHelper.java:
Change:
if (!forVirtualNetworks) {
NicVO nic = ApiDBUtils.findByIp4AddressAndNetworkId(ipAddr.getAddress().toString(), ipAddr.getNetworkId());
To:
if (!forVirtualNetworks) {
NicVO nic = ApiDBUtils.findNonPlaceHolderByIp4AddressAndNetworkId(ipAddr.getAddress().toString(), ipAddr.getNetworkId());
Activity
Fix listPublicIpAddresses NPE on shared network router placeholder NI…
Fix listPublicIpAddresses NPE on shared networks with a VR (#14249)
sureshanaparti commentedon Oct 26, 2026
Fixed in #14249