Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: core
    • Labels:
      None
    • Proposal:
      Hide

      replace text under 4.7.2 with:

      The Server MUST NOT match Topic Filters starting with a wildcard character (# or +) with Topic Names beginning with a $ character. The Server SHOULD prevent Clients from using such Topic Names to exchange messages with other Clients. Server implementations MAY use Topic Names that start with a leading $ character for other purposes.

      remove 4.7.2.1, retaining the non-normative comments from both sections.

      Show
      replace text under 4.7.2 with: The Server MUST NOT match Topic Filters starting with a wildcard character (# or +) with Topic Names beginning with a $ character. The Server SHOULD prevent Clients from using such Topic Names to exchange messages with other Clients. Server implementations MAY use Topic Names that start with a leading $ character for other purposes. remove 4.7.2.1, retaining the non-normative comments from both sections.
    • Resolution:
      Hide

      Resolved in WD23

      Show
      Resolved in WD23

      Description

      Section 4.7.2.1 of wd-20 states;
      A Topic Filter that starts with a wildcard character (# or +) does not match Topic Names that begin with a $ character

      This appears to be a normative statement regarding server behaviour without any accompanying normative language.
      While server implementations may choose whether or not to implement predefined $topics I thought we explicitly did want separate all topics starting with $ from the rest of the topic space.

        Attachments

          Activity

          Hide
          peterniblett Peter Niblett (Inactive) added a comment -

          We discussed this extensively in MQTT-16. My understanding is the same as Al's, namely we decided that a topic name with a leading $ is never matched by a topic filter with a leading + or #, regardless of whether the server has defined any $xxx topics or not.

          I think the reason it doesn't have a MUST in it was simply to make it look better as an English statement. However we need to clarify this as the fact that Section 4.2.7 starts off with a MAY and this statement is included in an apparently subordinate 4.2.7.1 makes it look as if it might only apply in cases where the server has defined $xxx topics.

          Incidentally this shows one of the problems of "hanging paragraphs" (see mqtt-142). If the bit saying the server MAY define $xxx was in 4.2.7.1 and the bit about subscription matching was in 4.2.7.2 then it would be more obvious that they are independent

          Show
          peterniblett Peter Niblett (Inactive) added a comment - We discussed this extensively in MQTT-16 . My understanding is the same as Al's, namely we decided that a topic name with a leading $ is never matched by a topic filter with a leading + or #, regardless of whether the server has defined any $xxx topics or not. I think the reason it doesn't have a MUST in it was simply to make it look better as an English statement. However we need to clarify this as the fact that Section 4.2.7 starts off with a MAY and this statement is included in an apparently subordinate 4.2.7.1 makes it look as if it might only apply in cases where the server has defined $xxx topics. Incidentally this shows one of the problems of "hanging paragraphs" (see mqtt-142). If the bit saying the server MAY define $xxx was in 4.2.7.1 and the bit about subscription matching was in 4.2.7.2 then it would be more obvious that they are independent
          Hide
          ken.borgendale Ken Borgendale (Inactive) added a comment -

          I certainly was one of those who read the text in the subordinate section as being under the MAY in the superior section. I agree that the text as it exists is a bit confusing.

          The significant problem in defining this as a MUST is dealing with the MQTT version. An MQTT connection has a version, but topic matching involves multiple connections: a publishing connection, a connection which creates a subscription, and a connection which consumes from a subscription. These could be at differing MQTT versions. If we agree that the normative language here is confined to cases where the involved connections are all at V3.1.1 then making this a strict rule is OK. This is one of the few cases where conformance deals with multiple connections and therefore multiple possible versions.

          My preference is to say that an MQTT Server MAY define topics starting with $, and SHOULD NOT match such defined topics with a leading wildcard. This would allow us to continue the current $SYS rules for V3.1 and honor the $ rule for V3.1.1. The alternative is to define mixtures of connection versions as being outside the scope of this spec.

          Show
          ken.borgendale Ken Borgendale (Inactive) added a comment - I certainly was one of those who read the text in the subordinate section as being under the MAY in the superior section. I agree that the text as it exists is a bit confusing. The significant problem in defining this as a MUST is dealing with the MQTT version. An MQTT connection has a version, but topic matching involves multiple connections: a publishing connection, a connection which creates a subscription, and a connection which consumes from a subscription. These could be at differing MQTT versions. If we agree that the normative language here is confined to cases where the involved connections are all at V3.1.1 then making this a strict rule is OK. This is one of the few cases where conformance deals with multiple connections and therefore multiple possible versions. My preference is to say that an MQTT Server MAY define topics starting with $, and SHOULD NOT match such defined topics with a leading wildcard. This would allow us to continue the current $SYS rules for V3.1 and honor the $ rule for V3.1.1. The alternative is to define mixtures of connection versions as being outside the scope of this spec.
          Hide
          coppen Richard Coppen (Inactive) added a comment -

          TC approve Jira proposal TC call 27.03.2014

          Show
          coppen Richard Coppen (Inactive) added a comment - TC approve Jira proposal TC call 27.03.2014

            People

            • Assignee:
              andrew_banks Andrew Banks (Inactive)
              Reporter:
              al.s-m Allan Stockdill-Mander (Inactive)
            • Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: