мистика..
От: MadHuman Россия  
Дата: 09.04.19 07:19
Оценка:
Всем привет!
есть код
    public class AppRequestContext{

        public int ExecTimeoutMs = 10 * 60 * 1000;

        bool _IsApiRequest;

        static readonly int _ExecTimeoutMsForApiReqUnderHighCPU = 40 * 000;

        public bool IsApiRequest {
            get { return _IsApiRequest; }
            internal set {
                if (value) {
                    if (SysUtils.CurrentCPULoad > 78) {
                        ExecTimeoutMs = _ExecTimeoutMsForApiReqUnderHighCPU;
                    } else {
                        //время макс. работы - 5мин.
                        ExecTimeoutMs = 300000;
                    }
                }
                _IsApiRequest = value;
            }
        }
    }


при выполнении такого
appCtx.IsApiRequest = true; // appCtx - инстанс класса AppRequestContext
if (appCtx.ExecTimeoutMs==0)
  Logger.LogAssert("shit happens");


иногда логируется ассерт.. причем ассерты бывают только когда система под нагрузкой.. как такое возможно?
работа с контекстом точно однопоточная.

предположительно такое стало после замены
static readonly int _ExecTimeoutMsForApiReqUnderHighCPU = 40000;

на
static readonly int _ExecTimeoutMsForApiReqUnderHighCPU = 40 * 000;

но ведь это же херь какая-то..
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.