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));
            }
Пример #2
0
        // 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;
 }