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

Add SplitBagfile recording service. #1115

Merged
merged 4 commits into from
Oct 12, 2022
Merged

Conversation

rshanor
Copy link
Contributor

@rshanor rshanor commented Oct 5, 2022

Fixes #1087

Tested from the command line and verified that below command closed one log file and opened another

ros2 service call /rosbag2_recorder/split_bagfile
rosbag2_interfaces/srv/SplitBagfile

Signed-off-by: Rick Shanor rickshanor@gmail.com

@rshanor rshanor requested a review from a team as a code owner October 5, 2022 01:50
@rshanor rshanor requested review from gbiggs and hidmic and removed request for a team October 5, 2022 01:50
@rshanor
Copy link
Contributor Author

rshanor commented Oct 5, 2022

@MichaelOrlov is this what you had in mind?

@MichaelOrlov MichaelOrlov changed the title feat(rosbag2_cpp): Add SplitBagfile recording service. Add SplitBagfile recording service. Oct 5, 2022
@MichaelOrlov
Copy link
Contributor

@ros-pull-request-builder retest this please

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.

@rshanor Thanks for implementation. Yes it looks very close to my proposal among a few nitpicks see them in inline comments.

We also need to add coverage in unit tests for newly exposed API.
To add coverage on SequentialWriter level perhaps we can reuse existing tests just need to alter them a bit to call split_bagfiles explicitly.
Will need to replace ManualSplitWriter with rosbag2_cpp::writers::SequentialWriter here


And call writer.split_bagfile() here

BTW we don't need ManualSplitWriter any more please delete it.

As regards to the integration tests for checking service call on transport layer there are will be a bit more work.
Will need to add new test in https://github.com/ros2/rosbag2/blob/rolling/rosbag2_transport/test/rosbag2_transport/test_record_services.cpp similar way as trigger_snapshot test implemented.

TEST_F(RecordSrvsTest, trigger_snapshot)
{
auto & writer = recorder_->get_writer_handle();
MockSequentialWriter & mock_writer =
static_cast<MockSequentialWriter &>(writer.get_implementation_handle());
EXPECT_THAT(mock_writer.get_messages().size(), Eq(0u));
// Sleep for 2 seconds to allow messages to accumulate in snapshot buffer
std::chrono::duration<float> duration(2.0);
std::this_thread::sleep_for(duration);
EXPECT_THAT(mock_writer.get_snapshot_buffer().size(), Gt(0u));
successful_service_request<Snapshot>(cli_snapshot_);
EXPECT_THAT(mock_writer.get_messages().size(), Ne(0u));
}

May need to parametrize storage_options_.snapshot_mode for new unit test.

Also please correct DCO signature. Our checker giving following error:

Commit sha: 5e5679e, Author: Rick Shanor, Committer: Rick Shanor; Expected "Rick Shanor rick@hadrian.co", but got "Rick Shanor rickshanor@gmail.com".

Copy link
Contributor Author

@rshanor rshanor left a comment

Choose a reason for hiding this comment

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

@MichaelOrlov I think I addressed all your PR comments and I added some test coverage. Thank you for the feedback.

The RecordFixture.record_end_to_end_test_with_zstd_file_compression tests were failing locally for me, but I think that is unrelated to my change.

@emersonknapp
Copy link
Collaborator

Just as a note here (which is not to block the review at all), the services tests are unfortunately very flaky and therefore not relied on in the main CI. If you happen to have any ideas how to make them deterministic, which they currently are not, then that improvement would be greatly appreciated. However, we shouldn't block an improvement on preexisting bad infrastructure.

@rshanor
Copy link
Contributor Author

rshanor commented Oct 6, 2022

@emersonknapp interesting. Are all the service tests flaky or just some of them? The test I added should be totally deterministic I think (just call a service once and make sure it returns).

@emersonknapp
Copy link
Collaborator

For context #862

The problem isn't in your specific test, but in the "successful service call" portion. I doubt you will want to dig into that whole thing right now.

Just a note while we're discussing it - One part to pay attention to is the "sleep" in your test with some arbitrary duration. That should make you suspicious and suggest that the test can't be deterministic really, because timing can be different on different computers. (you may note the git blame and find my name on other such sleeps, like the preexisting service tests). Probably in general it is more reliable to find a way to wait on a specific condition, with a timeout. Though when those tests are truly broken, they take such a long time so say so! Whereas when they do it's generally very quick.

