92 using namespace std::chrono_literals;
95 auto t = clock_type::now();
102 if (
cv_.wait_until(sl, t, [
this] { return stop_; }))
107 auto const armed =
armed_;
114 static constexpr auto kReportingIntervalSeconds = 10s;
115 static constexpr auto kStallFatalLogMessageTimeLimit = 90s;
116 static constexpr auto kStallLogicErrorTimeLimit = 600s;
118 if (armed && (timeSpentStalled >= kReportingIntervalSeconds))
121 if ((timeSpentStalled % kReportingIntervalSeconds) == 0s)
123 if (timeSpentStalled < kStallFatalLogMessageTimeLimit)
126 <<
"Server stalled for " << timeSpentStalled.count() <<
" seconds.";
128 if (
app_.getJobQueue().isOverloaded())
130 JLOG(
journal_.warn()) <<
"JobQueue: " <<
app_.getJobQueue().getJson(0);
136 <<
"Server stalled for " << timeSpentStalled.count() <<
" seconds.";
137 JLOG(
journal_.fatal()) <<
"JobQueue: " <<
app_.getJobQueue().getJson(0);
144 if (timeSpentStalled >= kStallLogicErrorTimeLimit)
146 JLOG(
journal_.fatal()) <<
"LogicError: Fatal server stall detected. Stalled time: "
147 << timeSpentStalled.count() <<
"s";
148 JLOG(
journal_.fatal()) <<
"JobQueue: " <<
app_.getJobQueue().getJson(0);
155 if (
app_.getJobQueue().isOverloaded())
157 JLOG(
journal_.info()) <<
"Raising local fee (JQ overload): "
158 <<
app_.getJobQueue().getJson(0);
159 change =
app_.getFeeTrack().raiseLocalFee();
163 change =
app_.getFeeTrack().lowerLocalFee();
170 app_.getOPs().reportFeeChange();