Skip to content

Commit 825dfc2

Browse files
MiguelCompanycferreiragonz
authored andcommitted
Make on_xxx_matched thread-safe (#6371)
* Refs #21355. Added regression test. Signed-off-by: Miguel Company <miguelcompany@eprosima.com> * Refs #21355. Improve readability in EDP.cpp. Signed-off-by: Miguel Company <miguelcompany@eprosima.com> * Refs #21355. Protect `InnerDataWriterListener::on_writer_matched`. Signed-off-by: Miguel Company <miguelcompany@eprosima.com> * Refs #21355. Protect `InnerDataReaderListener::on_reader_matched`. Signed-off-by: Miguel Company <miguelcompany@eprosima.com> --------- Signed-off-by: Miguel Company <miguelcompany@eprosima.com> (cherry picked from commit de70d42) # Conflicts: # src/cpp/fastdds/publisher/DataWriterImpl.hpp # src/cpp/rtps/builtin/discovery/endpoint/EDP.cpp # test/blackbox/common/DDSBlackboxTestsDiscovery.cpp
1 parent 69a1457 commit 825dfc2

6 files changed

Lines changed: 196 additions & 64 deletions

File tree

src/cpp/fastdds/publisher/DataWriterImpl.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1286,6 +1286,8 @@ void DataWriterImpl::InnerDataWriterListener::onWriterMatched(
12861286
RTPSWriter* /*writer*/,
12871287
const PublicationMatchedStatus& info)
12881288
{
1289+
std::lock_guard<std::mutex> scoped_lock(matching_info_mutex_);
1290+
12891291
data_writer_->update_publication_matched_status(info);
12901292

12911293
StatusMask notify_status = StatusMask::publication_matched();

src/cpp/fastdds/publisher/DataWriterImpl.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -459,11 +459,11 @@ class DataWriterImpl : protected rtps::IReaderDataFilter
459459
const uint32_t& status_id);
460460
#endif //FASTDDS_STATISTICS
461461

462-
DataWriterImpl* data_writer_;
463-
464462
private:
465463

466464
using fastrtps::rtps::WriterListener::onWriterMatched;
465+
std::mutex matching_info_mutex_;
466+
DataWriterImpl* data_writer_;
467467
}
468468
writer_listener_;
469469

src/cpp/fastdds/subscriber/DataReaderImpl.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -941,6 +941,8 @@ void DataReaderImpl::InnerDataReaderListener::onReaderMatched(
941941
RTPSReader* /*reader*/,
942942
const SubscriptionMatchedStatus& info)
943943
{
944+
std::lock_guard<std::mutex> scoped_lock(matching_info_mutex_);
945+
944946
data_reader_->update_subscription_matched_status(info);
945947

946948
StatusMask notify_status = StatusMask::subscription_matched();

src/cpp/fastdds/subscriber/DataReaderImpl.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,10 @@ class DataReaderImpl
448448
const uint32_t& status_id);
449449
#endif //FASTDDS_STATISTICS
450450

451+
private:
452+
451453
DataReaderImpl* data_reader_;
454+
std::mutex matching_info_mutex_;
452455

453456
private:
454457

0 commit comments

Comments
 (0)