Kishan: Is there a reason this wasn't also added to 4.0 branch (it was filed against 4.0.0, but only applied to 4.1 and master)
--David On Tue, Feb 26, 2013 at 5:57 AM, <kis...@apache.org> wrote: > Updated Branches: > refs/heads/4.1 c7935a9ab -> 03fdbfb29 > > > CLOUDSTACK-962:setAggBytesSent/setAggBytesReceived in NetworkUsageTask when > not in case of dailyor hourly > Removed duplicate userstatsdao injection > > > Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo > Commit: > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/03fdbfb2 > Tree: > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/03fdbfb2 > Diff: > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/03fdbfb2 > > Branch: refs/heads/4.1 > Commit: 03fdbfb29193885830de90edcbb6f71bd0baf487 > Parents: c7935a9 > Author: Wei Zhou <w.z...@leaseweb.com> > Authored: Tue Feb 26 16:25:03 2013 +0530 > Committer: Kishan Kavala <kis...@cloud.com> > Committed: Tue Feb 26 16:26:30 2013 +0530 > > ---------------------------------------------------------------------- > .../router/VirtualNetworkApplianceManagerImpl.java | 33 ++++++++++---- > .../com/cloud/user/dao/UserStatisticsDaoImpl.java | 18 ++++---- > usage/src/com/cloud/usage/UsageManagerImpl.java | 2 +- > 3 files changed, 33 insertions(+), 20 deletions(-) > ---------------------------------------------------------------------- > > > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/03fdbfb2/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java > ---------------------------------------------------------------------- > diff --git > a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java > b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java > index 980d482..abb4973 100755 > --- > a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java > +++ > b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java > @@ -293,8 +293,6 @@ public class VirtualNetworkApplianceManagerImpl extends > ManagerBase implements V > UserVmDao _userVmDao; > @Inject VMInstanceDao _vmDao; > @Inject > - UserStatisticsDao _statsDao = null; > - @Inject > NetworkOfferingDao _networkOfferingDao = null; > @Inject > GuestOSDao _guestOSDao = null; > @@ -364,7 +362,9 @@ public class VirtualNetworkApplianceManagerImpl extends > ManagerBase implements V > private String _usageTimeZone = "GMT"; > private final long mgmtSrvrId = MacAddress.getMacAddress().toLong(); > private static final int ACQUIRE_GLOBAL_LOCK_TIMEOUT_FOR_COOPERATION = > 5; // 5 seconds > - > + private static final int USAGE_AGGREGATION_RANGE_MIN = 10; // 10 > minutes, same as com.cloud.usage.UsageManagerImpl.USAGE_AGGREGATION_RANGE_MIN > + private boolean _dailyOrHourly = false; > + > ScheduledExecutorService _executor; > ScheduledExecutorService _checkExecutor; > ScheduledExecutorService _networkStatsUpdateExecutor; > @@ -728,6 +728,7 @@ public class VirtualNetworkApplianceManagerImpl extends > ManagerBase implements V > cal.roll(Calendar.DAY_OF_YEAR, true); > cal.add(Calendar.MILLISECOND, -1); > endDate = cal.getTime().getTime(); > + _dailyOrHourly = true; > } else if (_usageAggregationRange == HOURLY_TIME) { > cal.roll(Calendar.HOUR_OF_DAY, false); > cal.set(Calendar.MINUTE, 0); > @@ -736,8 +737,15 @@ public class VirtualNetworkApplianceManagerImpl extends > ManagerBase implements V > cal.roll(Calendar.HOUR_OF_DAY, true); > cal.add(Calendar.MILLISECOND, -1); > endDate = cal.getTime().getTime(); > + _dailyOrHourly = true; > } else { > endDate = cal.getTime().getTime(); > + _dailyOrHourly = false; > + } > + > + if (_usageAggregationRange < USAGE_AGGREGATION_RANGE_MIN) { > + s_logger.warn("Usage stats job aggregation range is to small, > using the minimum value of " + USAGE_AGGREGATION_RANGE_MIN); > + _usageAggregationRange = USAGE_AGGREGATION_RANGE_MIN; > } > > _networkStatsUpdateExecutor.scheduleAtFixedRate(new > NetworkStatsUpdateTask(), (endDate - System.currentTimeMillis()), > @@ -854,7 +862,7 @@ public class VirtualNetworkApplianceManagerImpl extends > ManagerBase implements V > final NetworkUsageCommand usageCmd = new > NetworkUsageCommand(privateIP, router.getHostName(), > forVpc, routerNic.getIp4Address()); > String routerType = > router.getType().toString(); > - UserStatisticsVO previousStats = > _statsDao.findBy(router.getAccountId(), > + UserStatisticsVO previousStats = > _userStatsDao.findBy(router.getAccountId(), > router.getDataCenterId(), > network.getId(), (forVpc ? routerNic.getIp4Address() : null), router.getId(), > routerType); > NetworkUsageAnswer answer = null; > try { > @@ -876,7 +884,7 @@ public class VirtualNetworkApplianceManagerImpl extends > ManagerBase implements V > continue; > } > txn.start(); > - UserStatisticsVO stats = > _statsDao.lock(router.getAccountId(), > + UserStatisticsVO stats = > _userStatsDao.lock(router.getAccountId(), > router.getDataCenterId(), > network.getId(), (forVpc ? routerNic.getIp4Address() : null), router.getId(), > routerType); > if (stats == null) { > s_logger.warn("unable to find > stats for account: " + router.getAccountId()); > @@ -912,7 +920,12 @@ public class VirtualNetworkApplianceManagerImpl extends > ManagerBase implements V > > stats.setNetBytesSent(stats.getNetBytesSent() + stats.getCurrentBytesSent()); > } > > stats.setCurrentBytesSent(answer.getBytesSent()); > - _statsDao.update(stats.getId(), > stats); > + if (! _dailyOrHourly) { > + //update agg bytes > + > stats.setAggBytesSent(stats.getNetBytesSent() + stats.getCurrentBytesSent()); > + > stats.setAggBytesReceived(stats.getNetBytesReceived() + > stats.getCurrentBytesReceived()); > + } > + _userStatsDao.update(stats.getId(), > stats); > txn.commit(); > } catch (Exception e) { > txn.rollback(); > @@ -954,7 +967,7 @@ public class VirtualNetworkApplianceManagerImpl extends > ManagerBase implements V > try { > txn.start(); > //get all stats with delta > 0 > - List<UserStatisticsVO> updatedStats = > _statsDao.listUpdatedStats(); > + List<UserStatisticsVO> updatedStats = > _userStatsDao.listUpdatedStats(); > Date updatedTime = new Date(); > for(UserStatisticsVO stat : updatedStats){ > //update agg bytes > @@ -3598,7 +3611,7 @@ public class VirtualNetworkApplianceManagerImpl extends > ManagerBase implements V > boolean forVpc = router.getVpcId() != null; > final NetworkUsageCommand usageCmd = new > NetworkUsageCommand(privateIP, router.getHostName(), > forVpc, routerNic.getIp4Address()); > - UserStatisticsVO previousStats = > _statsDao.findBy(router.getAccountId(), > + UserStatisticsVO previousStats = > _userStatsDao.findBy(router.getAccountId(), > router.getDataCenterId(), network.getId(), null, > router.getId(), router.getType().toString()); > NetworkUsageAnswer answer = null; > try { > @@ -3620,7 +3633,7 @@ public class VirtualNetworkApplianceManagerImpl extends > ManagerBase implements V > continue; > } > txn.start(); > - UserStatisticsVO stats = > _statsDao.lock(router.getAccountId(), > + UserStatisticsVO stats = > _userStatsDao.lock(router.getAccountId(), > router.getDataCenterId(), > network.getId(), null, router.getId(), router.getType().toString()); > if (stats == null) { > s_logger.warn("unable to find stats for > account: " + router.getAccountId()); > @@ -3656,7 +3669,7 @@ public class VirtualNetworkApplianceManagerImpl extends > ManagerBase implements V > > stats.setNetBytesSent(stats.getNetBytesSent() + stats.getCurrentBytesSent()); > } > stats.setCurrentBytesSent(answer.getBytesSent()); > - _statsDao.update(stats.getId(), stats); > + _userStatsDao.update(stats.getId(), stats); > txn.commit(); > } catch (Exception e) { > txn.rollback(); > > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/03fdbfb2/server/src/com/cloud/user/dao/UserStatisticsDaoImpl.java > ---------------------------------------------------------------------- > diff --git a/server/src/com/cloud/user/dao/UserStatisticsDaoImpl.java > b/server/src/com/cloud/user/dao/UserStatisticsDaoImpl.java > index 913ec07..4a1a51c 100644 > --- a/server/src/com/cloud/user/dao/UserStatisticsDaoImpl.java > +++ b/server/src/com/cloud/user/dao/UserStatisticsDaoImpl.java > @@ -44,17 +44,17 @@ public class UserStatisticsDaoImpl extends > GenericDaoBase<UserStatisticsVO, Long > "WHERE > us.account_id = a.id AND (a.removed IS NULL OR a.removed >= ?) " + > "ORDER > BY us.id"; > private static final String UPDATED_STATS_SEARCH = "SELECT id, > current_bytes_received, current_bytes_sent, net_bytes_received, > net_bytes_sent, agg_bytes_received, agg_bytes_sent from user_statistics " + > - > "where (agg_bytes_received > < net_bytes_received + current_bytes_received) OR (agg_bytes_sent < > net_bytes_sent + current_bytes_sent)"; > + "where > (agg_bytes_received < net_bytes_received + current_bytes_received) OR > (agg_bytes_sent < net_bytes_sent + current_bytes_sent)"; > private final SearchBuilder<UserStatisticsVO> AllFieldsSearch; > private final SearchBuilder<UserStatisticsVO> AccountSearch; > - > - > + > + > public UserStatisticsDaoImpl() { > - AccountSearch = createSearchBuilder(); > - AccountSearch.and("account", AccountSearch.entity().getAccountId(), > SearchCriteria.Op.EQ); > - AccountSearch.done(); > + AccountSearch = createSearchBuilder(); > + AccountSearch.and("account", AccountSearch.entity().getAccountId(), > SearchCriteria.Op.EQ); > + AccountSearch.done(); > > - AllFieldsSearch = createSearchBuilder(); > + AllFieldsSearch = createSearchBuilder(); > AllFieldsSearch.and("account", > AllFieldsSearch.entity().getAccountId(), SearchCriteria.Op.EQ); > AllFieldsSearch.and("dc", > AllFieldsSearch.entity().getDataCenterId(), SearchCriteria.Op.EQ); > AllFieldsSearch.and("network", > AllFieldsSearch.entity().getNetworkId(), SearchCriteria.Op.EQ); > @@ -63,7 +63,7 @@ public class UserStatisticsDaoImpl extends > GenericDaoBase<UserStatisticsVO, Long > AllFieldsSearch.and("deviceType", > AllFieldsSearch.entity().getDeviceType(), SearchCriteria.Op.EQ); > AllFieldsSearch.done(); > } > - > + > @Override > public UserStatisticsVO findBy(long accountId, long dcId, long > networkId, String publicIp, Long deviceId, String deviceType) { > SearchCriteria<UserStatisticsVO> sc = AllFieldsSearch.create(); > @@ -133,5 +133,5 @@ public class UserStatisticsDaoImpl extends > GenericDaoBase<UserStatisticsVO, Long > } > return userStats; > } > - > + > } > > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/03fdbfb2/usage/src/com/cloud/usage/UsageManagerImpl.java > ---------------------------------------------------------------------- > diff --git a/usage/src/com/cloud/usage/UsageManagerImpl.java > b/usage/src/com/cloud/usage/UsageManagerImpl.java > index bfdca1d..66af7f4 100644 > --- a/usage/src/com/cloud/usage/UsageManagerImpl.java > +++ b/usage/src/com/cloud/usage/UsageManagerImpl.java > @@ -1430,7 +1430,7 @@ public class UsageManagerImpl extends ManagerBase > implements UsageManager, Runna > timeSinceJob = now - lastSuccess; > } > > - if ((timeSinceJob > 0) && (timeSinceJob > > aggregationDurationMillis)) { > + if ((timeSinceJob > 0) && (timeSinceJob > > (aggregationDurationMillis - 100)) { > if (timeToJob > (aggregationDurationMillis/2)) { > if (s_logger.isDebugEnabled()) { > s_logger.debug("it's been " + > timeSinceJob + " ms since last usage job and " + timeToJob + " ms until next > job, scheduling an immediate job to catch up (aggregation duration is " + > m_aggregationDuration + " minutes)"); >