You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Right now there are a variety of places in the rosbag2 core that encode the explicit string "sqlite3". This is a tight coupling between the core and the default storage implementation.
We should define in a single place what the default storage is, and use that wherever a default is required. Right now, this means finding all places where sqlite3 is mentioned explicitly, outside the sqlite3 storage implementation, and changing them so that it is not needed.
Related Issues
Completion Criteria
No explicit mention of "sqlite3" string anywhere in rosbag2 core
Allow empty storage id for record/write - Writer uses default storage implementation when not specified
Implementation Notes / Suggestions
Some options I can think of
Somehow use the ament_index to register a file from rosbag2_storage_default_plugins, which contains the name of the default plugin. This can be loaded by upstream packages
Provide an environment variable (via ament_environment_hooks) that user could override. ROSBAG2_DEFAULT_STORAGE maybe. If variable is unset for some reason, still want to have a builtin default to fall back to
Make rosbag2_storage_default_plugins provide a C++ header with a const string of the default plugin ID, which downstream packages can read and use. Expose this via rosbag2_py as well.
Testing Notes / Suggestions
All tests should run against the default storage implementation
The text was updated successfully, but these errors were encountered:
Expose a get_default_storage_id() function from rosbag2_storage, bind with pybind11
Use this to set the default for ros2 bag record -s, and the default for Writer::open(std::string uri)
for the tests, do a pass and split them between "sqlite3 specific" and "storage plugin agnostic". Leave the sqlite3-specific tests alone, and parametrize the storage plugin agnostic tests across all default-installed plugins (sqlite3, and soon MCAP).
Description
Right now there are a variety of places in the rosbag2 core that encode the explicit string
"sqlite3"
. This is a tight coupling between the core and the default storage implementation.We should define in a single place what the default storage is, and use that wherever a default is required. Right now, this means finding all places where sqlite3 is mentioned explicitly, outside the sqlite3 storage implementation, and changing them so that it is not needed.
Related Issues
Completion Criteria
Implementation Notes / Suggestions
Some options I can think of
ament_index
to register a file fromrosbag2_storage_default_plugins
, which contains the name of the default plugin. This can be loaded by upstream packagesament_environment_hooks
) that user could override.ROSBAG2_DEFAULT_STORAGE
maybe. If variable is unset for some reason, still want to have a builtin default to fall back torosbag2_storage_default_plugins
provide a C++ header with a const string of the default plugin ID, which downstream packages can read and use. Expose this viarosbag2_py
as well.Testing Notes / Suggestions
The text was updated successfully, but these errors were encountered: