abh1sar opened a new issue, #13070:
URL: https://github.com/apache/cloudstack/issues/13070

   ### problem
   
   When `EVENT_VM_BACKUP_USAGE_METRIC` events are processed, `Usage Manager` 
performs an in-place UPDATE of the single usage_backup row for a given (vm_id, 
backup_offering_id) pair. This means only the most recently received size is 
retained. When BackupUsageParser runs at billing time, it reads that single row 
and applies its size to the entire billing window duration, regardless of when 
the size actually changed.
   
   
   ### versions
   
   ACS 4.20
   
   ### The steps to reproduce the bug
   
   The problem is independent of the provider but I am using NAS for testing: 
   1. Set usage.stats.job.exec.time to `10:00`
   2. Assign a backup offering to a VM at `11:00`
   3. Create a backup of size 1GB at `11:00`
   4. Create a backup of size 99GB at `09:00` the next day
   5. Wait for usage job to run and finish at `10:00` 
   
   ### What to do about it?
   
   **Expected Behavior**
   The user should be charged proportionally: ~23 hours at 1 GB + ~1 hours at 
100 GB 
   
   **Actual Behavior**
   The user is charged at 100 GB for the full 24 hours because the last metric 
event overwrote the size column in-place, erasing all history.
   
   
   **Fix would be to:**
   
   - Find the active row in `usage_backup` (removed IS NULL) for the (vm_id, 
backup_offering_id).
   - Set its removed = eventDate.
   - persist a new UsageBackupVO with the updated size/protectedSize and 
created = eventDate.
   - This matches the existing pattern in UsageNetworksDaoImpl and 
UsageVpcDaoImpl.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to