Any tests involving the ros2 transport layer in action are susceptible to these problems, and I think all of them have been flaky because of it at one point or another. They have occasionally revealed issues with the dds implementations, but ideally we'd catch that much closer to the source, and not be using rosbag2 as an integration test for that portion of the stack! I don't have any solid ideas how to cut transport out and still regression-test that the transport-integration parts here work though.

Ok verbose aside over - again, not blocking the review on it.

@rshanor
Copy link
Contributor Author

rshanor commented Oct 6, 2022

Thanks for the link, but ya I dont think I have time to dig into that at the moment.

I am new to ROS2 and DDS but have been able to write some pretty complicated (5+ node pick and place simulation) integration tests using the launch_testing package to test service interfaces without much flakiness.

ACK you comment on sleeps. Its not strictly necessary for these tests. I mostly just copy-pasted from the above node to let the recorder do something. All my test checks is that SplitBagfile is called and that some bool in the recorder is set appropriately.

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.

This LGTM

One non-blocking thing I would appreciate is removing ManualSplitSequentialWriter from https://github.com/ros2/rosbag2/blob/rolling/rosbag2_cpp/test/rosbag2_cpp/fake_data.hpp#L23 now that the method is truly public.

@rshanor
Copy link
Contributor Author

rshanor commented Oct 6, 2022

One non-blocking thing I would appreciate is removing ManualSplitSequentialWriter from https://github.com/ros2/rosbag2/blob/rolling/rosbag2_cpp/test/rosbag2_cpp/fake_data.hpp#L23 now that the method is truly public.

Removed!

@rshanor
Copy link
Contributor Author

rshanor commented Oct 6, 2022

@MichaelOrlov PTAL when you get a chance. Thanks!

Side question, how frequently are changes pushed to ROS Index? How long will I need to build from source to access these changes in humble?

@emersonknapp
Copy link
Collaborator

emersonknapp commented Oct 6, 2022

Well - this code is going into the head Rolling branch - it won't go to Humble at all unless we take additional steps.

One caveat before talking process: We try to maintain API/ABI stability within a released ROS distribution. This PR only adds new APIs, which is fine for API stability, it's non-breaking and would warrant a minor version bump. I do worry though that based on the nature of the change it may not be ABI stable, that's very hard to guarantee whenever changing any class signatures. Part of me wants to avoid breaking that, however rosbag2 has not yet reached a point where it explicitly makes that hard guarantee within a distro. So, we can get away with breaking ABI, and probably shouldn't wring our hands too much about it (talking to myself mostly here) given the relative immaturity of the rosbag2 project and the usability improvements that can be gained by adding these new features.

That said, to get this into Humble, once it is merged, we need to:

  • Create a backport PR cherry-picking the changes onto the humble branch. This is semi-automatable via the mergify bot, and I can run that command once we're ready.
  • Once change is merged, bump version number and bloom a new release to Humble
  • Wait for the next Humble sync following the release (changes will immediately start being built into ros2-testing apt repo ), when the release apt repositories are synced to newer versions. This happens every 2 months or so, it's a little irregular cadence. The syncs are posted at https://discourse.ros.org/c/release/humble/73

@MichaelOrlov
Copy link
Contributor

@rshanor I am sorry for the delay I didn't have time to reiterate on code review.
I will try to find time at Friday PST.

From quick view on the test. I agree it's going to be flaky. Usually if test rely on some unconditional sleep inside, it is 99.99% probability that it will be flaky on CI.
Also since in these two lines

successful_service_request<SplitBagfile>(cli_split_bagfile_);
EXPECT_TRUE(mock_writer.split_bagfile_called());

service request delivery may be asynchronous and EXPECT_TRUE(mock_writer.split_bagfile_called()); may fail due to some delays on CI.
I agree with @emersonknapp that need to find some deterministic way:

  1. How to confirm that recording actually has been started to be ready to send request.
  2. Check that split bag happened more robustly. Perhaps by registering some callbacks with gtest infrastructure or checking that splited files exists on filesystem in temp folder.

I might will have some better ideas when I will look on it more closely.

BTW other unit tests with services mostly flaky in rosbag2 player and when the same service requests sending repeatedly in short time. Also those issue reproduces on all 3 DDS vendors and unlikely to be related to the DDS implementation.

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.

