-
Notifications
You must be signed in to change notification settings - Fork 59
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
[Bug] QoS incompatibility issue New publisher discovered on topic '/bot/firmware/drive_state/front', offering incompatible QoS. No messages will be sent to it. Last incompatible policy: RELIABILITY_QOS_POLICY #154
Comments
To recreate the issue please run this following script:
|
Hi @nazmicancalik, You correctly analyzed the problem: A solution could be the one proposed by @Fellfalla in #155 (thanks for this!): delete the Reader or Writer, and re-create it with "upgraded" QoS. But I see several drawbacks to this approach:
The other solution I'm considering is to add the possibility to configure the QoS to be used by the bridge for certain topics in its JSON5 config file. Those configured QoS would override the discovered ones. Do you think this is a suitable solution for your use case ? |
Hi @JEnoch thank you for your feedback and thoughts 🙂! To answer your general question: overwriting QoS from the config is definitely a good and clean solution to us. However, it requires more thorough attention to all the existing and new sub QoSes and thus is a bit less convenient. Thus, maybe a few thoughts on your valid points:
Looking forward to hear back from you! |
That's correct.
Right, but in a pure ROS2 system the best-effort Publisher to best-effort Subscriber will still occur. |
After reflexion, I think wrt. RELIABLE QoS it would make sense for the bridge to always create a RELIABLE Writer, whatever the discovered QoS. Thus it's always matching any future Readers, whatever their reliability QoS. I created #165 and eclipse-zenoh/zenoh-plugin-ros2dds#23 to track this, and that will fix this issue. For other QoS I still think "on-the-fly" adaptation via deletion/re-creation of the Writer might cause troubles, starting with loss of messages for instance in the case a RELIABLE+VOLATILE Writer has to be upgraded to RELIABLE+TRANSIENT_LOCAL. For this, the possibility for the user to configure the QoS used by the bridge per-topic (or per-group of topics via regex) is a better solution, as more flexible and allowing fine tuning for other purposes than QoS matching issues. |
@Fellfalla , now that #165 and eclipse-zenoh/zenoh-plugin-ros2dds#23 have been fixed, could you please check if that solves your issue (with either |
Describe the bug
Zenoh peers have qos incompatibility issue when there are 2 different Ros QoS subscribers. Consider the following situation:
In the ROS2 Code: There is a Reliable Publisher and 1 Reliable and 1 Best Effort Subscriber to the same topic. To our understanding, sometimes (when zenoh discovers the Best Effort Subscriber DDS first rather than the Reliable one) it gives the following error:
New publisher discovered on topic '/bot/firmware/drive_state/front', offering incompatible QoS. No messages will be sent to it. Last incompatible policy: RELIABILITY_QOS_POLICY
In the zenoh source we have found a TODO that it says check the qos that is existing for a qos and do not create an incompatible one if you receive a new discovery.
Do you have any ideas if this is related or why this problem might occur?
To reproduce
System info
Platform: Ubuntu 22.04.2.LTS 64 bit
Processor: AMD® Ryzen 9 5900hx with radeon graphics × 16
Zenoh-bridge-dds version: zenoh bridge for DDS v0.7.2-rc built with rustc 1.70.0 (90c541806 2023-05-31)
The text was updated successfully, but these errors were encountered: