Skip to content
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

Notification of significant events during bag recording and playback #908

Merged
merged 44 commits into from
Jun 21, 2022

Conversation

gbiggs
Copy link
Member

@gbiggs gbiggs commented Nov 9, 2021

Closes #884

@gbiggs gbiggs requested a review from a team as a code owner November 9, 2021 05:36
@gbiggs gbiggs requested review from Karsten1987 and jhdcs and removed request for a team November 9, 2021 05:36
@gbiggs
Copy link
Member Author

gbiggs commented Nov 9, 2021

I could do with some suggestions on how best to test this functionality.

@jhdcs
Copy link
Contributor

jhdcs commented Nov 9, 2021

At the moment, it's looking like rosbag2_transport doesn't want to build in GitHub... Does it build locally?

@gbiggs
Copy link
Member Author

gbiggs commented Nov 9, 2021

Not yet. This is still a work in progress.

@emersonknapp emersonknapp marked this pull request as draft November 15, 2021 21:05
@gbiggs gbiggs changed the title WIP: Notification of significant events during bag recording and playback Notification of significant events during bag recording and playback Nov 16, 2021
@gbiggs gbiggs marked this pull request as ready for review November 16, 2021 03:47
@emersonknapp emersonknapp requested review from emersonknapp and MichaelOrlov and removed request for Karsten1987 November 19, 2021 17:05
Copy link
Contributor

@MichaelOrlov MichaelOrlov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gbiggs Thank you for implementing this feature.
I like idea with EventCallbackManager.

However it seems you forgot to add call for execute_callbacks to the SequentialReader::load_next_file()
IMO. It could be implemented as:

void SequentialReader::load_next_file()
{
  assert(current_file_iterator_ != file_paths_.end());
  auto info = std::make_shared<bag_events::BagSplitInfo>();
  info->closed_file = get_current_file();
  current_file_iterator_++;
  load_current_file();
  info->opened_file = get_current_file();
  callback_manager_.execute_callbacks(bag_events::BagEvent::READ_SPLIT, info);
}

I also have concern about potential performance degradation during bag split on recording. See my comments in code.

PS: Looking forward to see implementation for relevant unit tests.

rosbag2_cpp/include/rosbag2_cpp/bag_events.hpp Outdated Show resolved Hide resolved
rosbag2_cpp/include/rosbag2_cpp/bag_events.hpp Outdated Show resolved Hide resolved
rosbag2_cpp/include/rosbag2_cpp/reader.hpp Show resolved Hide resolved
rosbag2_cpp/include/rosbag2_cpp/writer.hpp Outdated Show resolved Hide resolved
rosbag2_cpp/include/rosbag2_cpp/bag_events.hpp Outdated Show resolved Hide resolved
rosbag2_cpp/include/rosbag2_cpp/bag_events.hpp Outdated Show resolved Hide resolved
Copy link
Contributor

@jhdcs jhdcs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a quick comment. I'm also curious about a solution to the performance issue that @MichaelOrlov raised.

