<table><tr><td style="">TallFurryMan created this revision.<br />TallFurryMan added reviewers: mutlaqja, wreissenberger.<br />Herald added a project: KDE Edu.<br />Herald added a subscriber: kde-edu.<br />TallFurryMan requested review of this revision.
</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/D14965">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>In the case Ekos loses connection to INDI during the shutdown procedure, bypass parking procedure and proceed to execute the shutdown script.<br />
When a DBus error occurs while trying to control INDI devices (slewing/tracking, guiding, focusing or capturing), abort the current job, disconnect INDI (in terms of state machine) and stop Ekos.<br />
Make Scheduler timer verify Ekos and INDI state, so that communication failures may be recovered from immediately by restarting Ekos and restarting INDI.</p>

<p>A few situations can lead to INDI disconnections:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">A transitory network issue that closes the TCP stream, in which case reopening it returns to normal state (either with the running job continuing, or the running job aborted).</li>
<li class="remarkup-list-item">A serious network issue that prevents access to the INDI server, in which case Ekos will fail to restart and the Scheduler will stop.</li>
<li class="remarkup-list-item">A crash of one of the drivers, in which case Ekos might be able to reconnect on a new instance of the driver, or will loop trying to use the missing driver until it comes up again.</li>
</ul>

<p>Obviously, it is difficult to properly handle all situations.<br />
For instance when capturing, it may happen that the CCD driver remains in capture mode, with Ekos not being able to recover.<br />
It may happen that the disconnection does not trigger a DBus error, but is caught while the Scheduler is checking the state of the job.<br />
In that situation, Ekos might keep a particular state of control of a feature, but the crash might reset the properties of this feature, that state becomes invalid and unusable.</p>

<p>Because this robustness improvement only triggers when a communication error occurs, it is not expected to have side-effects on the normal behavior of the Scheduler.</p>

<p>Another issue is currently preventing all tests from being processed: the Profile field of the scheduler job is not properly handled.<br />
It is currently not possible to have different scheduler jobs using different profiles, and once it uses a particular profile, the Scheduler is unable to switch to another by itself.</p></div></div><br /><div><strong>TEST PLAN</strong><div><p>Create a scheduler job using the Simulator, with Tracking enabled, to give the tester time to kill the Simulator server.<br />
Start the Scheduler, and when it connects and starts to slew, use a terminal to find the PID of the INDI server ("ps -aef | grep indiserver") and kill it ("kill <pid>").<br />
Ekos will immediately register the disconnection, but unfortunately will not tell the Scheduler about it.<br />
Without the fix, the Scheduler is hung waiting for the slew to finish and must be stopped manually.<br />
With the fix, the Scheduler notices the DBus communication error, aborts the running job and attempts to restart Ekos and reconnect to INDI.<br />
Several test runs are needed to kill the Simulator during different stages of the job execution.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R321 KStars</div></div></div><br /><div><strong>BRANCH</strong><div><div>bugfix__shutdown_parking_with_no_indi (branched from master)</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D14965">https://phabricator.kde.org/D14965</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>kstars/ekos/scheduler/scheduler.cpp</div></div></div><br /><div><strong>To: </strong>TallFurryMan, mutlaqja, wreissenberger<br /><strong>Cc: </strong>kde-edu, narvaez, apol<br /></div>