From 04341c08392b182257bffe3c50ffb43d148e925c Mon Sep 17 00:00:00 2001 From: kishan Date: Tue, 21 Feb 2012 23:39:20 +0530 Subject: [PATCH] Bug 13619: Throw exception when not traffic sentinel host is not available. Update last_collection timestamp when atleast 1 IP has nonzero bytes Status 13619: resolved fixed Reviewed-By: Nitin --- .../network/resource/TrafficSentinelResource.java | 4 +++- .../com/cloud/network/NetworkUsageManagerImpl.java | 12 +++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/core/src/com/cloud/network/resource/TrafficSentinelResource.java b/core/src/com/cloud/network/resource/TrafficSentinelResource.java index 23ce64b0def..18e33d0a3f3 100644 --- a/core/src/com/cloud/network/resource/TrafficSentinelResource.java +++ b/core/src/com/cloud/network/resource/TrafficSentinelResource.java @@ -229,11 +229,13 @@ public class TrafficSentinelResource implements ServerResource { in.close(); } catch (MalformedURLException e1) { s_logger.info("Invalid Traffic Sentinel URL",e1); + throw new ExecutionException(e1.getMessage()); } catch (IOException e) { s_logger.debug("Error in direct network usage accounting",e); + throw new ExecutionException(e.getMessage()); } } catch (Exception e) { - s_logger.error(e); + s_logger.debug(e); throw new ExecutionException(e.getMessage()); } return answer; diff --git a/server/src/com/cloud/network/NetworkUsageManagerImpl.java b/server/src/com/cloud/network/NetworkUsageManagerImpl.java index fd8c7c11a83..2501ca1cadd 100755 --- a/server/src/com/cloud/network/NetworkUsageManagerImpl.java +++ b/server/src/com/cloud/network/NetworkUsageManagerImpl.java @@ -372,8 +372,8 @@ public class NetworkUsageManagerImpl implements NetworkUsageManager, ResourceSta } List collectedStats = new ArrayList(); - - //Get usage for Ips for which were assigned for the entire duration + + //Get usage for Ips which were assigned for the entire duration if(fullDurationIpUsage.size() > 0){ DirectNetworkUsageCommand cmd = new DirectNetworkUsageCommand(IpList, lastCollection, now); DirectNetworkUsageAnswer answer = (DirectNetworkUsageAnswer) _agentMgr.easySend(host.getId(), cmd); @@ -381,6 +381,7 @@ public class NetworkUsageManagerImpl implements NetworkUsageManager, ResourceSta String details = (answer != null) ? answer.getDetails() : "details unavailable"; String msg = "Unable to get network usage stats from " + host.getId() + " due to: " + details + "."; s_logger.error(msg); + return false; } else { for(UsageIPAddressVO usageIp : fullDurationIpUsage){ String publicIp = usageIp.getAddress(); @@ -403,7 +404,7 @@ public class NetworkUsageManagerImpl implements NetworkUsageManager, ResourceSta } } - //Get usage for Ips for which were assigned for part of the duration period + //Get usage for Ips which were assigned for part of the duration period for(UsageIPAddressVO usageIp : IpPartialUsage){ IpList = new ArrayList() ; IpList.add(usageIp.getAddress()); @@ -413,6 +414,7 @@ public class NetworkUsageManagerImpl implements NetworkUsageManager, ResourceSta String details = (answer != null) ? answer.getDetails() : "details unavailable"; String msg = "Unable to get network usage stats from " + host.getId() + " due to: " + details + "."; s_logger.error(msg); + return false; } else { String publicIp = usageIp.getAddress(); long[] bytesSentRcvd = answer.get(publicIp); @@ -434,6 +436,10 @@ public class NetworkUsageManagerImpl implements NetworkUsageManager, ResourceSta } } + if(collectedStats.size() == 0){ + s_logger.debug("No new direct network stats. No need to persist"); + return false; + } //Persist all the stats and last_collection time in a single transaction Transaction txn = Transaction.open(Transaction.CLOUD_DB); try {