@rshanor Thanks for your contribution.
Even though the tests not fully deterministic, I am inclined to move forward and merge them as is. I will create follow up PR with record_services tests redesign to make them more deterministic and running in shorter time.
Please remove sleep in split test.
Also please rebase your branch on top of latest rolling branch. We have braking changes in another packages which causing failure in tests.
Those failures most probably unrelated to your changes but we need to be assure.

@clalancette
Copy link
Contributor

Even though the tests not fully deterministic,

We'd really prefer if we don't have known flaky tests. They make it difficult for us to run CI on every single package, since we have to keep some kind of list of "known flaky" tests, and then ignore those. It means that other regressions fall through the cracks, since people see a yellow CI, think "this is probably known flaky", and then merge. It also means that external contributors get confused by yellow CI tests.

If you want to move forward with this regardless, I'll suggest at least marking the known flaky tests as xfail for now. That way they won't be run at all, and won't affect all upstream and downstream packages.

@MichaelOrlov
Copy link
Contributor

@clalancette We don't know yet if it's going to be flay or not on CI. It's just tend to be flaky. But it didn't fail yet.
At the end it's not going to be significantly more flaky than existent tests in the same file. It's more generic problem.

@rshanor Could you please add xfail label for test_record_services tests in CMake.txt file?
I will remove this label when will submit followup PR with redesign in those unit tests.
Will need to add ament_add_test_label(test_record_services xfail) right after
https://github.com/rshanor/rosbag2/blob/78f391210317318a862b5eea434e1c7732df700a/rosbag2_transport/CMakeLists.txt#L229-L232

rshanor and others added 3 commits October 10, 2022 12:17
Fixes ros2#1087

Tested from the command line and verified that below command closed one
log file and opened another.

ros2 service call /rosbag2_recorder/split_bagfile
rosbag2_interfaces/srv/SplitBagfile

Signed-off-by: Rick Shanor <rickshanor@gmail.com>
Also address PR comments from @MichaelOrlov and deal with rebase merge
conflicts.

Signed-off-by: Rick Shanor <rickshanor@gmail.com>
After making split_bagfile public, this class was no longer necessary.

Signed-off-by: Rick Shanor <rickshanor@gmail.com>
Signed-off-by: Rick Shanor <rickshanor@gmail.com>
@rshanor
Copy link
Contributor Author

rshanor commented Oct 10, 2022

Could you please add xfail label for test_record_services tests in CMake.txt file?

Done

@rshanor
Copy link
Contributor Author

rshanor commented Oct 10, 2022

Also please rebase your branch on top of latest rolling branch. We have braking changes in another packages which causing failure in tests.

Done

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.

@rshanor Thanks!

@MichaelOrlov
Copy link
Contributor

Gist: https://gist.githubusercontent.com/MichaelOrlov/0f53de688de23ccfcd61b54f67af1b7e/raw/35a8cd055cb943c4d6a1e6107b731767677094f7/ros2.repos
BUILD args: --packages-above-and-dependencies rosbag2_cpp rosbag2_transport rosbag2_tests
TEST args: --packages-above rosbag2_cpp rosbag2_transport rosbag2_tests
ROS Distro: rolling
Job: ci_launcher
ci_launcher ran: https://ci.ros2.org/job/ci_launcher/10965

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

@MichaelOrlov
Copy link
Contributor

MichaelOrlov commented Oct 11, 2022

@clalancette I need your attention to test failures in ros2bag.
We didn't touched ros2bag nor any API which is relevant to ros2bag package in this PR.
It looks like problem on baseline:
Tests failing with the same error messages on all platforms:

