~aleteoryx/muditaos

4c661d4f2c736d3cbc13614864511873efc48678 — Lukasz Mastalerz 2 years ago 91c0d9d
[BH-1412] Improve system shutdown procedure

Changed default Worker join timeout to a more realistic value
 in case of system shutdown procedure.
2 files changed, 9 insertions(+), 2 deletions(-)

M module-sys/Service/Worker.cpp
M module-sys/Service/include/Service/Worker.hpp
M module-sys/Service/Worker.cpp => module-sys/Service/Worker.cpp +8 -1
@@ 265,9 265,16 @@ namespace sys
    {
        assert(getState() == State::Running || getState() == State::Stopped);
        if (xSemaphoreTake(joinSemaphore, timeout) != pdTRUE) {
            LOG_ERROR("Failed to take semaphore!");
            return false;
        }
        while (eTaskGetState(taskHandle) != eDeleted) {}
        const auto waitDeleteTaskTick = xTaskGetTickCount();
        while (eTaskGetState(taskHandle) != eDeleted) {
            if ((xTaskGetTickCount() - waitDeleteTaskTick) > timeout) {
                LOG_ERROR("Task waiting aborted (timeout). TaskState != eDeleted");
                return false;
            }
        }
        return true;
    }


M module-sys/Service/include/Service/Worker.hpp => module-sys/Service/include/Service/Worker.hpp +1 -1
@@ 103,7 103,7 @@ namespace sys

        static constexpr std::size_t controlMessagesCount = static_cast<std::size_t>(ControlMessage::MessageCount);
        static constexpr std::size_t defaultStackSize     = 8192;
        static constexpr TickType_t defaultJoinTimeout    = portMAX_DELAY;
        static constexpr TickType_t defaultJoinTimeout    = pdMS_TO_TICKS(500);
        static constexpr auto controlQueueNamePrefix      = "wctrl";

        xSemaphoreHandle joinSemaphore = nullptr;