Response inline: -----Original Message----- From: Rohit Yadav [mailto:rohit.ya...@shapeblue.com] Sent: Monday, March 16, 2015 3:41 PM To: dev Cc: Kishan Kavala Subject: [DISCUSS] Usage server: when can start end be after end date?
Hi, In the usage server, when can a resource (say volumes) have their creation date after end date when calculating usage records/data. For example this check: https://github.com/apache/cloudstack/blob/master/usage/src/com/cloud/usage/parser/VolumeUsageParser.java#L106 In which cases/scenarios, will we hit that? [KK] Issue is due to the SQL query(GET_ALL_USAGE_RECORDS) in Usage**DaoImpl. If the usage job does not run for few days, records are processed in bulk when it runs the next time. In Vm usage for example, If there are multiple stop/starts during that period, usage_vm_instance will contain multiple entries for the same Vm. The last entry will have end_date = null if the Vm is still running. The entry with null end_date is always returned with this query irrespective of the start/end dates of the job. This may result in negative usage in some cases. Ideally this should be fixed in the Dao, instead of adding the check mentioned above. Lastly, what happens if a resource usage is less than an aggregation period or does not evenly divide into one. For example, if resource usage were billed/generated hourly and if I use a VM for a 1.3 hours, will I have usage data/records for an hour or 2 hours or 1.3 hours? [KK] If the aggregation period is 1 hr, there will be two usage records X1 and X2. Raw_usage for X1 + X2 will = 1.3hrs. It could be 1hr in the 1st record and 0.3 hrs in the 2nd record. Depends on when the resource was allocated/released. It won't be 1hr or 2hrs for sure.