forked from ros2/rosbag2
-
Notifications
You must be signed in to change notification settings - Fork 0
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
update rolling #5
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
) Signed-off-by: Michael Orlov <[email protected]>
Signed-off-by: Tomoya Fujita <[email protected]>
* Improve performance in SqliteStorage::get_bagfile_size() - In SQLite3 DB file size is equal to the db page_count * page_size - Use DB query to get page_count and page_size instead of filesystem blocking call. Signed-off-by: Michael Orlov <[email protected]> * Address integration tests failure - Don't use static objects for the SqliteStatement, it causes DB lock and failure to close and open it again. Signed-off-by: Michael Orlov <[email protected]> * Protect get_bagfile_size() with database_write_mutex_ Signed-off-by: Michael Orlov <[email protected]> * Make get_bagfile_size() lock free to avoid locking double-buffer cache - Moved db_file_size_ update to the functions which are writing to the database Signed-off-by: Michael Orlov <[email protected]> * Move test_storage_interfaces.cpp to the rosbag2_tests - Move test_storage_interfaces.cpp to the rosbag2_tests due to the cyclic dependencies between rosbag2_storage and storage plugins. Signed-off-by: Michael Orlov <[email protected]> * Rename test_storage_interfaces.cpp to the test_rosbag2_storage_api.cpp Signed-off-by: Michael Orlov <[email protected]> * Address review comments - Rename `database_write_mutex_` to the `db_read_write_mutex_` - Add const qualifiers for get_page_size() and read_total_page_count_locked() methods Signed-off-by: Michael Orlov <[email protected]> * Fix Windows warnings in test_rosbag2_storage_api.cpp Signed-off-by: Michael Orlov <[email protected]> --------- Signed-off-by: Michael Orlov <[email protected]>
Signed-off-by: Christoph Froehlich <[email protected]>
* feat: add sane defaults for CompressionOptions Signed-off-by: Arne Böckmann <[email protected]> * Update rosbag2_compression/include/rosbag2_compression/compression_options.hpp Co-authored-by: Tomoya Fujita <[email protected]> Signed-off-by: Arne Böckmann <[email protected]> --------- Signed-off-by: Arne Böckmann <[email protected]> Co-authored-by: Arne Böckmann <[email protected]> Co-authored-by: Tomoya Fujita <[email protected]>
* Change an incorrect TSA annotation. read_total_page_count_locked is protected by the db_read_write_mutex_, but doesn't take it itself. Fix the annotation to reflect that. Signed-off-by: Chris Lalancette <[email protected]>
remove filesystem header file since it‘s never been used Signed-off-by: uupks <[email protected]>
… implementation (ros2#1555) Signed-off-by: Barry Xu <[email protected]>
) - Workaround for ros2#1311 - Gracefully stop player in TearDown() before calling rclcpp::shutdown() in destructor. Signed-off-by: Michael Orlov <[email protected]>
* Remove rcpputils::fs dependencies from rosbag2_storages Original author: Kenta Yonekura <[email protected]> Signed-off-by: Roman Sokolkov <[email protected]> * Use path::generic_string() for Windows compatibility Co-authored with Kenta Yonekura <[email protected]> Signed-off-by: Roman Sokolkov <[email protected]> * Fix linter errors in osbag2_storage_sqlite3 Signed-off-by: Roman Sokolkov <[email protected]> --------- Signed-off-by: Roman Sokolkov <[email protected]> Co-authored-by: Kenta Yonekura <[email protected]>
* use rw_lock to protect mcap metadata lists. Signed-off-by: Tomoya Fujita <[email protected]> * introduce MCAPStorage::write_lock_free private method. Signed-off-by: Tomoya Fujita <[email protected]> --------- Signed-off-by: Tomoya Fujita <[email protected]>
* Add topic_id returned by storage to the TopicMetadata - Rationale. To be able to distinguish topics by unique topic ID rather than by topic name in the future. Signed-off-by: Michael Orlov <[email protected]> * Map inner int64_t topic_id to the external uint16_t topic_id in sqlite3 Signed-off-by: Michael Orlov <[email protected]> * Change TopicMetadata::id type to uint16_t Signed-off-by: Michael Orlov <[email protected]> * Use atomic for last_extern_topic_id_ Co-authored-by: Tomoya Fujita <[email protected]> Signed-off-by: Michael Orlov <[email protected]> --------- Signed-off-by: Michael Orlov <[email protected]> Co-authored-by: Tomoya Fujita <[email protected]>
Uncrustify 0.78 is the new version in Ubuntu 24.04. It has some small differences in indentation compared to Uncrustify 0.72, which is what is in Ubuntu 22.04. In this PR, we make the changes to match what Uncrustify 0.78 wants. In most cases, I think this is a "better" indentation. We also add in strategic use of "*INDENT-OFF*" comments, which instructs Uncrustify to not indent this particular section of code. That is so that this will still pass the linters on Uncrustify 0.72 while Rolling is still on that version. Signed-off-by: Chris Lalancette <[email protected]>
…os2#1575) * fix: use decltype to get size_t type for macos Signed-off-by: wep21 <[email protected]> * use size_t instead of uint64_t for read_ahead_queue_size Co-authored-by: Tomoya Fujita <[email protected]> Signed-off-by: Daisuke Nishimatsu <[email protected]> --------- Signed-off-by: wep21 <[email protected]> Signed-off-by: Daisuke Nishimatsu <[email protected]> Co-authored-by: Tomoya Fujita <[email protected]>
Signed-off-by: Alejandro Hernández Cordero <[email protected]>
…ts (ros2#1585) * Cleanup in topic_filter.cpp and add test coverage Signed-off-by: Michael Orlov <[email protected]> * Use TestTopicFilter name for test fixture in the test_topic_filter.cpp - Before we were using RegexFixture. However, many tests under this test fixture unrelated to the regex. It will be more appropriate and to be consistent to use one test fixture with more generic name. Signed-off-by: Michael Orlov <[email protected]> * Delete test_record_topic_types.cpp - Rationale: 1. Need to avoid using pub/sub and transport layer for testing basic functionalities is it could be avoided. 2. The use cases with filtering messages by topic types already covered in the test_topic_filter.cpp Signed-off-by: Michael Orlov <[email protected]> * Add missed `--topic-types` to the error message Signed-off-by: Michael Orlov <[email protected]> --------- Signed-off-by: Michael Orlov <[email protected]>
* add transactional state mutex for RecorderImpl class. Signed-off-by: Tomoya.Fujita <[email protected]> * address uncrustify warning. Signed-off-by: Tomoya.Fujita <[email protected]> * address review comments and suggested fixes. Signed-off-by: Tomoya Fujita <[email protected]> * address review comment and clang-tidy warning. Signed-off-by: Tomoya Fujita <[email protected]> * Add Recorder::start_discovery() API and protect discovery with mutex - Also use non-recursive mutex for the `state_transition_mutex_` Signed-off-by: Michael Orlov <[email protected]> * Fix deadlocks in pause(), resume() and toggle_paused() methods - Removed mutex lock in pause(), resume() and toggle_paused() methods and use only atomic value change for `paused_` variable. - Renamed `state_transition_mutex_` to the `start_stop_transition_mutex_`. - Add unit test for `toggle_paused()` Signed-off-by: Michael Orlov <[email protected]> * Fix for warning about breaking strict-aliasing rules - Changed type of the paused_ to the std::atomic_uchar Signed-off-by: Michael Orlov <[email protected]> --------- Signed-off-by: Tomoya.Fujita <[email protected]> Signed-off-by: Tomoya Fujita <[email protected]> Signed-off-by: Michael Orlov <[email protected]> Co-authored-by: Michael Orlov <[email protected]>
* Add Python stubs for rosbag2_py Signed-off-by: Roman Sokolkov <[email protected]> * Add note to DEVELOPING.md Signed-off-by: Roman Sokolkov <[email protected]> * Add note to py.typed Signed-off-by: Roman Sokolkov <[email protected]> --------- Signed-off-by: Roman Sokolkov <[email protected]>
Signed-off-by: Roman Sokolkov <[email protected]>
* Fix for false negative tests in rosbag2_py - wait_for(condition: Callable, timout) was incorrectly returning True after the first iteration even if condition was false. Signed-off-by: Michael Orlov <[email protected]> * Address review comments in regards bag_path optimization Signed-off-by: Michael Orlov <[email protected]> --------- Signed-off-by: Michael Orlov <[email protected]>
Signed-off-by: Adam Aposhian <[email protected]>
* Remove rcpputils::fs dependency from rosbag2_cpp Signed-off-by: Kenta Yonekura <[email protected]> * Remove rcpputils::fs dependency from tests Signed-off-by: Kenta Yonekura <[email protected]> * Replace rcpputils::fs with std::filesystem Signed-off-by: Roman Sokolkov <[email protected]> * Use .generic_string() in tests Signed-off-by: Roman Sokolkov <[email protected]> * Revert remove_all from fixture Signed-off-by: Roman Sokolkov <[email protected]> --------- Signed-off-by: Kenta Yonekura <[email protected]> Signed-off-by: Roman Sokolkov <[email protected]> Co-authored-by: Kenta Yonekura <[email protected]>
Signed-off-by: Marco A. Gutierrez <[email protected]>
Signed-off-by: Alejandro Hernández Cordero <[email protected]>
* Switch to using ament_vendor_package for lz4. This is more explicit, and more like how we vendor the rest of the packages in our ecosystem. * Rename to liblz4_vendor. This is to make it clear that we are only vendoring the library portion, which is BSD, rather than the rest of it, which is GPL. Signed-off-by: Chris Lalancette <[email protected]>
…1594) * rosbag2_storage_mcap: check existence of a file before passing it to mcap::FileStreamReader in order to avoid assertion failing Signed-off-by: Christopher Wecht <[email protected]> * rosbag2_storage_mcap: use rcutils_strerror instead of strerror Signed-off-by: Christopher Wecht <[email protected]> --------- Signed-off-by: Christopher Wecht <[email protected]>
…on (ros2#1510) * Initial composition documentation Signed-off-by: Patrick Roncagliolo <[email protected]> * Update python snippet Signed-off-by: Patrick Roncagliolo <[email protected]> * Update README.md Co-authored-by: Tomoya Fujita <[email protected]> Signed-off-by: Patrick Roncagliolo <[email protected]> * Update README.md Co-authored-by: Tomoya Fujita <[email protected]> Signed-off-by: Patrick Roncagliolo <[email protected]> * Update README.md Co-authored-by: Michael Orlov <[email protected]> Signed-off-by: Patrick Roncagliolo <[email protected]> * Add parameters example for composition Signed-off-by: Patrick Roncagliolo <[email protected]> * Update README.md Co-authored-by: Michael Orlov <[email protected]> Signed-off-by: Patrick Roncagliolo <[email protected]> * Update README.md Co-authored-by: Michael Orlov <[email protected]> Signed-off-by: Patrick Roncagliolo <[email protected]> * Update README.md Co-authored-by: Michael Orlov <[email protected]> Signed-off-by: Patrick Roncagliolo <[email protected]> * Update README.md Signed-off-by: Patrick Roncagliolo <[email protected]> --------- Signed-off-by: Patrick Roncagliolo <[email protected]> Co-authored-by: Tomoya Fujita <[email protected]> Co-authored-by: Michael Orlov <[email protected]>
…os2#1557) * Gracefully handle SIGINT and SIGTERM signals for play and burst CLI - Intercept signals to call Player::stop() instead of relying on the rclcpp::shutdown() in default signal handlers. - Also added static Player::Cancel() method. Signed-off-by: Michael Orlov <[email protected]> * Add test_play_cancel to the test_transport.py Signed-off-by: Michael Orlov <[email protected]> * Add missing imports in test_transport.py Signed-off-by: Michael Orlov <[email protected]> * Regenerate Python stub files (.pyi) after altering API Signed-off-by: Michael Orlov <[email protected]> * Add call for original deferred signal handler for Player and Recorder Signed-off-by: Michael Orlov <[email protected]> --------- Signed-off-by: Michael Orlov <[email protected]>
Signed-off-by: Chris Lalancette <[email protected]>
That's because there is code in _storage.cpp that imports rclpy.duration at runtime. Signed-off-by: Chris Lalancette <[email protected]>
…ssion (ros2#1643) * Bugfix for bag_split event callbacks not called with file compression Signed-off-by: Michael Orlov <[email protected]> * Delete redundant "should_split_bagfile" in compression_writer - It is a non-virtual method and doesn't call from the base class. Signed-off-by: Michael Orlov <[email protected]> * Adjust "split_event_calls_callback" for testing multiple splits Signed-off-by: Michael Orlov <[email protected]> * Use temp folder for "SequentialWriterTest" fixture instead of "uri" Signed-off-by: Michael Orlov <[email protected]> * Add tests for split event callbacks when using file and msg compression - Added "split_event_calls_callback_with_msg_compression" and "split_event_calls_callback_with_file_compression" uit tests Signed-off-by: Michael Orlov <[email protected]> * Add debug info to the flaky "can_record_again_after_stop" test Signed-off-by: Michael Orlov <[email protected]> * Use `uint64_t` type for `fake_storage_size_` in tests Signed-off-by: Michael Orlov <[email protected]> --------- Signed-off-by: Michael Orlov <[email protected]>
Signed-off-by: Christophe Bedard <[email protected]> Co-authored-by: mosfet80 <[email protected]>
Signed-off-by: Alejandro Hernández Cordero <[email protected]>
…os2#1742) - The failure was because database file was not properly closed after throwing exception from the SqliteWrapper constructor and std::filesystem::remove_all(..) failed to delete temporary folder in the test fixture destructor. - Added reset for prepared sql statement before throwing exception. - Try to close database in constructor if we got exception after opening it since destructor will not be called in this case. Signed-off-by: Michael Orlov <[email protected]>
…os2#1743) - In record_end_to_end_with_splitting_bagsize_split_is_at_least_specified_size publisher was starting after terminating recorder. Signed-off-by: Michael Orlov <[email protected]>
* Bugfix for wrong timestamps in ros2 bag info - Correctly calculate fractional part for seconds by subtracting `nanoseconds_from_seconds` from `nanoseconds`. Signed-off-by: Michael Orlov <[email protected]> * Adjust expectations in the "ros2 bag info" integration tests Signed-off-by: Michael Orlov <[email protected]> * Add leading zeros to the fractional seconds in the format_duration(..) Signed-off-by: Michael Orlov <[email protected]> * Adjust expectations in info end-to-end tests by adding leading zero The real file duration is: 70633730 nanoseconds. i.e., regex mask shall be "0\\.0706.*s" to match 070633730 nanoseconds. Signed-off-by: Michael Orlov <[email protected]> --------- Signed-off-by: Michael Orlov <[email protected]>
Signed-off-by: Michael Orlov <[email protected]> Signed-off-by: Alejandro Hernández Cordero <[email protected]> Co-authored-by: Alejandro Hernández Cordero <[email protected]>
* Add optional computation of size contribution to info verb Signed-off-by: Nicola Loi <[email protected]> * Update rosbag2_cpp/src/rosbag2_cpp/info.cpp Co-authored-by: Michael Orlov <[email protected]> Signed-off-by: Nicola Loi <[email protected]> * Fixes for review and failed tests - Also update rosbag2_tests Signed-off-by: Nicola Loi <[email protected]> * Support services' size - Also add new test and update design doc Signed-off-by: Nicola Loi <[email protected]> * Fix style divergence Signed-off-by: Nicola Loi <[email protected]> * Apply suggestions from code review Co-authored-by: Michael Orlov <[email protected]> Signed-off-by: Nicola Loi <[email protected]> * Update timestamp check for new ros bag info test Signed-off-by: Nicola Loi <[email protected]> --------- Signed-off-by: Nicola Loi <[email protected]> Co-authored-by: Michael Orlov <[email protected]>
This ensures that we always cleanup and destroy all entities when we leave the context. We also make sure to always capture the exceptions that are "expected", so we get a clean exit. Signed-off-by: Chris Lalancette <[email protected]>
* Fix incorrect zero size for sqlite storage Signed-off-by: Roman Sokolkov <[email protected]> * Adjust unit test to precisely verify the returned file size Signed-off-by: Michael Orlov <[email protected]> --------- Signed-off-by: Roman Sokolkov <[email protected]> Signed-off-by: Michael Orlov <[email protected]> Co-authored-by: Michael Orlov <[email protected]>
…ros2#1767) Signed-off-by: Tomoya Fujita <[email protected]>
* Add cli option compression-threads-priority Signed-off-by: Roman Sokolkov <[email protected]> * Fix CI issues Signed-off-by: Roman Sokolkov <[email protected]> * Add timeout for the test_priority_propagated_into_compression_thread Signed-off-by: Michael Orlov <[email protected]> * Update help section and doxygen comments for thread priority parameters Signed-off-by: Michael Orlov <[email protected]> * Use integer type for compression threads priority default value in tests - Rationale: To test the same behavior as in the writer factory class Signed-off-by: Michael Orlov <[email protected]> --------- Signed-off-by: Roman Sokolkov <[email protected]> Signed-off-by: Michael Orlov <[email protected]> Co-authored-by: Michael Orlov <[email protected]>
… to latest versions (ros2#1709) * Use Ubuntu Noble distros for ci jobs on rolling Signed-off-by: Michael Orlov <[email protected]> * Bump actions-ros-lint to version 0.1.3 and actions/checkout to v4 Signed-off-by: Michael Orlov <[email protected]> * Exclude cppcheck from CI due to known issue that it is very slow See ament/ament_lint#345 for details. Signed-off-by: Michael Orlov <[email protected]> * Bump mypy to version 1.9.0-4ubuntu1 to be aligned with Noble - Also add `--break-system-packages` to avoid error during pip uninstall Signed-off-by: Michael Orlov <[email protected]> * Remove "sudo pip uninstall -y mypy" since it is not installed with pip Addressing the error message: Found existing installation: mypy 1.9.0 ERROR: Cannot uninstall mypy 1.9.0, RECORD file not found. Hint: The package was installed by debian. Signed-off-by: Michael Orlov <[email protected]> * Revert "Bump mypy to version 1.9.0-4ubuntu1 to be aligned with Noble" This reverts commit b5aa018 Signed-off-by: Michael Orlov <[email protected]> * Fixes for new mypy (Ubuntu 24.04) (ros2#1763) * Apply new stubgen changes Signed-off-by: Roman Sokolkov <[email protected]> * Update CI script and README.md Signed-off-by: Roman Sokolkov <[email protected]> --------- Signed-off-by: Roman Sokolkov <[email protected]> * Remove "--break-system-packages" flag from mypy install in README.md - Rationale: On Ubuntu 22.04 is an older version of the pip3 and python version which doesn't have this flag. - Also removed sudo before "pip3 install -U mypy==1.9" in README.md Signed-off-by: Michael Orlov <[email protected]> --------- Signed-off-by: Michael Orlov <[email protected]> Signed-off-by: Roman Sokolkov <[email protected]> Co-authored-by: Roman <[email protected]>
Update mcap cpp to last version Signed-off-by: mosfet80 <[email protected]>
switch to node 20 node<20 is deprecaded Signed-off-by: mosfet80 <[email protected]>
* Update ros-lint Upgrade to Node.js v20 Signed-off-by: mosfet80 <[email protected]> * Update lint.yml Signed-off-by: mosfet80 <[email protected]> * Update lint.yml Signed-off-by: mosfet80 <[email protected]> --------- Signed-off-by: mosfet80 <[email protected]>
Signed-off-by: Alejandro Hernández Cordero <[email protected]>
* Small cleanups to the rosbag2 tests. 1. Rename "wait_for_srvice_to_be_ready" to "wait_for_service_to_be_ready". 2. Make some of the constants constexpr, so we no longer have to capture them. Signed-off-by: Chris Lalancette <[email protected]>
* Removed warnings * compile with windows * make linters happy Signed-off-by: Alejandro Hernández Cordero <[email protected]>
Signed-off-by: Alejandro Hernández Cordero <[email protected]>
* Remove wait_until_shutdown. This has almost exactly the same functionality as wait_for_condition, except for two things: 1. It is templated on the Timeout type. 2. It calls rclcpp::shutdown after the loop completes. However, neither of those is necessary; all callers to it use a std::chrono::duration, and all of the test fixtures already call rclcpp::shutdown. Thus, just remove it and make all callers use wait_for_condition instead. Signed-off-by: Chris Lalancette <[email protected]> * Shutdown the async spinner node without rclcpp::shutdown. That is, we really don't actually want to do a full rclcpp shutdown here; we only want to stop spinning. Accomplish that with an executor, and timing out every 100 milliseconds to check if we are done yet. Signed-off-by: Chris Lalancette <[email protected]> * Small fixes to start_async_spin in rosbag2_tests. Make sure it only spins as long as we haven't shutdown, and that it wakes up every so often to check that fact. Signed-off-by: Chris Lalancette <[email protected]> * Wait for topics to be discovered during recorder->record(). The main reason for that is that these tests generally want to test certain expectations around how many messages were received. However, if discovery takes longer than we expect, then it could be the case that we "missed" messages at the beginning because discovery hadn't yet completed. Fix this by just waiting around for the recorder to get all the subscriptions it expects before moving on with the test. Signed-off-by: Chris Lalancette <[email protected]> * Feedback from review. Signed-off-by: Chris Lalancette <[email protected]> * Switch to using MockRecorder. Signed-off-by: Chris Lalancette <[email protected]> * Fixes from review. Signed-off-by: Chris Lalancette <[email protected]> * Feedback from review. Signed-off-by: Chris Lalancette <[email protected]> * Apply suggestions from code review Co-authored-by: Michael Orlov <[email protected]> Signed-off-by: Chris Lalancette <[email protected]> * Switch to using spin, rather than spin_some. That's because there is currently at least one bug associated with spin_some in rclcpp. However, it turns out that we don't even need to use it, as we can just as easily use spin() along with exec.cancel(). Signed-off-by: Chris Lalancette <[email protected]> * Make sure to stop_spinning when we tear down the test. Signed-off-by: Chris Lalancette <[email protected]> * Use scopes to shutdown spinning. Signed-off-by: Chris Lalancette <[email protected]> * Nested contexts just to explicitly cleanup the async spinners. Signed-off-by: Chris Lalancette <[email protected]> * Update rosbag2_transport/test/rosbag2_transport/record_integration_fixture.hpp Co-authored-by: Michael Orlov <[email protected]> Signed-off-by: Chris Lalancette <[email protected]> * Apply the same fix to rosbag2_tests. Signed-off-by: Chris Lalancette <[email protected]> --------- Signed-off-by: Chris Lalancette <[email protected]> Co-authored-by: Michael Orlov <[email protected]>
- Rationale: Uncrustify on CI throws formating errors different from the latest version compiled from sources. Signed-off-by: Michael Orlov <[email protected]>
Signed-off-by: Michael Orlov <[email protected]>
* Bugfix for rosbag2 serialization converter - Use rmw specific type support for rmw_serilize{deserialize} function calls. Note: It is ok for CycloneDDS to use introspection type support for rmw_serilize{deserialize} functions. However, for FastRTPS it must be rmw specific type support. e.g. rosidl_typesupport_cpp. Fix works for both CycloneDDS and FastRTPS rmw. Signed-off-by: Michael Orlov <[email protected]> * Add test coverage for default rmv serialization format converter Signed-off-by: Michael Orlov <[email protected]> * Run test_serialization_converter for each rmw implementation - Rationale: To make sure that the default serialization converter can serialize and deserialize messages with all supported rmw implementations. Since it uses rmw specific functions for serialization and deserialization inside. Signed-off-by: Michael Orlov <[email protected]> * Address uncrustify formating warnings Signed-off-by: Michael Orlov <[email protected]> * Enable sanitizer by default Signed-off-by: Michael Orlov <[email protected]> * Address Windows build warnings Signed-off-by: Michael Orlov <[email protected]> * Revert "Enable sanitizer by default" This reverts commit 7241963. Signed-off-by: Michael Orlov <[email protected]> --------- Signed-off-by: Michael Orlov <[email protected]>
…o_copy_sub # Conflicts: # ros2bag/ros2bag/verb/record.py # rosbag2_cpp/src/rosbag2_cpp/writers/sequential_writer.cpp # rosbag2_py/src/rosbag2_py/_transport.cpp # rosbag2_transport/CMakeLists.txt # rosbag2_transport/src/rosbag2_transport/record_options.cpp # rosbag2_transport/src/rosbag2_transport/recorder.cpp
This reverts commit 86be6e7
Merged
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.