Service clients are currently created using persistent TCPROS connections only. That differs from the usual ROS1 behavior in roscpp and rospy, where non-persistent service calls are the default and persistent connections are an opt-in optimization.
Drawbacks of persistent connectoins
- persistent clients can become stale after server restarts or transport failures
- cached long-lived connections can make recovery harder than it could be
- the current behavior is less aligned with ROS1 behavior across client libraries
- callers that only need request/response semantics still pay the complexity cost of connection lifecycle management
Scope
Add a non-persistent service caller API that opens a fresh service connection for each call and closes it after the response or terminal failure.
Service clients are currently created using persistent TCPROS connections only. That differs from the usual ROS1 behavior in roscpp and rospy, where non-persistent service calls are the default and persistent connections are an opt-in optimization.
Drawbacks of persistent connectoins
Scope
Add a non-persistent service caller API that opens a fresh service connection for each call and closes it after the response or terminal failure.