{"action":"created","issue":{"url":"https://api.github.com/repos/ros2/rclcpp/issues/435","repository_url":"https://api.github.com/repos/ros2/rclcpp","labels_url":"https://api.github.com/repos/ros2/rclcpp/issues/435/labels{/name}","comments_url":"https://api.github.com/repos/ros2/rclcpp/issues/435/comments","events_url":"https://api.github.com/repos/ros2/rclcpp/issues/435/events","html_url":"https://github.com/ros2/rclcpp/pull/435","id":294032909,"number":435,"title":"handle node names which are null","user":{"login":"dirk-thomas","id":1335366,"avatar_url":"https://avatars1.githubusercontent.com/u/1335366?v=4","gravatar_id":"","url":"https://api.github.com/users/dirk-thomas","html_url":"https://github.com/dirk-thomas","followers_url":"https://api.github.com/users/dirk-thomas/followers","following_url":"https://api.github.com/users/dirk-thomas/following{/other_user}","gists_url":"https://api.github.com/users/dirk-thomas/gists{/gist_id}","starred_url":"https://api.github.com/users/dirk-thomas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dirk-thomas/subscriptions","organizations_url":"https://api.github.com/users/dirk-thomas/orgs","repos_url":"https://api.github.com/users/dirk-thomas/repos","events_url":"https://api.github.com/users/dirk-thomas/events{/privacy}","received_events_url":"https://api.github.com/users/dirk-thomas/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":{"login":"dirk-thomas","id":1335366,"avatar_url":"https://avatars1.githubusercontent.com/u/1335366?v=4","gravatar_id":"","url":"https://api.github.com/users/dirk-thomas","html_url":"https://github.com/dirk-thomas","followers_url":"https://api.github.com/users/dirk-thomas/followers","following_url":"https://api.github.com/users/dirk-thomas/following{/other_user}","gists_url":"https://api.github.com/users/dirk-thomas/gists{/gist_id}","starred_url":"https://api.github.com/users/dirk-thomas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dirk-thomas/subscriptions","organizations_url":"https://api.github.com/users/dirk-thomas/orgs","repos_url":"https://api.github.com/users/dirk-thomas/repos","events_url":"https://api.github.com/users/dirk-thomas/events{/privacy}","received_events_url":"https://api.github.com/users/dirk-thomas/received_events","type":"User","site_admin":false},"assignees":[{"login":"dirk-thomas","id":1335366,"avatar_url":"https://avatars1.githubusercontent.com/u/1335366?v=4","gravatar_id":"","url":"https://api.github.com/users/dirk-thomas","html_url":"https://github.com/dirk-thomas","followers_url":"https://api.github.com/users/dirk-thomas/followers","following_url":"https://api.github.com/users/dirk-thomas/following{/other_user}","gists_url":"https://api.github.com/users/dirk-thomas/gists{/gist_id}","starred_url":"https://api.github.com/users/dirk-thomas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dirk-thomas/subscriptions","organizations_url":"https://api.github.com/users/dirk-thomas/orgs","repos_url":"https://api.github.com/users/dirk-thomas/repos","events_url":"https://api.github.com/users/dirk-thomas/events{/privacy}","received_events_url":"https://api.github.com/users/dirk-thomas/received_events","type":"User","site_admin":false}],"milestone":null,"comments":0,"created_at":"2018-02-02T21:45:20Z","updated_at":"2018-03-30T23:08:19Z","closed_at":"2018-03-30T17:56:07Z","author_association":"OWNER","pull_request":{"url":"https://api.github.com/repos/ros2/rclcpp/pulls/435","html_url":"https://github.com/ros2/rclcpp/pull/435","diff_url":"https://github.com/ros2/rclcpp/pull/435.diff","patch_url":"https://github.com/ros2/rclcpp/pull/435.patch"},"body":"Necessary since each item can potentially contain a `nullptr`.\r\n\r\nConnect to ros2/ros2#438."},"comment":{"url":"https://api.github.com/repos/ros2/rclcpp/issues/comments/377642923","html_url":"https://github.com/ros2/rclcpp/pull/435#issuecomment-377642923","issue_url":"https://api.github.com/repos/ros2/rclcpp/issues/435","id":377642923,"user":{"login":"dhood","id":5618076,"avatar_url":"https://avatars0.githubusercontent.com/u/5618076?v=4","gravatar_id":"","url":"https://api.github.com/users/dhood","html_url":"https://github.com/dhood","followers_url":"https://api.github.com/users/dhood/followers","following_url":"https://api.github.com/users/dhood/following{/other_user}","gists_url":"https://api.github.com/users/dhood/gists{/gist_id}","starred_url":"https://api.github.com/users/dhood/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dhood/subscriptions","organizations_url":"https://api.github.com/users/dhood/orgs","repos_url":"https://api.github.com/users/dhood/repos","events_url":"https://api.github.com/users/dhood/events{/privacy}","received_events_url":"https://api.github.com/users/dhood/received_events","type":"User","site_admin":false},"created_at":"2018-03-30T23:08:19Z","updated_at":"2018-03-30T23:08:19Z","author_association":"OWNER","body":"Pure DDS participants will show up in this list as null. The current approach returns a list that contains these empty names. At first I didn't see a big issue with this, but reviewing the recently-added tests in https://github.com/ros2/system_tests/pull/260, I was surprised by the behaviour of it outputting blank lines: https://ci.ros2.org/job/ci_linux/4161/testReport/junit/test_rclcpp.build.test_rclcpp/test_node_name__rmw_opensplice_cpp__rmw_connext_cpp_/test_node_name/\r\n\r\nFrom a design perspective, I would think that it is the role of the client library to filter out the implementation detail that rmw implementations may detect these \"nameless\" participants, since the user is requesting a list of ROS nodes not DDS participants. Otherwise every caller of `get_node_names` needs to filter it themselves, which seems strange since empty ROS node names aren't actually permitted.\r\n\r\nI understand that the test is behaving as expected with this approach, so it may be that my opinion is off for some reason or another (efficiency is the counterargument I suspect). Could I get confirmation that we see it as the user's responsibility to check for empty node names themselves?"}}
{"actor":{"display_login":"dhood"}}