You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In our setup multiple nodes publish ti a topic events of type std_msgs/String, all of them with durability VOLATILE.
Using roslibjs we create a topic object:
[rosbridge_websocket-1] [WARN] [1707742684.795099630] [rosbridge_websocket]: New publisher discovered on topic '/fsm/events', offering incompatible QoS. No messages will be received from it. Last incompatible policy: DURABILITY
This appears to be caused when creating a publisher first and then a subscription, the publisher is always created as transient local and the subscription inherits that property.
The publisher QoS should match the ones of the already existing QoS for a topic or should be able to be changed via the client. In addition subscription QoS should also be able to be specified
Actual Behavior
A subscriber with incompatible QoS is created
The text was updated successfully, but these errors were encountered:
We are having issues with this as well. In our particular case we are making subscriptions from roslibjs. When the subscription is made from roslibjs before the rosbridge_server process sees the associated publisher, we end up with this QoS mismatch compatibility issue.
I haven't begun looking into the technical side at all yet, but conceptually I was thinking along the lines of 2 possible solutions:
Add some sort of flag or paramter on the rosbridge_server to tell it to only create subscriptions/publishers lazily once it has seen another participant from which it can gleam the QoS (to keep this simple it would only do this the first time, and would not destroy or recreate those objects if the other side goes away and comes back, although it could be extended to do that in the future).
Add explicit QoS settings to roslibjs as well as rosbridge_server. This one seems seems more complicated being as it would probably impact multiple projects... i haven't looked into the technical feasibility of this at all. (seems related: Adding QoS to Publisher #887)
Are there any other options that I may be overlooking? I would appreciate any leading guidance that anyone has to offer before we jump right into this.
Description
In our setup multiple nodes publish ti a topic
events
of typestd_msgs/String
, all of them with durabilityVOLATILE
.Using roslibjs we create a topic object:
When calling
The following warning is printed:
This appears to be caused when creating a publisher first and then a subscription, the publisher is always created as transient local and the subscription inherits that property.
rosbridge_suite/rosbridge_library/src/rosbridge_library/internal/publishers.py
Lines 105 to 109 in 77d48c0
rosbridge_suite/rosbridge_library/src/rosbridge_library/internal/subscribers.py
Lines 118 to 122 in 77d48c0
Steps To Reproduce
volatile pub sub
default roslibjs
Then create three terminals and run in the following order:
Expected Behavior
The publisher
QoS
should match the ones of the already existingQoS
for a topic or should be able to be changed via the client. In addition subscriptionQoS
should also be able to be specifiedActual Behavior
A subscriber with incompatible
QoS
is createdThe text was updated successfully, but these errors were encountered: