Branch: refs/heads/master Home: https://github.com/rhq-project/rhq Commit: ba64f2134a51b7e0cbd445032da95d7381b590ce https://github.com/rhq-project/rhq/commit/ba64f2134a51b7e0cbd445032da95d7381... Author: John Sanda jsanda@redhat.com Date: 2014-09-23 (Tue, 23 Sep 2014)
Changed paths: M modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/core/StartupBean.java M modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/storage/StorageClientManager.java A modules/enterprise/server/server-metrics/src/main/java/org/rhq/server/metrics/InsertStatements.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/invalid/InvalidMetricsManager.java M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/CassandraIntegrationTest.java A modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/InsertStatementsTest.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 M modules/enterprise/server/server-metrics/src/test/java/org/rhq/server/metrics/invalid/InvalidMetricsManagerTest.java
Log Message: ----------- [BZ 1114199] Make sure data expiration is consistent for late data
Raw data has a retention of 7 days. Previously if we inserted late data that was a day old, you might expect that it would expire in 6 days; however, the data actually expire in 7 days. This is because the TTL and column timestamp cannot be bind variables in Cassandra 1.2.x prepared statements. This commit fixes the problem so that the one day old data will expire in 6 days. This is accomplished without sacrificing the use of preared statements.
A cache of prepared statements is now used. Theere is one statement for each of the past 7 days including today. For data that is 2 days old, we will insert using a prepared statement that has a column timestamp of today minus 2 days, and the data will expire in 5 days.
An EJB timer tasks runs every day at 12:00 AM to remove the oldest statements from the caches and add a new statement for tomorrow. We store an extra prepared statement for tomorrow to deal with scenarios where data is stored right at midnight.