Kishan, this patch can apply on 4.0.1. Wei
-----Original Message----- From: Kishan Kavala [mailto:[email protected]] Sent: 28 February 2013 08:04 To: [email protected] Cc: Wei Zhou Subject: RE: git commit: refs/heads/4.1 - CLOUDSTACK-962:setAggBytesSent/setAggBytesReceived in NetworkUsageTask when not in case of dailyor hourly Removed duplicate userstatsdao injection Yes David. Fix can go into 4.0 branch also. Wei Zhou, Would you be able to port these changes to 4.0 branch? > -----Original Message----- > From: David Nalley [mailto:[email protected]] > Sent: Tuesday, 26 February 2013 8:35 PM > To: [email protected] > Cc: [email protected] > Subject: Re: git commit: refs/heads/4.1 - CLOUDSTACK- > 962:setAggBytesSent/setAggBytesReceived in NetworkUsageTask when not > in case of dailyor hourly Removed duplicate userstatsdao injection > > 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, <[email protected]> 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/0 > > 3f > > dbfb2 > > Tree: > > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/03f > > db > > fb2 > > Diff: > > http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/03f > > db > > fb2 > > > > Branch: refs/heads/4.1 > > Commit: 03fdbfb29193885830de90edcbb6f71bd0baf487 > > Parents: c7935a9 > > Author: Wei Zhou <[email protected]> > > Authored: Tue Feb 26 16:25:03 2013 +0530 > > Committer: Kishan Kavala <[email protected]> > > 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/03f > > db > > > fb2/server/src/com/cloud/network/router/VirtualNetworkApplianceManag > er > > Impl.java > > -------------------------------------------------------------------- > > -- > > diff --git > > > a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerI > m > > pl.java > > > b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerI > m > > pl.java > > index 980d482..abb4973 100755 > > --- > > > a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerI > m > > pl.java > > +++ > b/server/src/com/cloud/network/router/VirtualNetworkApplianceManag > > +++ erImpl.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/03f > > db fb2/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/03f > > db fb2/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)"); > >
