-
Notifications
You must be signed in to change notification settings - Fork 254
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
Windows CI can't find metadata.yaml
file when using ros2 bag record
#926
Comments
Can't remember exactly - but I think this is a problem we've run into on Windows in the past - that windows can't send a proper SIGINT. So, the ExecuteProcess does not receive the SIGINT and does not have a clean shutdown, which is how the Not 100% positive that's what is happening, but it is ringing that bell. I don't know how it is solved because Windows doesn't have the same concept of signals. How could we provide a clean shutdown for the process on Windows? |
Maybe that was this issue rosbag2/rosbag2_tests/test/rosbag2_tests/test_rosbag2_record_end_to_end.cpp Lines 151 to 164 in a060c1d
In that case, maybe a similar patch can be added in the place where the issue is happening now. |
@ivanpauno for |
maybe, I don't have much context |
That should do.
To the best of my knowledge, there's no easy, non-intrusive mechanism to ask a process to shutdown in Windows. The underlying process (e.g. @emersonknapp looking at the metadata itself, it looks like half of it we could write out at the beginning and the other half can be retrieved from storage (based on the details contained in the first half). It's a big change, but we'd get rid of this issue entirely. |
Yeah, the metadata as-is is a bit unwieldy, and was built with some undocumented use cases in mind (not by me so I'm only passing familiar with them). We wouldn't be able to entirely write out the "first half" metadata at startup, because the most important bit is the relative file paths - this is only known on each recording split and so the metadata would need to be updated at those times. However that that would probably be fine, writing a YAML file is cheap. Much of the metadata indeed could be got from storage - but there is some value in the higher level metadata having the aggregated values across all subfiles, which an individual subfile would not be able to provide. Just thinking out loud above - I'd be willing to review a proposal for a more crash-resistant metadata approach. Ideally one that doesn't change the end result very much. |
Hmm, how about a |
A slightly simpler approach might be to add a Parameter based configuration would be very nice but will be a pretty big effort, may not want to block this on that. |
Exposed as a service? That would work too. A bit ad-hoc, but yeah, simpler than parameter based configuration. |
Description
This came up in ros2/examples#327, in the script
rosbag_recrd_launch_test.py
. The test runsros2 bag record -a -o <temp_directory>
with atalker
node, waits for 3 secs for the data to be recorded then checks formetadata.yaml
file in the<temp_directory>
Expected Behavior
The Windows CI should find the
metadata.yaml
file. Linux and MacOS CI work just fine.To reproduce the error :
Run the following script:
Actual Behavior
System (please complete the following information)
Additional context
The example script has been disabled for windows for now.
The text was updated successfully, but these errors were encountered: