-
Notifications
You must be signed in to change notification settings - Fork 252
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
Store serialized metadata in MCAP file #1423
Conversation
@emersonknapp, @james-rms Friendly ping for review. |
Gist: https://gist.githubusercontent.com/MichaelOrlov/e9ccd97c296737b01bde125829ee7b33/raw/7db31f94c08adc2cf7d7daed19209af2153e3224/ros2.repos |
5e34be8
to
66e6945
Compare
The test failure reproduces on nightly builds as well according to the #1437 |
Signed-off-by: Michael Orlov <[email protected]>
- ROS_DISTRO now stored inside serialized metadata Signed-off-by: Michael Orlov <[email protected]>
- Use `UnorderedElementsAreArray` for checking `metadata.topics_with_message_count`. - The list of the metadata.topics_with_message_count forming from the mcap_reader_->channels() which is unordered_map. The order of the elements in the unordered_map is unpredictable and can vary on different platforms. Signed-off-by: Michael Orlov <[email protected]>
66e6945
to
cc6649a
Compare
I made some investigation in regards to failing test on Windows. And here is what I found:
This corresponds to the SQLite3 blackened - therefore completely unrelated to changes in the mcap storage plugin. I've rebased the current PR on top of the latest rolling and will rerun CI one more time - if CI will pass green I am going to merge this PR. |
Gist: https://gist.githubusercontent.com/MichaelOrlov/c16b69b352f571a641ff65ef193167d7/raw/71e06ad301a2b6c648fc7dadc12e0eb94356209a/ros2.repos |
https://github.com/Mergifyio backport iron |
✅ Backports have been created
|
* Store serialized metadata in MCAP file when calling update_metadata() Signed-off-by: Michael Orlov <[email protected]> * Remove ROS_DISTRO key-value from mcap::Metadata - ROS_DISTRO now stored inside serialized metadata Signed-off-by: Michael Orlov <[email protected]> * Fix for test failure on Windows - Use `UnorderedElementsAreArray` for checking `metadata.topics_with_message_count`. - The list of the metadata.topics_with_message_count forming from the mcap_reader_->channels() which is unordered_map. The order of the elements in the unordered_map is unpredictable and can vary on different platforms. Signed-off-by: Michael Orlov <[email protected]> --------- Signed-off-by: Michael Orlov <[email protected]> (cherry picked from commit a029ef9) # Conflicts: # rosbag2_storage_mcap/src/mcap_storage.cpp
https://github.com/Mergifyio backport humble |
✅ Backports have been created
|
* Store serialized metadata in MCAP file when calling update_metadata() Signed-off-by: Michael Orlov <[email protected]> * Remove ROS_DISTRO key-value from mcap::Metadata - ROS_DISTRO now stored inside serialized metadata Signed-off-by: Michael Orlov <[email protected]> * Fix for test failure on Windows - Use `UnorderedElementsAreArray` for checking `metadata.topics_with_message_count`. - The list of the metadata.topics_with_message_count forming from the mcap_reader_->channels() which is unordered_map. The order of the elements in the unordered_map is unpredictable and can vary on different platforms. Signed-off-by: Michael Orlov <[email protected]> --------- Signed-off-by: Michael Orlov <[email protected]> (cherry picked from commit a029ef9) # Conflicts: # rosbag2_storage_mcap/src/mcap_storage.cpp # rosbag2_storage_mcap/test/rosbag2_storage_mcap/test_mcap_storage.cpp
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-2023-10-12/34178/1 |
- Rationale: Mcap storage is not storing serialized metadata in a bag directly on Humble. Backporting of the relevant #1423 is not possible without updating mcap vendor package to the v1.1.0 because we have dependencies from the mcap_reader_->metadataIndexes(); API which became available only in the foxglove/mcap#902 Signed-off-by: Michael Orlov <[email protected]>
- Rationale: Mcap storage doesn't store serialized metadata in bag directly on Iron and Humble. Backporting of the relevant #1423 is not possible without updating mcap vendor package to the v1.1.0 because we have dependencies from the mcap_reader_->metadataIndexes(); API which became available only in the foxglove/mcap#902 Signed-off-by: Michael Orlov <[email protected]>
…ml file during re-indexing (backport #1700) (#1711) * Propagate "custom_data" and "ros_distro" in to the metadata.yaml file during re-indexing (#1700) * propagate custom data and ros_distro during reindexing Signed-off-by: Cole Tucker Signed-off-by: coalman321 <[email protected]> * fix ament uncrustify issue Signed-off-by: coalman321 <[email protected]> * only update metadata if size is nonzero Signed-off-by: coalman321 <[email protected]> * fix uncrustify issue and switch to empty Signed-off-by: coalman321 <[email protected]> * update reindexer test to verify custom data and ros_distro changes Signed-off-by: coalman321 <[email protected]> * Convert to use exact clock type for windows CI Signed-off-by: coalman321 <[email protected]> --------- Signed-off-by: coalman321 <[email protected]> (cherry picked from commit 804432c) * Remove "metadata.ros_distro" update since we don't have in on Iron Signed-off-by: Michael Orlov <[email protected]> * Skip check for `custom_metadata` in test for mcap storage plugin. - Rationale: Mcap storage doesn't store serialized metadata in bag directly on Iron and Humble. Backporting of the relevant #1423 is not possible without updating mcap vendor package to the v1.1.0 because we have dependencies from the mcap_reader_->metadataIndexes(); API which became available only in the foxglove/mcap#902 Signed-off-by: Michael Orlov <[email protected]> --------- Signed-off-by: Michael Orlov <[email protected]> Co-authored-by: Cole Tucker <[email protected]> Co-authored-by: Michael Orlov <[email protected]>
update_metadata()
get_metada()
mcap::Metadata
. ROS_DISTRO is now stored inside serialized metadata.