-
Notifications
You must be signed in to change notification settings - Fork 865
[23289] Handle maximum deadline misses case #6016
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good job! Here are a couple of suggestions:
- Apply same fixes to DataReader
- Make the PR directly from this repo (instead of your fork). Take this into account for the next time, let's keep this PR as it is.
- Reorganize commits
- Bonus: handle 0 lifespan case
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The suggestions are applied.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remember to apply the same fixes to the reader before merging.
c7b1a94
to
6602485
Compare
🧪 CI InsightsHere's what we observed from your CI run for bc00597. ❌ Job Failures
|
a6a5764
to
ab5f1e7
Compare
ab5f1e7
to
2c44c6b
Compare
2c44c6b
to
409716d
Compare
…ntation. Signed-off-by: zesk1999 <[email protected]>
…ntation. Signed-off-by: zesk1999 <[email protected]>
2208044
to
09aa16d
Compare
Signed-off-by: zesk1999 <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM with greenish CI
https://github.com/Mergifyio backport 3.3.x 3.2.x 2.14.x |
✅ Backports have been created
|
* Refs #23289. Handle maximum deadline misses case. Data writer implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Data reader implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Tests. Signed-off-by: zesk1999 <[email protected]> --------- Signed-off-by: zesk1999 <[email protected]> (cherry picked from commit 3230d1d) # Conflicts: # test/blackbox/CMakeLists.txt
* Refs #23289. Handle maximum deadline misses case. Data writer implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Data reader implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Tests. Signed-off-by: zesk1999 <[email protected]> --------- Signed-off-by: zesk1999 <[email protected]> (cherry picked from commit 3230d1d) # Conflicts: # src/cpp/fastdds/subscriber/DataReaderImpl.cpp # test/blackbox/CMakeLists.txt
* Refs #23289. Handle maximum deadline misses case. Data writer implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Data reader implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Tests. Signed-off-by: zesk1999 <[email protected]> --------- Signed-off-by: zesk1999 <[email protected]> (cherry picked from commit 3230d1d) # Conflicts: # src/cpp/fastdds/publisher/DataWriterImpl.cpp # src/cpp/fastdds/publisher/DataWriterImpl.hpp # src/cpp/fastdds/subscriber/DataReaderImpl.cpp # test/blackbox/CMakeLists.txt # test/blackbox/common/BlackboxTestsDeadlineQos.cpp
* Refs #23289. Handle maximum deadline misses case. Data writer implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Data reader implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Tests. Signed-off-by: zesk1999 <[email protected]> --------- Signed-off-by: zesk1999 <[email protected]> (cherry picked from commit 3230d1d) Signed-off-by: zesk1999 <[email protected]> # Conflicts: # src/cpp/fastdds/publisher/DataWriterImpl.cpp # src/cpp/fastdds/publisher/DataWriterImpl.hpp # src/cpp/fastdds/subscriber/DataReaderImpl.cpp # test/blackbox/CMakeLists.txt # test/blackbox/common/BlackboxTestsDeadlineQos.cpp
* Refs #23289. Handle maximum deadline misses case. Data writer implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Data reader implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Tests. Signed-off-by: zesk1999 <[email protected]> --------- Signed-off-by: zesk1999 <[email protected]> (cherry picked from commit 3230d1d) # Conflicts: # src/cpp/fastdds/subscriber/DataReaderImpl.cpp # test/blackbox/CMakeLists.txt
* Refs #23289. Handle maximum deadline misses case. Data writer implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Data reader implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Tests. Signed-off-by: zesk1999 <[email protected]> --------- Signed-off-by: zesk1999 <[email protected]> (cherry picked from commit 3230d1d) # Conflicts: # src/cpp/fastdds/subscriber/DataReaderImpl.cpp # test/blackbox/CMakeLists.txt
* Refs #23289. Handle maximum deadline misses case. Data writer implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Data reader implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Tests. Signed-off-by: zesk1999 <[email protected]> --------- Signed-off-by: zesk1999 <[email protected]> (cherry picked from commit 3230d1d) Signed-off-by: zesk1999 <[email protected]> # Conflicts: # src/cpp/fastdds/publisher/DataWriterImpl.cpp # src/cpp/fastdds/publisher/DataWriterImpl.hpp # src/cpp/fastdds/subscriber/DataReaderImpl.cpp # test/blackbox/CMakeLists.txt # test/blackbox/common/BlackboxTestsDeadlineQos.cpp
* Refs #23289. Handle maximum deadline misses case. Data writer implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Data reader implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Tests. Signed-off-by: zesk1999 <[email protected]> --------- Signed-off-by: zesk1999 <[email protected]> (cherry picked from commit 3230d1d) # Conflicts: # src/cpp/fastdds/subscriber/DataReaderImpl.cpp # test/blackbox/CMakeLists.txt
* Refs #23289. Handle maximum deadline misses case. Data writer implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Data reader implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Tests. Signed-off-by: zesk1999 <[email protected]> --------- Signed-off-by: zesk1999 <[email protected]> (cherry picked from commit 3230d1d) Signed-off-by: zesk1999 <[email protected]> # Conflicts: # src/cpp/fastdds/publisher/DataWriterImpl.cpp # src/cpp/fastdds/publisher/DataWriterImpl.hpp # src/cpp/fastdds/subscriber/DataReaderImpl.cpp # test/blackbox/CMakeLists.txt # test/blackbox/common/BlackboxTestsDeadlineQos.cpp
* Refs #23289. Handle maximum deadline misses case. Data writer implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Data reader implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Tests. Signed-off-by: zesk1999 <[email protected]> --------- Signed-off-by: zesk1999 <[email protected]> (cherry picked from commit 3230d1d) Signed-off-by: zesk1999 <[email protected]> # Conflicts: # src/cpp/fastdds/publisher/DataWriterImpl.cpp # src/cpp/fastdds/publisher/DataWriterImpl.hpp # src/cpp/fastdds/subscriber/DataReaderImpl.cpp # test/blackbox/CMakeLists.txt # test/blackbox/common/BlackboxTestsDeadlineQos.cpp
* Refs #23289. Handle maximum deadline misses case. Data writer implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Data reader implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Tests. Signed-off-by: zesk1999 <[email protected]> --------- Signed-off-by: zesk1999 <[email protected]> (cherry picked from commit 3230d1d) Signed-off-by: zesk1999 <[email protected]> # Conflicts: # src/cpp/fastdds/publisher/DataWriterImpl.cpp # src/cpp/fastdds/publisher/DataWriterImpl.hpp # src/cpp/fastdds/subscriber/DataReaderImpl.cpp # test/blackbox/CMakeLists.txt # test/blackbox/common/BlackboxTestsDeadlineQos.cpp
* Refs #23289. Handle maximum deadline misses case. Data writer implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Data reader implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Tests. Signed-off-by: zesk1999 <[email protected]> --------- Signed-off-by: zesk1999 <[email protected]> (cherry picked from commit 3230d1d) # Conflicts: # src/cpp/fastdds/subscriber/DataReaderImpl.cpp # test/blackbox/CMakeLists.txt Co-authored-by: Zeljko Jovanovic <[email protected]>
* Refs #23289. Handle maximum deadline misses case. Data writer implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Data reader implementation. Signed-off-by: zesk1999 <[email protected]> * Refs #23289. Handle maximum deadline misses case. Tests. Signed-off-by: zesk1999 <[email protected]> --------- Signed-off-by: zesk1999 <[email protected]> (cherry picked from commit 3230d1d) Signed-off-by: zesk1999 <[email protected]> # Conflicts: # src/cpp/fastdds/publisher/DataWriterImpl.cpp # src/cpp/fastdds/publisher/DataWriterImpl.hpp # src/cpp/fastdds/subscriber/DataReaderImpl.cpp # test/blackbox/CMakeLists.txt # test/blackbox/common/BlackboxTestsDeadlineQos.cpp
Description
This PR fixes an issue where a DataWriter with a deadline period of 0ms would cause a high CPU load due to an infinite loop of deadline_missed callbacks.
The DataWriterImpl has been modified to handle a 0 as a special case. When this condition is detected:
This ensures that the DataWriter remains stable and responsive, and allows the deadline timer to be properly re-armed if the QoS is later changed to a valid value.
Also, reaching the maximal number of deadline missed messages cancels the timer.
Fixes #23289
@Mergifyio backport 3.3.x 3.2.x 2.14.x
Contributor Checklist
versions.md
file (if applicable).Reviewer Checklist