This is an automated email from the ASF dual-hosted git repository. gabriel pushed a commit to branch statscollector-potential-issues in repository https://gitbox.apache.org/repos/asf/cloudstack.git
commit 9e6bc8c570a9afd9484612d381b202a24983a527 Author: GabrielBrascher <gabr...@apache.org> AuthorDate: Mon Mar 9 09:28:08 2020 -0300 Prevent overflow + add small code enhancements --- .../main/java/com/cloud/server/StatsCollector.java | 29 +++++++++++----------- .../java/com/cloud/server/StatsCollectorTest.java | 6 ----- 2 files changed, 14 insertions(+), 21 deletions(-) diff --git a/server/src/main/java/com/cloud/server/StatsCollector.java b/server/src/main/java/com/cloud/server/StatsCollector.java index 4ec32b6..01d81dd 100644 --- a/server/src/main/java/com/cloud/server/StatsCollector.java +++ b/server/src/main/java/com/cloud/server/StatsCollector.java @@ -192,6 +192,10 @@ public class StatsCollector extends ManagerBase implements ComponentMethodInterc private static final String DISK_WRITE_IOPS_FIELD = "disk_write_iops"; private static final String DISK_WRITE_KBS_FIELD = "disk_write_kbs"; + private static final int HOURLY_TIME = 60; + private static final int DAILY_TIME = HOURLY_TIME * 24; + private static final Long ONE_MINUTE_IN_MILLISCONDS = 60000L; + private static final String DEFAULT_DATABASE_NAME = "cloudstack"; private static final String INFLUXDB_HOST_MEASUREMENT = "host_stats"; private static final String INFLUXDB_VM_MEASUREMENT = "vm_stats"; @@ -328,11 +332,11 @@ public class StatsCollector extends ManagerBase implements ComponentMethodInterc protected void init(Map<String, String> configs) { _executor = Executors.newScheduledThreadPool(6, new NamedThreadFactory("StatsCollector")); - hostStatsInterval = NumbersUtil.parseLong(configs.get("host.stats.interval"), 60000L); - hostAndVmStatsInterval = NumbersUtil.parseLong(configs.get("vm.stats.interval"), 60000L); - storageStatsInterval = NumbersUtil.parseLong(configs.get("storage.stats.interval"), 60000L); - volumeStatsInterval = NumbersUtil.parseLong(configs.get("volume.stats.interval"), 600000L); - autoScaleStatsInterval = NumbersUtil.parseLong(configs.get("autoscale.stats.interval"), 60000L); + hostStatsInterval = NumbersUtil.parseLong(configs.get("host.stats.interval"), ONE_MINUTE_IN_MILLISCONDS); + hostAndVmStatsInterval = NumbersUtil.parseLong(configs.get("vm.stats.interval"), ONE_MINUTE_IN_MILLISCONDS); + storageStatsInterval = NumbersUtil.parseLong(configs.get("storage.stats.interval"), ONE_MINUTE_IN_MILLISCONDS); + volumeStatsInterval = NumbersUtil.parseLong(configs.get("volume.stats.interval"), ONE_MINUTE_IN_MILLISCONDS); + autoScaleStatsInterval = NumbersUtil.parseLong(configs.get("autoscale.stats.interval"), ONE_MINUTE_IN_MILLISCONDS); String statsUri = statsOutputUri.value(); if (StringUtils.isNotBlank(statsUri)) { @@ -427,8 +431,6 @@ public class StatsCollector extends ManagerBase implements ComponentMethodInterc Calendar cal = Calendar.getInstance(usageTimezone); cal.setTime(new Date()); long endDate = 0; - int HOURLY_TIME = 60; - final int DAILY_TIME = 60 * 24; if (_usageAggregationRange == DAILY_TIME) { cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); @@ -454,9 +456,9 @@ public class StatsCollector extends ManagerBase implements ComponentMethodInterc s_logger.warn("Usage stats job aggregation range is to small, using the minimum value of " + UsageUtils.USAGE_AGGREGATION_RANGE_MIN); _usageAggregationRange = UsageUtils.USAGE_AGGREGATION_RANGE_MIN; } - _diskStatsUpdateExecutor.scheduleAtFixedRate(new VmDiskStatsUpdaterTask(), (endDate - System.currentTimeMillis()), (_usageAggregationRange * 60 * 1000), - TimeUnit.MILLISECONDS); - + + long period = _usageAggregationRange * ONE_MINUTE_IN_MILLISCONDS; + _diskStatsUpdateExecutor.scheduleAtFixedRate(new VmDiskStatsUpdaterTask(), (endDate - System.currentTimeMillis()), period, TimeUnit.MILLISECONDS); } /** @@ -1209,7 +1211,7 @@ public class StatsCollector extends ManagerBase implements ComponentMethodInterc for (AutoScaleVmGroupPolicyMapVO asVmgPmap : listMap) { AutoScalePolicyVO policyVO = _asPolicyDao.findById(asVmgPmap.getPolicyId()); if (policyVO != null) { - Integer quitetime = policyVO.getQuietTime(); + int quitetime = policyVO.getQuietTime(); Date quitetimeDate = policyVO.getLastQuiteTime(); long last_quitetime = 0L; if (quitetimeDate != null) { @@ -1236,7 +1238,7 @@ public class StatsCollector extends ManagerBase implements ComponentMethodInterc if (counter_param.equals(counter_source.toString())) break; counter_count++; - } while (1 == 1); + } while (true); Double sum = avgCounter.get(counter_count); Double avg = sum / currentVM; @@ -1526,9 +1528,6 @@ public class StatsCollector extends ManagerBase implements ComponentMethodInterc boolean ioWriteDifferentFromPrevious = previousVmDiskStats.getCurrentIOWrite() != currentVmDiskStats.getCurrentIOWrite(); return bytesReadDifferentFromPrevious || bytesWriteDifferentFromPrevious || ioReadDifferentFromPrevious || ioWriteDifferentFromPrevious; } - if (currentVmDiskStats == null) { - return false; - } return true; } diff --git a/server/src/test/java/com/cloud/server/StatsCollectorTest.java b/server/src/test/java/com/cloud/server/StatsCollectorTest.java index 040d08d..70416e8 100644 --- a/server/src/test/java/com/cloud/server/StatsCollectorTest.java +++ b/server/src/test/java/com/cloud/server/StatsCollectorTest.java @@ -160,12 +160,6 @@ public class StatsCollectorTest { } @Test - public void isCurrentVmDiskStatsDifferentFromPreviousTestBothNull() { - boolean result = statsCollector.isCurrentVmDiskStatsDifferentFromPrevious(null, null); - Assert.assertFalse(result); - } - - @Test public void isCurrentVmDiskStatsDifferentFromPreviousTestDifferentIoWrite() { configureAndTestisCurrentVmDiskStatsDifferentFromPrevious(123l, 123l, 123l, 12l, true); }