@@ -56,6 +56,13 @@ class MockSequentialReader : public rosbag2_cpp::reader_interfaces::BaseReaderIn
std::shared_ptr<rosbag2_storage::SerializedBagMessage> read_next() override
{
// filter_ was considered when incrementing num_read_ in has_next()
if (num_read_ % 5 == 0) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm drawing a bit of a blank at the moment, but what is the "5" here representing? Should this be a constant?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It means the bag is "split" every 5 messages. I'll add a comment.

@gbiggs
Copy link
Member Author

gbiggs commented Nov 23, 2021

I've added integration tests for the Player and Recorder. I'm still working on unit tests for SequentialReader and SequentialWriter.

@gbiggs
Copy link
Member Author

gbiggs commented Nov 23, 2021

I've pushed unit tests for the SequentialWriter and SequentialReader.

Copy link
Collaborator

@emersonknapp emersonknapp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM - thanks for the revisions

@emersonknapp
Copy link
Collaborator

Gist: https://gist.githubusercontent.com/emersonknapp/f8266fb628fa25dd88199616b529ea12/raw/20366e0739e0daff5b03c0d68c9a387a3566740b/ros2.repos
BUILD args: --packages-up-to rosbag2_cpp rosbag2_interfaces rosbag2_transport rosbag2_tests rosbag2
TEST args: --packages-select rosbag2_cpp rosbag2_interfaces rosbag2_transport rosbag2_tests rosbag2
ROS Distro: rolling
Job: ci_launcher
ci_launcher ran: https://ci.ros2.org/job/ci_launcher/9388

  • Linux Build Status
  • Linux-aarch64 Build Status
  • macOS Build Status
  • Windows Build Status


namespace rosbag2_cpp
{

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would some comments in this file explaining what the events are and how to implement them be useful? I'm just thinking of future contributors to rosbag2 that may not have been privy to the discussions on this. Comments may help to reduce onboarding time and lessen potential confusion. Maybe.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch! That file was completely devoid of comments. I've documented the entities in it in ad46aaa. Please take a look.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The documentation is very thorough! Fantastic! Love it!

Copy link
Contributor

@MichaelOrlov MichaelOrlov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gbiggs Thank you for addressing my comments and proposals from previous round of review and new revisions.
Here is my second round of review.
I have proposal how to make RosBag2PlayTestFixture::read_split_callback_is_called test non-flaky. See my proposals in code comments.

rosbag2_transport/src/rosbag2_transport/recorder.cpp Outdated Show resolved Hide resolved
rosbag2_transport/src/rosbag2_transport/recorder.cpp Outdated Show resolved Hide resolved
rosbag2_transport/src/rosbag2_transport/recorder.cpp Outdated Show resolved Hide resolved
rosbag2_transport/test/rosbag2_transport/test_play.cpp Outdated Show resolved Hide resolved
rosbag2_transport/test/rosbag2_transport/test_play.cpp Outdated Show resolved Hide resolved
rosbag2_transport/test/rosbag2_transport/test_play.cpp Outdated Show resolved Hide resolved
Copy link
Contributor

@jhdcs jhdcs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great to me! Especially love the added documentation. I only had one area where I wasn't clear where something was being said, but I'm not confident that's not just me missing something.


namespace rosbag2_cpp
{

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The documentation is very thorough! Fantastic! Love it!

split_event_pub_->publish(message);
}

should_exit = event_publisher_thread_should_exit_;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps I'm missing something, but where is event_publisher_thread_should_exit_ being set/modified after line 112? Is this going to be always true?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. The thread exists from the start of recording for the remaining lifetime of the Recorder and only exits when the recorder destructs. This is consistent with the way the Recorder class, once it starts recording, only stops recording when it destructs.

@emersonknapp
Copy link
Collaborator

I think we're good to move forward - have you addressed the yellow issues on OSX and Windows? Are you able to re-run CI yourself or would you like me to run it again?

@gbiggs
Copy link
Member Author

gbiggs commented Dec 8, 2021

I haven't been able to address those issues. However a lot has changed since that CI run, so if you could run CI again that would be great.

Copy link
Contributor

@MichaelOrlov MichaelOrlov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion for replacing magic number size_t num_msgs_in_bag = 6; with getter max_messages_per_file() from MockSequentialReader and MockSequentialWriter

rosbag2_transport/test/rosbag2_transport/test_record.cpp Outdated Show resolved Hide resolved
rosbag2_transport/test/rosbag2_transport/test_play.cpp Outdated Show resolved Hide resolved
@emersonknapp
Copy link
Collaborator

Gist: https://gist.githubusercontent.com/emersonknapp/ea90cff73b8a33a9cf4479ef2810e008/raw/20366e0739e0daff5b03c0d68c9a387a3566740b/ros2.repos
BUILD args: --packages-up-to rosbag2_cpp rosbag2_interfaces rosbag2_transport rosbag2_tests rosbag2
TEST args: --packages-select rosbag2_cpp rosbag2_interfaces rosbag2_transport rosbag2_tests rosbag2
ROS Distro: rolling
Job: ci_launcher
ci_launcher ran: https://ci.ros2.org/job/ci_launcher/9473

  • Linux Build Status
  • Linux-aarch64 Build Status
  • macOS Build Status
  • Windows Build Status

@gbiggs
Copy link
Member Author

gbiggs commented Dec 9, 2021

I've addressed the warning from OSX.

The Windows test failure (test_play_publish_clock__rmw_cyclonedds_cpp) doesn't appear to be related to this PR?

Copy link
Contributor

@MichaelOrlov MichaelOrlov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me with green CI.

@MichaelOrlov
Copy link
Contributor

@gbiggs I see that SequentialWriterTest.split_event_calls_callback failing on windows. See details here

gbiggs and others added 17 commits June 20, 2022 10:46
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>
Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>
Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>
Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>
Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>
Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>
Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>
Co-authored-by: Emerson Knapp <537409+emersonknapp@users.noreply.github.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>
@gbiggs
Copy link
Member Author

gbiggs commented Jun 20, 2022

Rebased and fixed the double include.

  • Linux Build Status
  • Linux-aarch64 Build Status
  • Windows Build Status

@MichaelOrlov
Copy link
Contributor

@gbiggs Some tests from play_for failed on CI Actions job https://build.ros2.org/job/Rpr__rosbag2__ubuntu_jammy_amd64/126/
Could you please take a look on failures or try to retest?

@MichaelOrlov
Copy link
Contributor

@gbiggs I was not able to reproduce those failures in test_play_for from failing job https://build.ros2.org/job/Rpr__rosbag2__ubuntu_jammy_amd64/126/ locally even under the heavy load of my machine.
I used stress -m 60 -c 12 -i 60.
I have a suspicious that it was some collision between tests running in parallel on CI.
We have topic name "/topic1" which is very common for other unit tests. I will consider to rename those topic name in future.

Merging this request then.

@MichaelOrlov MichaelOrlov merged commit 164475b into ros2:master Jun 21, 2022
@gbiggs gbiggs deleted the gbiggs/bag-events branch June 22, 2022 02:05
@gbiggs
Copy link
Member Author

gbiggs commented Jun 22, 2022

Thanks for trying to reproduce them, @MichaelOrlov . I similarly was not able to reproduce the errors locally, and the manual CI also did not turn them up.

Now that this PR is merged, can we please get a release of rosbag2 to rolling? I'd also like to backport this PR to humble; do you think a backport is possible or is API/ABI impacted?

@MichaelOrlov
Copy link
Contributor

@gbiggs I want to defer release to the rolling until we will get merged at least #1032 and perhaps #1007

As regards to the possibility of backporting this PR to the Humble.
I walked through changes in PR and it seems we are ok it terms of API/ABI compatibility. I didn't find that you are altering or removing any existent API or member variable. Only adding new. In theory it should keep compatibility with previous version of library.

gbiggs added a commit that referenced this pull request Jul 4, 2022
…#908)

* Simple hacky prototype

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Improved prototype with more flexibility and event information

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Use the full relative file path for event info

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Remove no-longer required dependency

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Remove left-over merge

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Change event names

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Add overrides to mocks

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Add missing include

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Remove empty file

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Remove unnecessary virtual

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Correct formatting

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Add missing doc

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Reformat documentation

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Change read event topic name

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Change read event topic name

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Simplify for loop

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Remove unnecessary blank line

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Change argument type to const

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Add events handling to mocks

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Add comment explaining 5-message split

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Add integration tests for player and recorder

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Add ability to check if an event has callbacks

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Shift event topic publishing to a separate thread

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Fix formatting

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Test SequentialReader event callbacks

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Test SequentialWriter event callbacks

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Document bag events

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Check if joinable before joining

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Correct spelling mistake

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Correct spelling mistake

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Reduce time wasted waiting for test to reach intended behaviour

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Address test flakiness

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Improve size check

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Use constant for split size in tests

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Add missing header

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Allocate thread on the stack

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Add getters for number of messages per 'file'

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Replace magic number

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Address unstable OSX build

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Make path in test cross-platform

Co-authored-by: Emerson Knapp <537409+emersonknapp@users.noreply.github.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Add missing virtual destructor

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Follow uncrustify suggestion

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Fix rebase errors

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Remove double include

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Co-authored-by: Emerson Knapp <537409+emersonknapp@users.noreply.github.com>
MichaelOrlov added a commit that referenced this pull request Aug 2, 2022
…#908) (#1037)

* Simple hacky prototype

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Improved prototype with more flexibility and event information

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Use the full relative file path for event info

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Remove no-longer required dependency

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Remove left-over merge

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Change event names

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Add overrides to mocks

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Add missing include

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Remove empty file

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Remove unnecessary virtual

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Correct formatting

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Add missing doc

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Reformat documentation

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Change read event topic name

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Change read event topic name

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Simplify for loop

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Remove unnecessary blank line

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Change argument type to const

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Add events handling to mocks

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Add comment explaining 5-message split

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Add integration tests for player and recorder

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Add ability to check if an event has callbacks

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Shift event topic publishing to a separate thread

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Fix formatting

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Test SequentialReader event callbacks

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Test SequentialWriter event callbacks

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Document bag events

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Check if joinable before joining

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Correct spelling mistake

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Correct spelling mistake

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Reduce time wasted waiting for test to reach intended behaviour

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Address test flakiness

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Improve size check

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Use constant for split size in tests

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Add missing header

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Allocate thread on the stack

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Add getters for number of messages per 'file'

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Replace magic number

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Address unstable OSX build

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Make path in test cross-platform

Co-authored-by: Emerson Knapp <537409+emersonknapp@users.noreply.github.com>
Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Add missing virtual destructor

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Follow uncrustify suggestion

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Fix rebase errors

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

* Remove double include

Signed-off-by: Geoffrey Biggs <gbiggs@killbots.net>

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Co-authored-by: Emerson Knapp <537409+emersonknapp@users.noreply.github.com>

Co-authored-by: Michael Orlov <morlovmr@gmail.com>
Co-authored-by: Emerson Knapp <537409+emersonknapp@users.noreply.github.com>
@ros-discourse
Copy link

This pull request has been mentioned on ROS Discourse. There might be relevant details there:

https://discourse.ros.org/t/ros-2-tsc-meeting-minutes-8-18-2022/27050/1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Notification of significant events during bag recording and playback
7 participants