2022-10-10T22:44:20.2630481Z ============================= test session starts ==============================
2022-10-10T22:44:20.2631068Z platform linux -- Python 3.8.10, pytest-7.1.3, pluggy-1.0.0
2022-10-10T22:44:20.2631580Z cachedir: /__w/rosbag2/rosbag2/ros_ws/build/ros2bag/.pytest_cache
2022-10-10T22:44:20.2632109Z rootdir: /__w/rosbag2/rosbag2/ros_ws/src/gg60q98ux0g/rosbag2/ros2bag, configfile: pytest.ini
2022-10-10T22:44:20.2633219Z plugins: launch-testing-ros-0.21.0, launch-testing-1.2.0, ament-copyright-0.13.2, ament-pep257-0.13.2, ament-flake8-0.13.2, ament-lint-0.13.2, rerunfailures-10.2, cov-4.0.0, mock-3.10.0, colcon-core-0.5.9, repeat-0.9.1, timeout-1.3.3
2022-10-10T22:44:20.2633898Z collected 13 items
2022-10-10T22:44:20.2634541Z 
2022-10-10T22:44:20.2634786Z test/test_api.py ......                                                  [ 46%]
2022-10-10T22:44:20.2635242Z test/test_burst.py .                                                     [ 53%]
2022-10-10T22:44:20.2636015Z test/test_copyright.py .                                                 [ 61%]
2022-10-10T22:44:20.2636576Z test/test_flake8.py F                                                    [ 69%]
2022-10-10T22:44:20.2637151Z test/test_pep257.py .                                                    [ 76%]
2022-10-10T22:44:20.2637571Z test/test_play_qos_profiles.py .                                         [ 84%]
2022-10-10T22:44:20.2637991Z test/test_record.py .                                                    [ 92%]
2022-10-10T22:44:20.2638403Z test/test_record_qos_profiles.py .                                       [100%]
2022-10-10T22:44:20.2638747Z 
2022-10-10T22:44:20.2638996Z =================================== FAILURES ===================================
2022-10-10T22:44:20.2639406Z _________________________________ test_flake8 __________________________________
2022-10-10T22:44:20.2639833Z multiprocessing.pool.RemoteTraceback: 
2022-10-10T22:44:20.2640208Z """
2022-10-10T22:44:20.2640515Z Traceback (most recent call last):
2022-10-10T22:44:20.2641123Z   File "/usr/lib/python3.8/multiprocessing/pool.py", line 125, in worker
2022-10-10T22:44:20.2641562Z     result = (True, func(*args, **kwds))
2022-10-10T22:44:20.2642134Z   File "/usr/lib/python3.8/multiprocessing/pool.py", line 48, in mapstar
2022-10-10T22:44:20.2642550Z     return list(map(*args))
2022-10-10T22:44:20.2643166Z   File "/usr/local/lib/python3.8/dist-packages/flake8/checker.py", line 666, in _run_checks
2022-10-10T22:44:20.2643694Z     return checker.run_checks()
2022-10-10T22:44:20.2644258Z   File "/usr/local/lib/python3.8/dist-packages/flake8/checker.py", line 598, in run_checks
2022-10-10T22:44:20.2644777Z     self.run_ast_checks()
2022-10-10T22:44:20.2645504Z   File "/usr/local/lib/python3.8/dist-packages/flake8/checker.py", line 502, in run_ast_checks
2022-10-10T22:44:20.2645989Z     for (line_number, offset, text, check) in runner:
2022-10-10T22:44:20.2646554Z   File "/usr/local/lib/python3.8/dist-packages/flake8_deprecated.py", line 47, in run
2022-10-10T22:44:20.2646975Z     yield from value
2022-10-10T22:44:20.2647524Z   File "/usr/local/lib/python3.8/dist-packages/flake8_deprecated.py", line 57, in check_calls
2022-10-10T22:44:20.2647953Z     yield from value
2022-10-10T22:44:20.2648673Z   File "/usr/local/lib/python3.8/dist-packages/flake8_deprecated.py", line 70, in check_method_call
2022-10-10T22:44:20.2649147Z     method_name = node.func.attr
2022-10-10T22:44:20.2649658Z AttributeError: 'Subscript' object has no attribute 'attr'
2022-10-10T22:44:20.2650025Z """
2022-10-10T22:44:20.2650229Z 
2022-10-10T22:44:20.2650494Z The above exception was the direct cause of the following exception:
2022-10-10T22:44:20.2651085Z test/test_flake8.py:22: in test_flake8
2022-10-10T22:44:20.2651531Z     rc, errors = main_with_errors(argv=[])
2022-10-10T22:44:20.2651953Z ../../../../build/ament_flake8/ament_flake8/main.py:88: in main_with_errors
2022-10-10T22:44:20.2652868Z     report = generate_flake8_report(
2022-10-10T22:44:20.2653726Z ../../../../build/ament_flake8/ament_flake8/main.py:233: in generate_flake8_report
2022-10-10T22:44:20.2654700Z     report.report = style.check_files(paths)
2022-10-10T22:44:20.2655269Z /usr/local/lib/python3.8/dist-packages/flake8/api/legacy.py:100: in check_files
2022-10-10T22:44:20.2655651Z     self._application.run_checks(paths)
2022-10-10T22:44:20.2656727Z /usr/local/lib/python3.8/dist-packages/flake8/main/application.py:300: in run_checks
2022-10-10T22:44:20.2657112Z     self.file_checker_manager.run()
2022-10-10T22:44:20.2657556Z /usr/local/lib/python3.8/dist-packages/flake8/checker.py:329: in run
2022-10-10T22:44:20.2658078Z     self.run_parallel()
2022-10-10T22:44:20.2658618Z /usr/local/lib/python3.8/dist-packages/flake8/checker.py:293: in run_parallel
2022-10-10T22:44:20.2659128Z     for ret in pool_map:
2022-10-10T22:44:20.2659456Z /usr/lib/python3.8/multiprocessing/pool.py:448: in <genexpr>
2022-10-10T22:44:20.2659821Z     return (item for chunk in result for item in chunk)
2022-10-10T22:44:20.2660160Z /usr/lib/python3.8/multiprocessing/pool.py:868: in next
2022-10-10T22:44:20.2660454Z     raise value
2022-10-10T22:44:20.2660868Z E   AttributeError: 'Subscript' object has no attribute 'attr'
2022-10-10T22:44:20.2661380Z --- generated xml file: /__w/rosbag2/rosbag2/ros_ws/build/ros2bag/pytest.xml ---
2022-10-10T22:44:20.2661820Z =========================== short test summary info ============================
2022-10-10T22:44:20.2683588Z FAILED test/test_flake8.py::test_flake8 - AttributeError: 'Subscript' object ...
2022-10-10T22:44:20.2684024Z ======================== 1 failed, 12 passed in 11.82s =========================

I can't figure out what is wrong with ros2bag package or CI infrastructure.
I have tried to build and run tests for this branch on my local machine and all passes without error.
With one caveat that my local configuration has a bit older ament-lint-0.13.1 ament-flake8-0.13.1 versus ament-lint-0.13.2 ament-flake8-0.13.2 on CI.
It looks like something was recently merged in to the ament-lint-0.13.2 ament-flake8-0.13.2 which is causing tests failure.

Correction need to read ament-flake8-0.13.1 instead of ament-lint-0.13.1

@clalancette
Copy link
Contributor

2022-10-10T22:44:20.2660868Z E AttributeError: 'Subscript' object has no attribute 'attr'

There is a bug in recent flake8-deprecated that is causing this. See ros2/ci#682, which still needs to have CI run on it and merged.

@MichaelOrlov
Copy link
Contributor

@clalancette Thanks for clarification.

@MichaelOrlov
Copy link
Contributor

MichaelOrlov commented Oct 12, 2022

Trying to re-run CI
ci_launcher ran: https://ci.ros2.org/job/ci_launcher/10972

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

@MichaelOrlov MichaelOrlov merged commit e6f7fd7 into ros2:rolling Oct 12, 2022
@rshanor
Copy link
Contributor Author

rshanor commented Oct 12, 2022

@MichaelOrlov thank you for relaunching.
@emersonknapp If possible, I would greatly appreciate this being backported to humble.

@emersonknapp
Copy link
Collaborator

@Mergifyio backport humble

mergify bot pushed a commit that referenced this pull request Oct 14, 2022
* feat(rosbag2_cpp): Add SplitBagfile recording service.

Fixes #1087

Tested from the command line and verified that below command closed one
log file and opened another.

ros2 service call /rosbag2_recorder/split_bagfile
rosbag2_interfaces/srv/SplitBagfile

Signed-off-by: Rick Shanor <rickshanor@gmail.com>

* feat(rosbag2_cpp): Add unit tests for SplitBagfile feature.

Also address PR comments from @MichaelOrlov and deal with rebase merge
conflicts.

Signed-off-by: Rick Shanor <rickshanor@gmail.com>

* fix(rosbag2_cpp): Remove unnecessary ManualSplitSequentialWriter.

After making split_bagfile public, this class was no longer necessary.

Signed-off-by: Rick Shanor <rickshanor@gmail.com>

* ci(rosbag2_transport): Mark test_record_services as xfail.

Signed-off-by: Rick Shanor <rickshanor@gmail.com>

Signed-off-by: Rick Shanor <rickshanor@gmail.com>
(cherry picked from commit e6f7fd7)

# Conflicts:
#	rosbag2_cpp/src/rosbag2_cpp/writer.cpp
#	rosbag2_cpp/test/rosbag2_cpp/fake_data.cpp
#	rosbag2_cpp/test/rosbag2_cpp/fake_data.hpp
#	rosbag2_interfaces/CMakeLists.txt
#	rosbag2_transport/CMakeLists.txt
@mergify
Copy link

mergify bot commented Oct 14, 2022

backport humble

✅ Backports have been created

MichaelOrlov pushed a commit that referenced this pull request Oct 18, 2022
* feat(rosbag2_cpp): Add SplitBagfile recording service.

Fixes #1087

Tested from the command line and verified that below command closed one
log file and opened another.

ros2 service call /rosbag2_recorder/split_bagfile
rosbag2_interfaces/srv/SplitBagfile

Signed-off-by: Rick Shanor rshanor <rickshanor@gmail.com>

* feat(rosbag2_cpp): Add unit tests for SplitBagfile feature.

Also address PR comments from @MichaelOrlov and deal with rebase merge
conflicts.

Signed-off-by: Rick Shanor rshanor <rickshanor@gmail.com>

* fix(rosbag2_cpp): Remove unnecessary ManualSplitSequentialWriter.

After making split_bagfile public, this class was no longer necessary.

Signed-off-by: Rick Shanor rshanor <rickshanor@gmail.com>

* ci(rosbag2_transport): Mark test_record_services as xfail.

Signed-off-by: Rick Shanor rshanor <rickshanor@gmail.com>

Signed-off-by: Rick Shanor rshanor <rickshanor@gmail.com>
(cherry picked from commit e6f7fd7)

# Conflicts:
#	rosbag2_cpp/src/rosbag2_cpp/writer.cpp
#	rosbag2_cpp/test/rosbag2_cpp/fake_data.cpp
#	rosbag2_cpp/test/rosbag2_cpp/fake_data.hpp
#	rosbag2_interfaces/CMakeLists.txt
#	rosbag2_transport/CMakeLists.txt
MichaelOrlov pushed a commit that referenced this pull request Oct 18, 2022
* feat(rosbag2_cpp): Add SplitBagfile recording service.

Fixes #1087

Tested from the command line and verified that below command closed one
log file and opened another.

ros2 service call /rosbag2_recorder/split_bagfile
rosbag2_interfaces/srv/SplitBagfile

Signed-off-by: Rick Shanor <rickshanor@gmail.com>

* feat(rosbag2_cpp): Add unit tests for SplitBagfile feature.

Also address PR comments from @MichaelOrlov and deal with rebase merge
conflicts.

Signed-off-by: Rick Shanor <rickshanor@gmail.com>

* fix(rosbag2_cpp): Remove unnecessary ManualSplitSequentialWriter.

After making split_bagfile public, this class was no longer necessary.

Signed-off-by: Rick Shanor <rickshanor@gmail.com>

* ci(rosbag2_transport): Mark test_record_services as xfail.

Signed-off-by: Rick Shanor <rickshanor@gmail.com>

Signed-off-by: Rick Shanor <rickshanor@gmail.com>
(cherry picked from commit e6f7fd7)

# Conflicts:
#	rosbag2_cpp/src/rosbag2_cpp/writer.cpp
#	rosbag2_cpp/test/rosbag2_cpp/fake_data.cpp
#	rosbag2_cpp/test/rosbag2_cpp/fake_data.hpp
#	rosbag2_interfaces/CMakeLists.txt
#	rosbag2_transport/CMakeLists.txt
@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-2022-10-13/28213/1

tonynajjar added a commit to angsa-robotics/rosbag2 that referenced this pull request Mar 26, 2024
* feat(rosbag2_cpp): Add SplitBagfile recording service.

Fixes ros2#1087

Tested from the command line and verified that below command closed one
log file and opened another.

ros2 service call /rosbag2_recorder/split_bagfile
rosbag2_interfaces/srv/SplitBagfile

Signed-off-by: Rick Shanor <rickshanor@gmail.com>

* feat(rosbag2_cpp): Add unit tests for SplitBagfile feature.

Also address PR comments from @MichaelOrlov and deal with rebase merge
conflicts.

Signed-off-by: Rick Shanor <rickshanor@gmail.com>

* fix(rosbag2_cpp): Remove unnecessary ManualSplitSequentialWriter.

After making split_bagfile public, this class was no longer necessary.

Signed-off-by: Rick Shanor <rickshanor@gmail.com>

* ci(rosbag2_transport): Mark test_record_services as xfail.

Signed-off-by: Rick Shanor <rickshanor@gmail.com>

Signed-off-by: Rick Shanor <rickshanor@gmail.com>
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.

Ability to split logs based on signal during record.
5 participants