<table><tr><td style="">TallFurryMan requested changes to this revision.<br />TallFurryMan added a comment.<br />This revision now requires changes to proceed.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D22446">View Revision</a></tr></table><br /><div><div><p>Please see my comments. I'm on with the idea :)<br />
Have you seen my post on the forum about the future of scheduler? We need to talk about this at some point.</p></div></div><br /><div><strong>INLINE COMMENTS</strong><div><div style="margin: 6px 0 12px 0;"><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D22446#inline-126553">View Inline</a><span style="color: #4b4d51; font-weight: bold;">capture.cpp:625</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #74777d">// module keeps the control.</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">activeJob</span> <span style="color: #aa2211">!=</span> <span style="color: #aa4000">nullptr</span> <span style="color: #aa2211">||</span> <span class="n">m_State</span> <span style="color: #aa2211">==</span> <span class="n">CAPTURE_SUSPENDED</span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">emit</span> <span class="n">newStatus</span><span class="p">(</span><span class="n">targetState</span><span class="p">);</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">OK, but why did you move the test?</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D22446#inline-126560">View Inline</a><span style="color: #4b4d51; font-weight: bold;">scheduler.cpp:1431</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; ">    /* FIXME: jobs in state JOB_ERROR should not be in the list, reorder states */
</div><div style="padding: 0 8px; margin: 0 4px; ">    QList<SchedulerJob *> sortedJobs = jobs;
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    sortedJobs.erase(std::remove_if(sortedJobs.begin(), sortedJobs.end(), [](SchedulerJob * job)
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    {
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">        return SchedulerJob::JOB_ABORTED < job->getState();
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    }), sortedJobs.end());
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Here I tend to disagree. We have JOB_INVALID, JOB_ERROR and JOB_ABORTED.<br />
JOB_INVALID indicates a configuration error, and we cannot proceed with the job at all.<br />
JOB_ERROR indicates a fatal error during processing, and we cannot proceed with the job anymore.<br />
JOB_ABORTED indicates a transitory error during processing, and we should retry at some point.<br />
Based on these definitions, we should not re-evaluate JOB_ERROR.<br />
Now, I know that the enums are not properly ordered, but to me JOB_ERROR jobs should still be removed.</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D22446#inline-126563">View Inline</a><span style="color: #4b4d51; font-weight: bold;">scheduler.cpp:1537</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    /* This predicate matches jobs neither being evaluated nor aborted nor in error state */
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    auto neither_evaluated_nor_aborted_nor_error = [](SchedulerJob const * const job)
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">OK for this block, interesting feature indeed.</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D22446#inline-126565">View Inline</a><span style="color: #4b4d51; font-weight: bold;">scheduler.cpp:1579</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        if (errorHandlingRestartAfterAllButton->isChecked())
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        {
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">I'm not sure about this block, it really gets in the way of the regular method of scheduling.<br />
It will conflict with the completion time of the aborted jobs.<br />
It will run a parallel conflict with whatever restriction makes the jobs aborted at some point.<br />
It will conflict with the preemptive shutdown option (unless you forbid a larger delay?).<br />
Eventually, forbid a delay larger than the lead time option?</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D22446#inline-126566">View Inline</a><span style="color: #4b4d51; font-weight: bold;">scheduler.cpp:1602</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; ">    if (Options::sortSchedulerJobs())
</div><div style="padding: 0 8px; margin: 0 4px; ">    {
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">        // If we reorder, remove all non-runnable jobs so that they end up at the end of the list and do not disturb the reorder
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">        // We tested that the list could not be empty after that operation above
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">        sortedJobs.erase(std::remove_if(sortedJobs.begin(), sortedJobs.end(), neither_evaluated_nor_aborted), sortedJobs.end());
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">
</div><div style="padding: 0 8px; margin: 0 4px; ">        using namespace std::placeholders;
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">OK, only if scheduling algorithm takes the presence of JOB_ABORTED into account.</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D22446#inline-126567">View Inline</a><span style="color: #4b4d51; font-weight: bold;">scheduler.cpp:2061</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; ">    }
</div><div style="padding: 0 8px; margin: 0 4px; ">
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    /* Remove unscheduled jobs that may have appeared during the last step - safeguard */
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    sortedJobs.erase(std::remove_if(sortedJobs.begin(), sortedJobs.end(), [](SchedulerJob * job)
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    {
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">        SchedulerJob::JOBStatus const s = job->getState();
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">        return SchedulerJob::JOB_SCHEDULED != s && SchedulerJob::JOB_ABORTED != s;
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    }), sortedJobs.end());
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">
</div><div style="padding: 0 8px; margin: 0 4px; ">    /* Apply sorting to queue table, and mark it for saving if it changes */
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">OK, only if scheduling algorithm takes the presence of JOB_ABORTED into account.</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D22446#inline-126568">View Inline</a><span style="color: #4b4d51; font-weight: bold;">scheduler.cpp:3165</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; ">                               currentJob->getCompletionTime().toString(currentJob->getDateTimeDisplayFormat())));
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">            currentJob->setState(SchedulerJob::JOB_<span class="bright">ABORTED</span>);
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            currentJob->setState(SchedulerJob::JOB_<span class="bright">COMPLETE</span>);
</div><div style="padding: 0 8px; margin: 0 4px; ">            stopCurrentJobAction();
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">This is a behavior change, but well, makes sense now.<br />
Note that currently, the completion date embeds both date and time.<br />
The completion date should be optional, so that multi-day schedules could be more easily programmed (I have a need for this).<br />
The interface is painful when rescheduling START_AT and COMPLETE_AT jobs, but not moving jobs should improve that.</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D22446#inline-126569">View Inline</a><span style="color: #4b4d51; font-weight: bold;">scheduler.cpp:3191</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">                currentJob->setState(SchedulerJob::JOB_<span class="bright">ABORTED</span>);
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                currentJob->setState(SchedulerJob::JOB_<span class="bright">COMPLETE</span>);
</div><div style="padding: 0 8px; margin: 0 4px; ">                stopCurrentJobAction();
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">I disagree: this job must be rescheduled to next observation time, thus JOB_ABORTED.</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D22446#inline-126570">View Inline</a><span style="color: #4b4d51; font-weight: bold;">scheduler.cpp:3217</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">                currentJob->setState(SchedulerJob::JOB_<span class="bright">ABORTED</span>);
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                currentJob->setState(SchedulerJob::JOB_<span class="bright">COMPLETE</span>);
</div><div style="padding: 0 8px; margin: 0 4px; ">                stopCurrentJobAction();
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">I disagree: this job must be rescheduled to next observation time (albeit quite a far one!), thus JOB_ABORTED.</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D22446#inline-126571">View Inline</a><span style="color: #4b4d51; font-weight: bold;">scheduler.cpp:3236</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; ">                              preDawnDateTime.toString(), Options::preDawnTime(), currentJob->getName()));
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">            currentJob->setState(SchedulerJob::JOB_<span class="bright">ABORTED</span>);
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            currentJob->setState(SchedulerJob::JOB_<span class="bright">COMPLETE</span>);
</div><div style="padding: 0 8px; margin: 0 4px; ">            stopCurrentJobAction();
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">I disagree: this job must be rescheduled to the next observation time, thus JOB_ABORTED.</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D22446#inline-126572">View Inline</a><span style="color: #4b4d51; font-weight: bold;">scheduler.cpp:3892</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    // We expect all data read from the XML to be in the C locale - QLocale::c()
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    QLocale cLocale = QLocale::c();
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">OK! I thought this was already in.</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D22446#inline-126573">View Inline</a><span style="color: #4b4d51; font-weight: bold;">scheduler.cpp:3910</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; ">                }
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                else if (!strcmp(tag, "ErrorHandlingStrategy"))
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                {
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">OK.</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D22446#inline-126574">View Inline</a><span style="color: #4b4d51; font-weight: bold;">scheduler.cpp:3912</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                {
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                    setErrorHandlingStrategy(static_cast<ErrorHandlingStrategy>(cLocale.toInt(findXMLAttValu(ep, "value"))));
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Enum-to-int conversions are dangerous, we should review this method at some point...</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D22446#inline-126575">View Inline</a><span style="color: #4b4d51; font-weight: bold;">scheduler.cpp:3922</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                    {
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                        errorHandlingRescheduleErrorsCB->setChecked(!strcmp(findXMLAttValu(subEP, "enabled"), "true"));
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                    }
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">The default value "true" is a bit lost in the code here, can we do better?<br />
Line 3942 for instance, startup procedure block, has the boolean flag present or not in the "StartupProcedure" element.<br />
The default is clear at lines 3929. Wouldn't that be better for maintenance?</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D22446#inline-126576">View Inline</a><span style="color: #4b4d51; font-weight: bold;">scheduler.cpp:4459</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    if (currentJob->getState() == SchedulerJob::JOB_ERROR)
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    if (currentJob->getState() == SchedulerJob::JOB_ERROR<span class="bright"> || currentJob->getState() == SchedulerJob::JOB_ABORTED</span>)
</div><div style="padding: 0 8px; margin: 0 4px; ">    {
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">As mentioned earlier, JOB_ERROR jobs should be left cancelled per definition.</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D22446#inline-126577">View Inline</a><span style="color: #4b4d51; font-weight: bold;">scheduler.cpp:4481</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">        appendLogText(i18n("<span class="bright">Job '%1' is aborted."</span>, currentJob->getName()));
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="bright">    </span>appendLogText(i18n("<span class="bright">Waiting %1 seconds to restart job '%2'.", errorHandlingDelaySB->value()</span>, currentJob->getName()));
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Same issue as described earlier.</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D22446#inline-126578">View Inline</a><span style="color: #4b4d51; font-weight: bold;">scheduler.cpp:4491</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">        <span class="bright">setCurrentJob(nullptr);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="bright">// otherwise start re-evaluation</span>
</div><div style="padding: 0 8px; margin: 0 4px; ">        schedulerTimer.start();
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Comment on the reason of the setCurrentJob move?</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D22446#inline-126579">View Inline</a><span style="color: #4b4d51; font-weight: bold;">scheduler.cpp:5949</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">Scheduler::ErrorHandlingStrategy Scheduler::getErrorHandlingStrategy()
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">{
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">OK</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D22446#inline-126580">View Inline</a><span style="color: #4b4d51; font-weight: bold;">scheduler.cpp:6843</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; ">                appendLogText(i18n("Warning: job '%1' guiding procedure failed, marking terminated due to errors.", currentJob->getName()));
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">                currentJob->setState(SchedulerJob::JOB_<span class="bright">ERROR</span>);
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                currentJob->setState(SchedulerJob::JOB_<span class="bright">ABORTED</span>);
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">OK! But change the log.</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D22446#inline-126581">View Inline</a><span style="color: #4b4d51; font-weight: bold;">scheduler.cpp:6980</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; ">                appendLogText(i18n("Warning: job '%1' focusing procedure failed, marking terminated due to errors.", currentJob->getName()));
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">                currentJob->setState(SchedulerJob::JOB_<span class="bright">ERROR</span>);
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                currentJob->setState(SchedulerJob::JOB_<span class="bright">ABORTED</span>);
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">OK! But change the log.</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D22446#inline-126582">View Inline</a><span style="color: #4b4d51; font-weight: bold;">scheduler.ui:1039</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; ">          </property>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">          <item row="0" column="<span class="bright">0</span>">
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">           <widget class="Q<span class="bright">CheckBox</span>" name="<span class="bright">altConstraintCheck</span>">
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">            <property name="toolTip">
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">             <string>The object's altitude must remain equal or higher than the given value.</string>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">            </property>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">          <item row="0" column="<span class="bright">2</span>">
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">           <widget class="Q<span class="bright">Label</span>" name="<span class="bright">label_10</span>">
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Sorry I didn't check the UI by importing the diff. Will do.</p></div></div></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R321 KStars</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D22446">https://phabricator.kde.org/D22446</a></div></div><br /><div><strong>To: </strong>wreissenberger, mutlaqja, TallFurryMan<br /><strong>Cc: </strong>kde-edu, narvaez, apol<br /></div>