Skip to content
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

If persistence is true on RSMB a MQTT-SN client don't receive messages published before its connection #11

Open
ralight opened this issue Mar 15, 2016 · 0 comments
Labels

Comments

@ralight
Copy link
Contributor

ralight commented Mar 15, 2016

migrated from Bugzilla #430828
status ASSIGNED severity normal in component RSMB for ---
Reported in version unspecified on platform PC
Assigned to: Ian Craggs

Original attachment names and IDs:

On 2014-03-20 15:17:57 -0400, Daniel Nascimento wrote:

Steps to reproduce:
1- Connect if a MQTT-SN client in a qos=1 topic
2- Shutdown RSMB with persistence true
3- Start RSMB with persistence true
4- Publish some messages in that topic that the client was connected
5- Reconnect the client

The client won't receive that messages published to it when it reconnects.

On 2014-03-20 15:19:53 -0400, Daniel Nascimento wrote:

Created attachment 241069
This patch includes fixes for all bugs related to this feature

Include fixes to:

430788

430737

430733

On 2014-03-20 18:11:14 -0400, Ian Craggs wrote:

This is true. And working as originally intended, for which you can blame Andy Stanford-Clark and Dave Conway-Jones who insisted that persistence was not necessary for a small edge of network server! I only included functions that were asked for.

Thanks for the patch. I'll be interested to see what approach you've taken - when the messages are saved. Other persistence data is only saved periodically to disk (autosave) and at shutdown.

On 2014-03-20 18:39:18 -0400, Daniel Nascimento wrote:

For now I'm working in keep the MQTT-SN on a par with MQTT implementation. I'm using RSMB as a MQTT-SN gateway to comunicate with a ActiveMQ server. So I not implemented messages persistence yet, I'm just using the subscribe persistence already implemented.

Since RSMB deliver Ack's to ActiveMQ I'll need to persist messages to grant that messages will not be lost. So I the next days i'll do it.

I'm planning to persist only the messages that will be queued, and probably I'll use sqlite for this. If you think in a another aproach if grather chance to go upstream I'm interested in listen so it can driven my development.

On 2014-03-20 20:54:29 -0400, Ian Craggs wrote:

Daniel, I'm very happy that you are using MQTT-SN in RSMB!

However, while I'm happy to fix bugs in the MQTT-SN implementation, I am hesitant to rush into to adding message persistence into RSMB. The notional plan I had in mind was to work with Roger to add MQTT-SN support into Mosquitto, which already has message persistence, rather than reimplement this function in RSMB.

The longer term goal is to have one implementation covering all the function we need. I realize Roger hasn't contributed the Mosquitto code to Eclipse yet, but that is going to happen soon.

I wouldn't want any persistence to require sqllite. Roger already moved away from that in Mosquitto. It's ok to have a pluggable persistence interface, and plug sqllite into that. My preferred solution (next to using Mosquitto) is to have a key-value pair persistence interface (like the Paho C client) into which various providers can be plugged.

Currently I've just started working on a C MQTT-SN client (http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt-sn.embedded-c.git/) - I would like to finish that first so I can use it for testing MQTT-SN in RSMB for one thing.

I hope we can find a way to work together to find the best solution for you.

On 2014-03-21 09:21:44 -0400, Daniel Nascimento wrote:

Created attachment 241099
Last patch don't deliver all messages if queued messages > max_inflight_messages

If a client has more queued messages than the max_inflight_massages value, messages are not delivered.

This patch change retry method to choose the right queue to look for not delivered messages.

On 2014-03-21 09:41:48 -0400, Daniel Nascimento wrote:

It's not clear to me if the RSMB project will be deprecated in favour of a future version of mosquitto, implementing MQTT-SN. If that is the case, IMHO, the better approach is just to fix bugs on RSMB and keep all new features for mosquitto.

So I'm not sure if the persistence code that I'll wrote will be desirable for RSMB project (I'll base it in the Paho C client implementation that you suggested, thanks).

For testing RSMB I'm using a modified version of mqtt_sn_tools that work like mosquitto_sub/mosquitto_pub, so I can compare the RSMB behaviour with MQTT and MQTT-SN.

@ralight ralight added the bug label Mar 15, 2016
jlam732 pushed a commit to bluerover/rsmb that referenced this issue Jul 21, 2016
jlam732 pushed a commit to bluerover/rsmb that referenced this issue Jul 21, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant