Details

    • Type: New Feature
    • Status: Closed
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 5
    • Fix Version/s: 5, wd07
    • Component/s: core
    • Labels:
      None
    • Proposal:
      Hide

      Section 3.8.3

      Bit 2 of the requested QoS byte of the SUBSCRIBE packet is used to indicate whether or not the subscription is noLocal. If the bit is 1, PUBLISH packets must not be sent to the originating Client ID. A noLocal subscribe request is an error if it is applied to a shared subscription; the SUBACK response will contain the appropriate error code.

      Show
      Section 3.8.3 Bit 2 of the requested QoS byte of the SUBSCRIBE packet is used to indicate whether or not the subscription is noLocal. If the bit is 1, PUBLISH packets must not be sent to the originating Client ID. A noLocal subscribe request is an error if it is applied to a shared subscription; the SUBACK response will contain the appropriate error code.

      Description

      Based on a query in MQTT Google group, a query was posted with a requirement that the server should not publish message to a subscriber if messages are published by the same client-id and subscribed by the using the same client-id for the same topic. In this case a client connection may both publish and subscribe to a topic and the subscriber should inhibit the delivery of messages published by its own connection. This feature is available in JMS and a subscriber can inhibit to receive publication by using the noLocal flag during subscription.

      This feature is also needed to enable bridging and making proxy subscription between servers so as to stop messages going round in loops.

      I would like propose to add a element in SUBSCRIBE Control packet for individual subscriptions to make a choice on noLocal parameter. This field could be shared in the same byte as for requstedQos.

        Attachments

          Activity

          Hide
          ragupta2 Rahul Gupta (Inactive) added a comment -

          Shared Subscription (MQTT-234) was introduced and discussed in the face to face meeting in April 2016. The proposals on shared subscription include that the MQTT server owns the shared subscription and it is not owned by any one session. This means that there could be situations where one of the client session which could be part of Shared subscription chose to say I am not interested in noLocal and the second client session in same shared subscription could suggest that its interested in noLocal. This could be a tricky situation for the MQTT server to handle and understand if the message originating from one of the sessions in the same group should be delivered to any one of the client in that group. I did a little more reading on how JMS 2.0 handled this situation.

          https://java.net/jira/browse/JMS_SPEC-40

          "The JMS 2.0 expert group has agreed that the noLocal parameter serves no useful purpose for shared subscriptions (both durable and non-durable) and should be removed."

          Not suggesting that we should think in similar lines, but it will be worth to understand complexities which will be introduced with the combination of noLocal and shared subscription use cases.

          Show
          ragupta2 Rahul Gupta (Inactive) added a comment - Shared Subscription ( MQTT-234 ) was introduced and discussed in the face to face meeting in April 2016. The proposals on shared subscription include that the MQTT server owns the shared subscription and it is not owned by any one session. This means that there could be situations where one of the client session which could be part of Shared subscription chose to say I am not interested in noLocal and the second client session in same shared subscription could suggest that its interested in noLocal. This could be a tricky situation for the MQTT server to handle and understand if the message originating from one of the sessions in the same group should be delivered to any one of the client in that group. I did a little more reading on how JMS 2.0 handled this situation. https://java.net/jira/browse/JMS_SPEC-40 "The JMS 2.0 expert group has agreed that the noLocal parameter serves no useful purpose for shared subscriptions (both durable and non-durable) and should be removed." Not suggesting that we should think in similar lines, but it will be worth to understand complexities which will be introduced with the combination of noLocal and shared subscription use cases.
          Hide
          icraggs Ian Craggs (Inactive) added a comment -

          I think that noLocal should not apply to shared subscriptions. If requested on a shared subscription it should result in an error on the subscribe.

          Show
          icraggs Ian Craggs (Inactive) added a comment - I think that noLocal should not apply to shared subscriptions. If requested on a shared subscription it should result in an error on the subscribe.
          Hide
          levell Jonathan Levell added a comment -

          TC agreed that if nolocal was requested on a shared subscription it should result in an error on the subscribe.

          Show
          levell Jonathan Levell added a comment - TC agreed that if nolocal was requested on a shared subscription it should result in an error on the subscribe.
          Hide
          levell Jonathan Levell added a comment -

          Apologies for my sloppy language in the previous comment. TC agreed that if nolocal was requested on a shared subscription it MUST result in an error being returned on the subscribe.

          Show
          levell Jonathan Levell added a comment - Apologies for my sloppy language in the previous comment. TC agreed that if nolocal was requested on a shared subscription it MUST result in an error being returned on the subscribe.
          Hide
          ken.borgendale Ken Borgendale (Inactive) added a comment -

          Issue included in MQTTv5.0 CS01 December 25, 2017

          Show
          ken.borgendale Ken Borgendale (Inactive) added a comment - Issue included in MQTTv5.0 CS01 December 25, 2017

            People

            • Assignee:
              ken.borgendale Ken Borgendale (Inactive)
              Reporter:
              ragupta2 Rahul Gupta (Inactive)
            • Watchers:
              9 Start watching this issue

              Dates

              • Due:
                Created:
                Updated:
                Resolved: