From e48e7226bdcfdc9e93848b9195a378ee0153b0ff Mon Sep 17 00:00:00 2001 From: prachi Date: Thu, 26 Jan 2012 16:39:59 -0800 Subject: [PATCH] Bug 13239 - java.lang.NullPointerException seen in management server logs when netscaler instance is unreachable whenever network usage thread is executed Changes: - Added Null check for lbvserver - Need not process the usage answer when we get some error. --- .../network/resource/NetscalerResource.java | 24 ++++++++++--------- ...ExternalLoadBalancerDeviceManagerImpl.java | 1 + 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/core/src/com/cloud/network/resource/NetscalerResource.java b/core/src/com/cloud/network/resource/NetscalerResource.java index c6430c5b094..7d6840753f9 100644 --- a/core/src/com/cloud/network/resource/NetscalerResource.java +++ b/core/src/com/cloud/network/resource/NetscalerResource.java @@ -1223,17 +1223,19 @@ public class NetscalerResource implements ServerResource { for (lbvserver_stats stat_entry : stats) { String lbvserverName = stat_entry.get_name(); lbvserver vserver = lbvserver.get(_netscalerService, lbvserverName); - String lbVirtualServerIp = vserver.get_ipv46(); - - long[] bytesSentAndReceived = answer.ipBytes.get(lbVirtualServerIp); - if (bytesSentAndReceived == null) { - bytesSentAndReceived = new long[]{0, 0}; - } - bytesSentAndReceived[0] += stat_entry.get_totalrequestbytes(); - bytesSentAndReceived[1] += stat_entry.get_totalresponsebytes(); - - if (bytesSentAndReceived[0] >= 0 && bytesSentAndReceived[1] >= 0) { - answer.ipBytes.put(lbVirtualServerIp, bytesSentAndReceived); + if(vserver != null){ + String lbVirtualServerIp = vserver.get_ipv46(); + + long[] bytesSentAndReceived = answer.ipBytes.get(lbVirtualServerIp); + if (bytesSentAndReceived == null) { + bytesSentAndReceived = new long[]{0, 0}; + } + bytesSentAndReceived[0] += stat_entry.get_totalrequestbytes(); + bytesSentAndReceived[1] += stat_entry.get_totalresponsebytes(); + + if (bytesSentAndReceived[0] >= 0 && bytesSentAndReceived[1] >= 0) { + answer.ipBytes.put(lbVirtualServerIp, bytesSentAndReceived); + } } } } catch (Exception e) { diff --git a/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java b/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java index e092ec5bdf0..3dc115ae68d 100644 --- a/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java +++ b/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java @@ -1055,6 +1055,7 @@ public abstract class ExternalLoadBalancerDeviceManagerImpl extends AdapterBase String details = (lbAnswer != null) ? lbAnswer.getDetails() : "details unavailable"; String msg = "Unable to get external load balancer stats for " + zone.getName() + " due to: " + details + "."; s_logger.error(msg); + continue; } }