Skip to content

Commit d1d3c34

Browse files
Chen LihuiChen Lihui
authored andcommitted
to remove goal id if request failed
Signed-off-by: Chen Lihui <[email protected]>
1 parent 4ec21c2 commit d1d3c34

File tree

2 files changed

+17
-7
lines changed

2 files changed

+17
-7
lines changed

rclcpp_action/include/rclcpp_action/client.hpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -459,13 +459,6 @@ class Client : public ClientBase
459459
using GoalRequest = typename ActionT::Impl::SendGoalService::Request;
460460
auto goal_request = std::make_shared<GoalRequest>();
461461
goal_request->goal_id.uuid = this->generate_goal_id();
462-
if (!add_goal_uuid(goal_request->goal_id.uuid)) {
463-
RCLCPP_DEBUG(
464-
get_logger(),
465-
"failed to set content filtered topic for action subscriptions: %s",
466-
rcl_get_error_string().str);
467-
rcl_reset_error();
468-
}
469462
goal_request->goal = goal;
470463
this->send_goal_request(
471464
std::static_pointer_cast<void>(goal_request),

rclcpp_action/src/client.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,9 +304,26 @@ ClientBase::send_goal_request(std::shared_ptr<void> request, ResponseCallback ca
304304
{
305305
std::unique_lock<std::mutex> guard(pimpl_->goal_requests_mutex);
306306
int64_t sequence_number;
307+
// goal_id, which type is unique_identifier_msgs::msg::UUID,
308+
// is the first member in ActionT::Impl::SendGoalService::Request
309+
auto goal_id = std::static_pointer_cast<unique_identifier_msgs::msg::UUID>(request);
310+
if (!add_goal_uuid(goal_id->uuid)) {
311+
RCLCPP_DEBUG(
312+
get_logger(),
313+
"failed to add goal uuid for setting content filtered topic for action subscriptions: %s",
314+
rcl_get_error_string().str);
315+
rcl_reset_error();
316+
}
307317
rcl_ret_t ret = rcl_action_send_goal_request(
308318
pimpl_->client_handle.get(), request.get(), &sequence_number);
309319
if (RCL_RET_OK != ret) {
320+
if (!remove_goal_uuid(goal_id->uuid)) {
321+
RCLCPP_DEBUG(
322+
get_logger(),
323+
"failed to remove goal uuid: %s",
324+
rcl_get_error_string().str);
325+
rcl_reset_error();
326+
}
310327
rclcpp::exceptions::throw_from_rcl_error(ret, "failed to send goal request");
311328
}
312329
assert(pimpl_->pending_goal_responses.count(sequence_number) == 0);

0 commit comments

Comments
 (0)