Branch: refs/heads/jsanda/metrics-schema Home: https://github.com/rhq-project/rhq Commit: e47353b003ebc11168f7869d9bd28c52bc93f094 https://github.com/rhq-project/rhq/commit/e47353b003ebc11168f7869d9bd28c52bc... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/common/cassandra-schema/src/main/resources/schema/update/0002.xml M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsDAO.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/SchedulingSynchronizer.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/AggregateCacheMapper.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/AggregationType.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/Aggregator.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BatchResult.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/CacheMapper.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/ComputeMetric.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/ProcessBatch.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/RawCacheMapper.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/domain/AggregateNumericMetric.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/domain/AggregateType.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/domain/MetricsTable.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/domain/NumericMetric.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/domain/RawNumericMetric.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/AggregationTests.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsDAOTest.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsPerfTests.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsTest.java M modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/MeasurementAggregator.java M modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/Simulator.java
Log Message: ----------- first cut at metrics_cache table which replaces metrics_index table
The number of reads performed during aggregation grow linearly in proportion to the number of schedules with data to be aggregated. In the worst case scenario when 1 hr and 6 hr data are aggregated along with raw data, the number of reads is 3 * N where N is the number of schedules. If there are a million schedules with data, then a million reads have to be performed just to aggregate the raw data.
The new metrics_cache table allows us to dramatically reduce the number of reads. When raw data for example is stored it is now written to both the raw_data table as well as the metrics_cache table. A single partition, i.e., row, in metrics_cache contains data for some configurable number of schedules. Right now it defaults to 100. Each partition in metrics_cache contains data only for a given time slice, e.g., 18:00 to 19:00. Once aggregation has run for that time slice, the partition is deleted.
If we have a million schedules with raw data and 100 schedules are being stored per partition in metrics_cache, then the number of reads drops from 1 million to 10,000. That is a 99% reduction in the number of reads. And this reduction will not come with a sharp increase in memory utilization.
Commit: b00b191dafb3dae483006dd3ab591ea798c5e31d https://github.com/rhq-project/rhq/commit/b00b191dafb3dae483006dd3ab591ea798... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/SchedulingSynchronizer.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/TaskTracker.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/AggregationManager.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/Aggregator.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/Aggregator2.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/ProcessBatch.java
Log Message: ----------- Some refactoring and fixing bug in TaskTracker
Moving code to process batches into Aggregator2 (which will be renamed). Part of the reason for this refactoring is logging. Info or debug level logging can be turned on for AggregationManager without flooding the log file with a lot of log statements.
TaskTracker provides synchronization for schedules tasks. It is used to track when all of the scheduled tasks have completed. CountDownLatch cannot be used anymore because it requires you to specify the number of tasks or events up front. This worked fine with the metrics_index table since we were only querying against a single row, and we would iterate over the result set to get the count. It is not know in advance though how many rows there will be in metrics_cache so a different sychronization mechanism was needed.
Lastly I should mention that I am not referring to CQL rows here but rather rows at the actual storage layer, i.e., thrift rows.
Commit: 122e51731dab09d16d80eead4cbbd81d21bafced https://github.com/rhq-project/rhq/commit/122e51731dab09d16d80eead4cbbd81d21... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/AggregationManager.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/AggregationState.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/Aggregator.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/Aggregator2.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BatchAggregationScheduler.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BatchAggregationState.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BatchAggregator.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/Compute1HourData.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/Compute24HourData.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/Compute6HourData.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/OneHourDataScheduler.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/RawDataScheduler.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/SixHourDataScheduler.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/AggregationTests.java
Log Message: ----------- more clean up, removing classes that are now unused.
Commit: 67c7cced5fca21e2e2a63f470499ef51c2203955 https://github.com/rhq-project/rhq/commit/67c7cced5fca21e2e2a63f470499ef51c2... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/TaskTracker.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/AggregateCacheMapper.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/AggregationManager.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/Aggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/RawCacheMapper.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/TaskTracker.java
Log Message: ----------- update logging to output number of schedules aggregated
Commit: 387078d556cd41d598298c7db03e1861c89888bb https://github.com/rhq-project/rhq/commit/387078d556cd41d598298c7db03e1861c8... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/AggregateCacheMapper.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/CacheMapper.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/RawCacheMapper.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/AggregateCacheMapper.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/AggregationType.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/CacheMapper.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/ProcessBatch.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/RawCacheMapper.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/AggregationTests.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsDAOTest.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsTest.java
Log Message: ----------- cleaning up and re-enabling some tests
This commit also updates the logic for determine when aggregation last ran after a server outage. It is a bit more complicated now since with metrics_cache there can be multiple partitions per time slice; so, we have to iterate over all possible partitiion keys per time slice, and if we fail to find any data, only then do we check the previous time slice. It was eaasier with the metrics_index table because there was only one partition per time slice.
Commit: 7d94956725c0cbb2459bd858211c251f2c67385c https://github.com/rhq-project/rhq/commit/7d94956725c0cbb2459bd858211c251f2c... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsTest.java
Log Message: ----------- re-enabling and updating tests in MetricsServerTest
Commit: 5e37a59d4d9a884714e19bc3dd3824fd853cc592 https://github.com/rhq-project/rhq/commit/5e37a59d4d9a884714e19bc3dd3824fd85... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementSchedule.java M modules/enterprise/server/itests-2/src/test/java/org/rhq/enterprise/server/measurement/MeasurementDataManagerBeanTest.java M modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementScheduleManagerBean.java M modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementScheduleManagerLocal.java M modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/scheduler/jobs/DataPurgeJob.java M modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/storage/StorageClientManager.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java
Log Message: ----------- update server code to pass min/max schedule ids to MetricsServer
Commit: ff11bf30bd966555e78c106701762f0de396db49 https://github.com/rhq-project/rhq/commit/ff11bf30bd966555e78c106701762f0de3... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/StorageResultSetFuture.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/Aggregator.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BatchException.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BatchFailureListener.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/ProcessBatch.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/AggregationTests.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsDAOTest.java
Log Message: ----------- adding some initial support for failure handling
This commit gives the capability to log stack traces when exceptions occur while processing a batch of futures. More importantly, this is a step towards providing fail fast behavior. Suppose we provide a configurable threshold for failures, and when that threshold is passed, we abort the aggregation so that it can be retried at some later time.
Commit: d5fc0724b727df4633f769201879e5a754fc699c https://github.com/rhq-project/rhq/commit/d5fc0724b727df4633f769201879e5a754... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/TaskTracker.java
Log Message: ----------- making some changes based on feedback from code review
The wait() notify() calls have been replaced with a CountDownLatch to address the scenario in which notify() is invoked before wait(). JavaDoc has also been added to explain usage.
Commit: d88ae4f7fd4910e29a2c2121005532586c278a84 https://github.com/rhq-project/rhq/commit/d88ae4f7fd4910e29a2c2121005532586c... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/data-migration/src/main/java/org/rhq/server/metrics/migrator/workers/MetricsIndexUpdateAccumulator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsDAO.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/Aggregator.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/domain/MetricsIndexEntry.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/domain/MetricsIndexEntryMapper.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/domain/MetricsTable.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsDAOTest.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsPerfTests.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsTest.java
Log Message: ----------- remove references to now obsolete metrics_index table
There is still a reference in the data migration code. That will be addressed in a separate task.
Commit: 806efb632cf8bbcffcf3c2c912868be3ad30186c https://github.com/rhq-project/rhq/commit/806efb632cf8bbcffcf3c2c912868be3ad... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/AggregationManager.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/AggregationType.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/AggregationTests.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsDAOTest.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsTest.java
Log Message: ----------- changing naming convention for the bucket column in metrics_cache
Previously when inserting a row into metrics_index, the bucket column would have the next wider bucket as its value. For example, if we inserted raw data, then we would update metrics_index with the bucket column having a value of "one_hour_metrics". With the schema changes to start using metrics_cache in place of metrics_index, this approach got confusing. The bucket column now is set to the name of the historical table in which data is being written.
Commit: 0210edbe55e9914106723fd1843aec6ddb862968 https://github.com/rhq-project/rhq/commit/0210edbe55e9914106723fd1843aec6ddb... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/common/cassandra-schema/src/main/resources/schema/update/0002.xml M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsDAO.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/domain/CacheIndexEntry.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/domain/CacheIndexEntryMapper.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/domain/MetricsTable.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsDAOTest.java
Log Message: ----------- adding metrics_cache_index table to schema along with initial query support
Commit: e782f303bd088415785880a044e97accba686a1c https://github.com/rhq-project/rhq/commit/e782f303bd088415785880a044e97accba... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsDAO.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/domain/CacheIndexEntryMapper.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/AggregationTests.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsTest.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/WaitForRawInserts.java
Log Message: ----------- update metrics_cache_index when inserting raw data
Commit: 04d318dfdb5ba41d6f4a7cc513dc6d63f7dc446e https://github.com/rhq-project/rhq/commit/04d318dfdb5ba41d6f4a7cc513dc6d63f7... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsTest.java
Log Message: ----------- updating, refactoring tests
Commit: b7821c13747a7cf2ba5d34c01673d96b6ff5809a https://github.com/rhq-project/rhq/commit/b7821c13747a7cf2ba5d34c01673d96b6f... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsTest.java
Log Message: ----------- do not insert raw data that is too old
This initial support caps the age at 24 hours. The plan going forward however is to make that cap configurable.
Commit: 298ceb07347828e12588d79a9e76f84e58aee337 https://github.com/rhq-project/rhq/commit/298ceb07347828e12588d79a9e76f84e58... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/AggregationManager.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/Aggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BatchResult.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/ProcessBatch.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/AggregationTests.java A modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/InMemoryMetricsDB.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsTest.java M modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/Simulator.java
Log Message: ----------- update metrics_cache and metrics_cache_index for 1 hour and 6 hour data
This commit also introduces a big refactoring of AggregationTests. Tracking and updating expected values was tedious and error prone; consequently, I introduced InMemoryMetricsDB.
Commit: 1469e4dbe348006adee92a293a7f38893550a4c2 https://github.com/rhq-project/rhq/commit/1469e4dbe348006adee92a293a7f388935... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/AggregationTests.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/InMemoryMetricsDB.java
Log Message: ----------- re-enabling 24 hour data tests
Commit: 603120d619c9bf290a4a0d4fdb606e269d10e82e https://github.com/rhq-project/rhq/commit/603120d619c9bf290a4a0d4fdb606e269d... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/common/cassandra-schema/src/main/resources/schema/update/0002.xml M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/DateTimeService.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsDAO.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/AggregationManager.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/Aggregator.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/PastDataAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/ProcessBatch.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/domain/CacheIndexEntryMapper.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/domain/NumericMetric.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/AggregationTests.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/InMemoryMetricsDB.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsDAOTest.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsTest.java
Log Message: ----------- adding initial support for aggregating late/past data
There are two main changes in this commit. The first is the initial suppport for aggregating late data. That is, raw data that is stored after its time slice has already passed.
The schema for metrics_cache_index is changed slightly as well. We now order by the time column before the start_schedule_id column. And we are always storing the day, i.e., hour zero in the time_slice column. This reduces the number of queries that need to be performed when looking to see if there is past data to aggregate.
There is still work to do for handling late data along with a bunch of clean up and refactoring. I am trying to consolidate the logic as much as possible for aggregating past data and for current data so as to avoid a lot of the code duplication that is going on right now.
Commit: d8eca23a787115028214b80a49ae9efa954efc7f https://github.com/rhq-project/rhq/commit/d8eca23a787115028214b80a49ae9efa95... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/AggregationManager.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/Aggregator.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BaseAggregator.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BatchResult.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/CacheAggregator.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/CacheIterator.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/ComputeMetric.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/IndexAggregatesPair.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/PastDataAggregator.java R modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/ProcessBatch.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/domain/CacheIndexEntry.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/AggregationTests.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsPerfTests.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsTest.java
Log Message: ----------- major refactoring to consolidate common aggregation functions
After adding initial support for aggregating old/past data, it was evident that there was a lot of duplicate functionality around aggregating past and current data. This commit introduces a new class, BaseAggregator, which contains common functions. Aggregation has been renamed to CacheAggregator since it only works with data out of the metrics_cache table.
This is also the initial commit for CacheIterator. The computeAggregates function, in its previous forms, took a list of result sets as input. The computations to be performed for past and current data is the same, but the format of the input differed. Now the input is an Iterable so that the function can be used with both past and current data.
Commit: f1afb402d59da8a83b402569121e8559215991c4 https://github.com/rhq-project/rhq/commit/f1afb402d59da8a83b402569121e855921... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementSchedule.java M modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementScheduleManagerBean.java M modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementScheduleManagerLocal.java M modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/scheduler/jobs/DataPurgeJob.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/AggregationManager.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/AggregationTests.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java
Log Message: ----------- updating logic for determining most recent raw data after server outage
This commit also remove the logic around the min/max scheudle ids. Previously we needed the min and max schedule ids in order to determine the possible set of rows in metrics_cache. This is no longer necessary though since we track the schedule ids in metrics_cache_index.
Commit: 40a76f8ef13f795e59e104a5343c37343c60c312 https://github.com/rhq-project/rhq/commit/40a76f8ef13f795e59e104a5343c37343c... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/DateTimeService.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/AggregationManager.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BaseAggregator.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/DateTimeServiceTest.java
Log Message: ----------- adding more util methods and javadoc to DateTimeService
Commit: 1f76fff8ef95d992b9ff3e2c161f1372864d5dd6 https://github.com/rhq-project/rhq/commit/1f76fff8ef95d992b9ff3e2c161f137286... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/AggregationManager.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BaseAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/CacheAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/PastDataAggregator.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/AggregationTests.java
Log Message: ----------- add support for aggregating cache blocks in PastDataAggregator
If aggregation for a cache block (i.e., partition in metrics_cache) fails, neither the partition nor the corresponding row in metrics_cache_index are deleted. When a subsequent aggregation run is performed, PastDataAggregator will retry those failed partitions. It can be assumed that all data for the time slice is present in metrics_cache; therefore, we can pull data from metrics_cache instead of raw_metrics and potentially reduce query and I/O overhead.
Commit: d70e250e25088c55b397484958cdba8ebdf7c81d https://github.com/rhq-project/rhq/commit/d70e250e25088c55b397484958cdba8ebd... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/DateTimeService.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BaseAggregator.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/CombinedMetricsIterator.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/CombinedMetricsPair.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/PastDataAggregator.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/AggregationTests.java
Log Message: ----------- when the 6 hour time slice has passed for late data, recompute the 6 hour data
This commit is best explained with an example. Suppose the current time is 06:12. We receive a measurement report with data having a timestamp of 05:50. Aggregation will run again at 07:00. The 6 hour time slice for the late data is 00:00 to 06:00, and that time slice has already passed. When aggregation runs, we not only compute the 1 hour aggregate for the data inserted at 05:50, we also recompute the 6 hour aggregate so that the late data is included.
Commit: 412ed2c15230be29470419f8ca858e2f40b82ec3 https://github.com/rhq-project/rhq/commit/412ed2c15230be29470419f8ca858e2f40... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/DateTimeService.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BaseAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/PastDataAggregator.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/AggregationTests.java
Log Message: ----------- update cache and cache index only when necessary for late data
When aggregating late data whose 6 hour time slice has not yet finished, we should update metrics_cache and metrics_cache_index so that the necessary rows are present when 6 hour data aggregation runs. If the 6 hour time slice has already passed, then there is no need to update metrics_cache and metrics_cache_index because we go ahead and recompute the 6 hour data. The same idea holds with 24 hour data. If the 24 hour time slice has not yet finished, then should update metrics_cache and metrics_cache_index so that the necessary rows are present when 24 hour data aggregation runs; however, if the 24 hour time slice has already passed, then there is no need to perform the updates because we will (in the next commit) go ahead and recompute 24 hour data.
Commit: 5313028c39a434c3731b44db3b754c3a0241f6dd https://github.com/rhq-project/rhq/commit/5313028c39a434c3731b44db3b754c3a02... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/DateTimeService.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BaseAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/CombinedMetricsIterator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/CombinedMetricsPair.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/MetricsFuturesPair.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/PastDataAggregator.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/AggregationTests.java
Log Message: ----------- adding support for recomputing 24 hour data
Commit: 186e838152e92e08c439b8cf8bc287194ed5f0e1 https://github.com/rhq-project/rhq/commit/186e838152e92e08c439b8cf8bc287194e... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/DateTimeService.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/AggregationManager.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BaseAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/PastDataAggregator.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/PersistFunctions.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/domain/AggregateNumericMetric.java
Log Message: ----------- refactoring some functions into a utility class
This commit also updates the logic in PastDataAggregator for how it invokes the processCacheBlock method. If the 6 hour time slice has finished, it no longer updates the metrics_cache and metrics_cache_index tables. There are additional changes needed for when PastDataAggregator calls processCacheBlock. It needs to determine if the 6 hour and 24 hour data need to be recomputed similar to what is done in the processBatch method.
Commit: 664ce1493c8b11e113cc328686ec7dfd4d7446f3 https://github.com/rhq-project/rhq/commit/664ce1493c8b11e113cc328686ec7dfd4d... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BaseAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/PastDataAggregator.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/AggregationTests.java
Log Message: ----------- recompute 6 hour data when aggregating late data out of metrics_cache table
If the 6 hour time slice of the late data has passed, we need to recompute the 6 hour data just as we do when we pull data from raw_metrics.
Commit: bdd8a0c63a79245378bf29f74fc91aed416aa001 https://github.com/rhq-project/rhq/commit/bdd8a0c63a79245378bf29f74fc91aed41... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/PastDataAggregator.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/AggregationTests.java M modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/MeasurementAggregator.java
Log Message: ----------- updating test for recomputing 24 hr data when pulling data from metrics_cache
Commit: a9a59caef28a011ab18c6c685d6430c594ebdf11 https://github.com/rhq-project/rhq/commit/a9a59caef28a011ab18c6c685d6430c594... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BaseAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/CacheAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/PastDataAggregator.java
Log Message: ----------- refactoring task scheduling logic
Task scheduling logic has been pulled up into BaseAggregator which is now an abstract class. Subclasses are responsible for creating the Runnable tasks.
Commit: 8374cb7ed96da2a43994484caacadb39c4312b67 https://github.com/rhq-project/rhq/commit/8374cb7ed96da2a43994484caacadb39c4... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/AggregationManager.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BaseAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/CacheAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/PastDataAggregator.java
Log Message: ----------- more refactoring to correctly compute the number of schedules processed
Commit: 209dfeb3a487d1c3803a8a335c90d1f9ac5bb94c https://github.com/rhq-project/rhq/commit/209dfeb3a487d1c3803a8a335c90d1f9ac... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BaseAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/CacheAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/PastDataAggregator.java
Log Message: ----------- introduce AggregationTask to provide error handling
Commit: ab93df669b213f024511d0e89c1177d39d1c894e https://github.com/rhq-project/rhq/commit/ab93df669b213f024511d0e89c1177d39d... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/common/cassandra-schema/src/main/resources/schema/update/0002.xml M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsDAO.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/AggregationManager.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BaseAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/PastDataAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/PersistFunctions.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/domain/CacheIndexEntry.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/domain/CacheIndexEntryMapper.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/AggregationTests.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsDAOTest.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsTest.java
Log Message: ----------- making schema changes to metrics_cache_index table
Some columns have been renamed and a new column has been added. We now have the following timestamp columns - day, collection_time_slice, and insert_time_slice. collection_time_slice is the timestamp provided by the reported data. insert_time_slice is the raw time slice in which the data is inserted. For example, if data is inserted at 17:02, insert_time_slice will be 17:00. And day is the 24 hour time slice of the collection timestamp.
insert_time_slice is the new column. Previously there was a scenario in which we could fail to aggregate data. Suppose aggregation for a cache partition failed. Its cache index entry would be left intact., and note that the set of schedule ids was empty. Then late data is reported in the next time slice. At that point, the cache index entry is updated with the schedule ids of the late data. Prior to this commit we would have only aggregated data for the schedule ids with late data.
Now we always update the schedule ids for the cache index, even for current data. When we have past/late data, we now compare collection_time_slice with insert_time_slice to determine if we can pull data from metrics_cache.
Commit: 03ba9f46751cabbb5da4e5bb593c62ec1d00da0d https://github.com/rhq-project/rhq/commit/03ba9f46751cabbb5da4e5bb593c62ec1d... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsDAO.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BaseAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/CacheAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/PastDataAggregator.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/AggregationTests.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsDAOTest.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsTest.java
Log Message: ----------- fix scheduling logic for past data aggregation tasks
With the addition of the insert_time_slice column, we can now have multiple index entries for a {column_time_slice, start_schedule_id} pair. We can reduce those into a single index entry and submit an aggregation task for that combined entry.
PastDataAggregator also now has a deleteCacheIndexEntries function to take care of deleting all index entries for a {column_time_slice, start_schedule_id} pair.
Commit: a90ea57481c0576c68c4d76c48ecb4bbec0e64ac https://github.com/rhq-project/rhq/commit/a90ea57481c0576c68c4d76c48ecb4bbec... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BaseAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/CacheAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/PastDataAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/domain/CacheIndexEntry.java
Log Message: ----------- more refactoring of processing index entries and adding javadocs
Commit: 5088a4efdbd3b03bd143de07466ee59bcf3ed65d https://github.com/rhq-project/rhq/commit/5088a4efdbd3b03bd143de07466ee59bcf... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BaseAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/CacheAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/PastDataAggregator.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/AggregationTests.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsPerfTests.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsTest.java R modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/SimulatedMetricsServer.java M modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/Simulator.java
Log Message: ----------- refactoring tests and adding javadocs
Commit: b87f4d8824d72190a9ff4160d057a3ef1b3fce6c https://github.com/rhq-project/rhq/commit/b87f4d8824d72190a9ff4160d057a3ef1b... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java
Log Message: ----------- use the same insert time slice for each raw data
There is no need to recompute the insert time slice for each raw data. It is sufficient to use insert time slice timestamp as the starting point at which we beging inserting raw data.
Commit: ca1edcf55afa9856523dc8fce51e2aca9cd9584f https://github.com/rhq-project/rhq/commit/ca1edcf55afa9856523dc8fce51e2aca9c... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BaseAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/CacheAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/CombinedMetricsIterator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/PastDataAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/domain/AggregateNumericMetricMapper.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/domain/CacheIndexEntry.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsPerfTests.java
Log Message: ----------- do not schedule aggregation tasks on I/O thread
I had previously and inadvertently perfoming the scheduling of aggregation tasks on an I/O thread. Long running tasks should never run on an I/O thread. I discovered this mistake in a test environment where I was generating NoHostAvailableExceptions because of this mistake.
This commit also makes a subtle yet significant change in AggregateNumericMetricMapper. It now checks for nulls which it should have been doing all along since we use weak consistency for reads and writes. The change was needed because I was hitting occassional NPEs with past data aggregation when 1 hr and/or 6 hr aggregates have to be computed. It is easiest to explain with an example.
Suppose we are aggregating some past data and we also need to aggregate the 1 hour data into 6 hour data. Almost immediately after computing and storing the 1 hour data for the given time slice, we then fetch all of the 1 hour data for the 6 hour time slice. Unless the query is against the same node to which the preceding write went, the query results might not include all of the data. We do not have to worry about the missing data in the result sets though because we already have the data in memory.
Commit: 980afd404731f748c87eaeda151e55542bf8a453 https://github.com/rhq-project/rhq/commit/980afd404731f748c87eaeda151e55542b... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BaseAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/CacheAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/PastDataAggregator.java
Log Message: ----------- updating logging and adding javadocs
Commit: e0315a311dd908df63e2c1d56a03d68cf47a9f90 https://github.com/rhq-project/rhq/commit/e0315a311dd908df63e2c1d56a03d68cf4... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/AggregationManager.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/BaseAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/CacheAggregator.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/aggregation/PastDataAggregator.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/AggregationTests.java
Log Message: ----------- add support for "decactivating" metrics_cache
Deactivating metrics_cache results in data *not* being pulled from it. This applies to both past and current data. Once a specified time has been reached, it is reactived and we start pulling from metrics_cache again. This logic is necessary for two purrposes. First, we need it simplify and speed up the data migration that will be necessary when upgrading to RHQ 4.11. Secondly, it is necessary for the resizing of cache partitions to take effect. For example, suppose we store data for up to 5 schedules per cache partition. We decide to store data for 10 schedules per partition. We need to deactivate the cache while the change takes effect.
Commit: 16ee3c44bb6a4084a6a08358b9328c7eccb5ae24 https://github.com/rhq-project/rhq/commit/16ee3c44bb6a4084a6a08358b9328c7ecc... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/MetricsServerTest.java M modules/helpers/metrics-simulator/src/main/java/org/rhq/metrics/simulator/Simulator.java
Log Message: ----------- fixing merge conflicts from rebase
Commit: 16ffd42907281ed72434fc18e5a8adfd1c41d303 https://github.com/rhq-project/rhq/commit/16ffd42907281ed72434fc18e5a8adfd1c... Author: John Sanda jsanda@redhat.com Date: 2014-04-28 (Mon, 28 Apr 2014)
Changed paths: M modules/common/cassandra-schema/pom.xml M modules/common/cassandra-schema/src/main/java/org/rhq/cassandra/schema/AbstractManager.java A modules/common/cassandra-schema/src/main/java/org/rhq/cassandra/schema/CQLStep.java A modules/common/cassandra-schema/src/main/java/org/rhq/cassandra/schema/DBConnectionFactory.java A modules/common/cassandra-schema/src/main/java/org/rhq/cassandra/schema/PopulateCacheIndex.java M modules/common/cassandra-schema/src/main/java/org/rhq/cassandra/schema/SchemaManager.java A modules/common/cassandra-schema/src/main/java/org/rhq/cassandra/schema/SchemaUpdateThreadFactory.java A modules/common/cassandra-schema/src/main/java/org/rhq/cassandra/schema/Step.java M modules/common/cassandra-schema/src/main/java/org/rhq/cassandra/schema/UpdateFile.java M modules/common/cassandra-schema/src/main/java/org/rhq/cassandra/schema/VersionManager.java M modules/common/cassandra-schema/src/main/resources/schema/update/0002.xml A modules/common/cassandra-schema/src/main/resources/schema/update/0003.xml M modules/common/cassandra-schema/src/test/java/org/rhq/cassandra/schema/UpdateFileTest.java M modules/core/dbutils/src/main/scripts/dbsetup/sysconfig-data.xml M modules/core/dbutils/src/main/scripts/dbupgrade/db-upgrade.xml M modules/core/domain/src/main/java/org/rhq/core/domain/common/composite/SystemSetting.java M modules/enterprise/server/installer/pom.xml M modules/enterprise/server/installer/src/main/java/org/rhq/enterprise/server/installer/InstallerServiceImpl.java M modules/enterprise/server/installer/src/main/resources/module/main/module.xml M modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/storage/StorageClientManager.java M modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/MetricsServer.java
Log Message: ----------- Adding data migration support needed during upgrades
The C* schema management tool has been changed such that it now supports arbitrary tasks in addition to raw CQL statements. An arbitrary task/step must implement the new Step interface. PopulateCacheIndex is one such custom task that migrates data out of metrics_index and into metrics_cache_index.
A property has been added to the system settings for the cache activation time. PopulateCacheIndex sets that property so the server knows when it can start pulling data from metrics_cache during aggregation. And at server start up, MetricsServer is initialized with the property value.
Compare: https://github.com/rhq-project/rhq/compare/3338fc8dee08...16ffd4290728
rhq-commits@lists.fedorahosted.org