public override OverheatingUsersUpdateResults UpdateOverheatingUsers(int threshold, TimeSpan metricReportValidTime, TimeSpan banTime) { if (_readyResults != null) { var result = _readyResults; _readyResults = null; return(result); } return(base.UpdateOverheatingUsers(threshold, metricReportValidTime, banTime)); }
// Update users states and sync DB chnages with local cache private void RenewUtilizationState() { OverheatingUsersUpdateResults overheatUpdateResults = null; lock (_sync) { Initialize(); try { overheatUpdateResults = _utilizationDataProvider.UpdateOverheatingUsers(_overheatingThreshold, _reportValidInterval, _userBanTime); foreach (var userId in overheatUpdateResults.StartedOverheating) { _overheatingUsers.Add(userId); } foreach (var userId in overheatUpdateResults.StoppedOverheating) { _overheatingUsers.Remove(userId); } } catch (Exception ex) { Logger.Error("Failed to update activities execution rates", ex); // someting went wrong. Our local cache can be out of sync with the DB. // Reset initialize to reload the cache on the next request _isInitialized = false; } } if (overheatUpdateResults != null) { using (var uow = ObjectFactory.GetInstance <IUnitOfWork>()) { foreach (var user in overheatUpdateResults.StartedOverheating) { NotifyUser(uow, user); } } } }
public void SetOverheatingResults(OverheatingUsersUpdateResults results) { _readyResults = results; }