A recurring theme in discussions on various JIRAs concerns how to handle various version upgrade or interop issues. In the interest of finding a consistent approach to these sorts of issues, I'm a creating this JIRA so we can collect the issues.
I'll start the process with one example issue. Please add others.
1) If an MQTT 3.1.1 client creates a 'persistent session' (CleanSession=0) on a server, and later re-connects to the session using MQTT 5.0, what problems may result? Should the session be preserved, or destroyed? The reverse is also interesting: if the session is established with MQTT 5.0, and a subsequent connection is made using MQTT 3.1.1, is the session still valid and usable?
2). If an end-to-end path (client-server-client) consists of mixed protocol versions, do any end-to-end operations break? For example, suppose an MQTT 5.0 client sends a request/reply message to a client which is running MQTT 3.1 or MQTT 3.1.1. ? What happens? (This request/reply message contains a reply topic, correlation id, time-to-live field etc. which are not available in MQTT 3.1.1). The general question is if something breaks, what should be the strategy to handle it (and similar problems)