storagenode/nodestats: retrieve storage usage starting from last day of previous month

For the storagenode usage graph currently,
1. the graph is still likely to contain spikes on the first day of
the month for a newly setup storagenode because there's no previous
interval_end_time to deduct from.

2. if a node goes offline for too long, say the last usage report
in the storageusage cache has an interval_end_time of
2020-07-30 00:00:00+00:00 and later, it comes back online a few
days later, it requests for the storage usage from the satellite
starting from the current month, say 2021-01-01 00:00:00+00:00,
the calculated hours for the first day would be 48 hours and it
could be wrong because the cache is missing one day usage report.

This PR addresses second issue on the storagenode side by requesting
storage usage data, instead of just a month boundary, request for an
interval starting from the last day of the previous month to the
current day of the current month.
The first one will be a tradeoff and wouldn't really matter since
it will just be an issue on the first day the storagenode joined
the satellite.

Updates https://github.com/storj/storj/issues/4178

Change-Id: I041c56c412030ce013dd77dce11b0b5d6550927b
This commit is contained in:
Clement Sam 2022-08-01 08:52:16 +00:00 committed by Storj Robot
parent 9a539c4830
commit 25f8f678ab

View File

@ -170,6 +170,8 @@ func (cache *Cache) CacheSpaceUsage(ctx context.Context) (err error) {
// get current month edges
startDate, endDate := date.MonthBoundary(time.Now().UTC())
// start from last day of previous month
startDate = startDate.AddDate(0, 0, -1)
return cache.satelliteLoop(ctx, func(satellite storj.NodeID) error {
spaceUsages, err := cache.service.GetDailyStorageUsage(ctx, satellite, startDate, endDate)