task_manager: fix a bug that node is waked up regardless of dependency 86/315086/2
authorInki Dae <inki.dae@samsung.com>
Wed, 24 Jul 2024 23:18:40 +0000 (08:18 +0900)
committerInki Dae <inki.dae@samsung.com>
Wed, 24 Jul 2024 23:36:36 +0000 (08:36 +0900)
Fix a bug that node is waked up regardless of its node dependency.

This bug can be reproduced like below,
[example graph pipeline]
input --- face detection --- bridge --- face landmark --- endpoint
               |                                       |
               ----------------------------------------

endpoint node will be waked up regardless of its node dependency after
previous iteration of above graph pipeline is completed because
_completed of face landmark node is true after previous iteration so
wait() just returns like below,
    void TaskNode::wait()
    {
        unique_lock<mutex> lock(_mutex);

        // If already completed then just return.
        if (_completed) // <- here
        return;

        _event.wait(lock, [this] { return this->_completed; });
    }

Therefore, make sure to set _completed as false in clear()

Change-Id: I6595e7199e2dc9aa3ecbcaa0fedcddcbc74e7166
Signed-off-by: Inki Dae <inki.dae@samsung.com>
services/task_manager/src/TaskNode.cpp

index 7d5ae1da74ec1a2368f1db41a332541c8a59548d..4651f02f57dd2d6cac6b38baf4547c02c577fe85 100644 (file)
@@ -124,6 +124,7 @@ void TaskNode::clear()
        _inputBuffer = nullptr;
        _outputBuffer = nullptr;
        _status = NodeStatus::NONE;
+       _completed = false;
 }
 
 }