Bug 1114199 - Data from late measurement reports should get aggregated
Summary: Data from late measurement reports should get aggregated
Status: ON_QA
Alias: None
Product: RHQ Project
Classification: Other
Component: Core Server, Storage Node
Version: 4.11
Hardware: Unspecified
OS: Unspecified
unspecified vote
Target Milestone: ---
: RHQ 4.13
Assignee: RHQ Project Maintainer
QA Contact: Mike Foley
Depends On:
Blocks: 1114202 1133605 1114200 1114203
TreeView+ depends on / blocked
Reported: 2014-06-28 15:04 UTC by John Sanda
Modified: 2019-03-08 22:42 UTC (History)
1 user (show)

Clone Of:
: 1114200 (view as bug list)
Last Closed:

Attachments (Terms of Use)

Description John Sanda 2014-06-28 15:04:37 UTC
Description of problem:
First I need to define a "late measurement report". The easiest way is with an example. Suppose the current time is 15:00. The data purge job runs and data from 14:00 to 15:00 is aggregated. Let's say that the metrics aggregation finishes at 15:05. The server receives a measurement report at 15:06 that contains timestamps from the 14:00 hour. This is a late measurement report because aggregation has already been run for the time slice of the reported data.

That raw data will get persisted, but in general it will not get aggregated, meaning we will not generate 1 hr, 6 hr, and 24 hr metrics for it. I say in general because it is possible through a server restart that the data could get aggregated.

We need to handle late data because late measurements are not only possible, they are probably fairly common. Work has already been done in master to address late data. https://docs.jboss.org/author/display/RHQ/Aggregation+Schema+Changes describes the changes.

Here is the squash commit in master for the work,

commit hash: fabe6f71458
Version-Release number of selected component (if applicable):

How reproducible:

Steps to Reproduce:

Actual results:

Expected results:

Additional info:

Comment 1 John Sanda 2014-08-25 15:01:58 UTC
I am re-targeting this for RHQ 4.13 due to issues found in 4.12.

Comment 2 John Sanda 2014-09-26 20:39:09 UTC
A number of changes have been made to simplify and improve the data aggregation code. Data aggregation is run hourly during the DataCalcJob (previously during the DataPurgeJob). 1 hr data is aggregated every six hours, and 6 hr data is aggregated every 24 hours. Changes were introduced in RHQ 4.12 to handle late data, but they did not cover all scenarios. See comment 2 in bug 1114202 for details.

Here is how things work now. Every time the job runs, we aggregate all raw, 1 hr, and 6 hr data for time slices that have finished for a specified time range which is determined by the raw data retention period. The date ranges used are,

raw_end = start of current hour
raw_start = raw_end - raw_retention + 1 hr

1hr_end = start of 6 hr time slice for raw_end
1hr_start = 1hr_end - minus raw_retention

6hr_end = start of 24 hr time slice for raw_end
6hr_start = 6hr_end - raw_retention

Note that raw_retention is 7 days, and currently it is not configurable. The reason for adding back an hour onto raw_start is to avoid recomputing aggregate metrics for an hour in which some or all of the raw data has already expired.

The 1hr_end and 6hr_end variables can be best explained with some background and some examples. The 6 hr time slices are fixed and are as follows,

(inclusive - exclusive)
00:00 - 06:00 
06:00 - 12:00
12:00 - 18:00
18:00 - 24:00

The 24 hr time slice is fixed and is,

(inclusive - exclusive)
00:00 - 24:00

If we are aggregating data at 17:00, then the start of the current 6hr time slice would be 12:00. The start of the 24 hr time slice obviously is 00:00.

We first aggregate raw data for all time slices between raw_start and raw_end, then do the same for 1 hr and 6 hr data respectively.

Note You need to log in before you can comment on or make changes to this bug.