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 integration test for mcap storage plugin #1185

Closed
Tracked by #1160
amacneil opened this issue Nov 27, 2022 · 1 comment · Fixed by #1203
Closed
Tracked by #1160

Add integration test for mcap storage plugin #1185

amacneil opened this issue Nov 27, 2022 · 1 comment · Fixed by #1203
Assignees
Labels
mcap Concerning the MCAP storage plugin

Comments

@amacneil
Copy link
Contributor

The latest release of mcap storage plugin is currently broken on one or more distributions (ros-tooling/rosbag2_storage_mcap#82).

We need to add an integration test to CI & the buildfarm that will prevent such issues in the future.

@amacneil
Copy link
Contributor Author

Blocked on #1163

@james-rms james-rms added the mcap Concerning the MCAP storage plugin label Nov 29, 2022
james-rms added a commit that referenced this issue Dec 22, 2022
switches the default storage plugin from `sqlite3` to `mcap`.

## Reason for change

Benchmarks suggest that MCAP can support higher write throughput than the `sqlite3` plugin in its default configuration, while also bringing the following other benefits:

* Append-only write behavior ensures that only the last few messages written can be corrupted in the case of a power outage or recorder crash. This is similar to the corruption guarantees offered by SQLite3 in [WAL mode](https://sqlite.org/wal.html), which is what is used in the `resilient` SQLite storage plugin preset.
* Ability to enable chunk compression, which should be more space-efficient than message compression for bags with many small messages. This also enables reader to use the message index, unlike file-level compression.
* Record message schemas to the bag by default, enabling applications outside the ROS 2 workspace to read message content.

## Benchmarks
Read the benchmarking analysis that lead to this conclusion [here](https://mcap.dev/performance-comparison/rosbag2-plugin-comparison.html).

### `rosbag2_performance_benchmarking`

There is a set of pre-existing benchmarks in the rosbag2 repo here: https://github.com/ros2/rosbag2/tree/rolling/rosbag2_performance/rosbag2_performance_benchmarking

We've run these in an attempt to compare the performance of MCAP against SQLite on these metrics, but at this point the results appear to be pure noise. A full analysis of why will be published to mcap.dev shortly, but for now the news is that we have not succeeded in producing a statistically significant difference in results between MCAP and SQLite.


## TODO
- [x] #1112
- [x] ros-tooling/rosbag2_storage_mcap#61
- [x] ros-tooling/rosbag2_storage_mcap#63
- [x] #1185
- [x] Parametrize `rosbag2_tests`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
mcap Concerning the MCAP storage plugin
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants