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

Further MQTT streaming hardening #1327

Merged
merged 6 commits into from
Nov 16, 2018
Merged

Further MQTT streaming hardening #1327

merged 6 commits into from
Nov 16, 2018

Commits on Nov 13, 2018

  1. Corrected misinterpretation of behaviour setup

    I had thought that Behaviors.setup would only get called once for an actor. This is not the case - it is called each time a behaviour is transitioned to.
    
    There was only one place where my misunderstanding mattered, which was where a promise could be tried to be completed multiple times.
    huntc committed Nov 13, 2018
    Configuration menu
    Copy the full SHA
    2e4fcb9 View commit details
    Browse the repository at this point in the history
  2. Avoid a race condition when creating child actors

    We observed an `InvalidActorNameException` when creating child actors. This could have been due to the following sequence when receiving a “Publish Received Locally” message:
    
    1. prl received, producer actor created
    2. producer actor terminates and sends a termination message
    3. prl received before termination message is received, the parent actor creates another producer
    4. the termination message is received and then attempts to create another producer with the same name
    
    The solution is to explicitly track active consumers and producers rather than rely on another data structure such as `context.children`, which will be updated in response to other events.
    huntc committed Nov 13, 2018
    Configuration menu
    Copy the full SHA
    7b8763e View commit details
    Browse the repository at this point in the history
  3. Handle a duplicate publish while consuming

    Duplicate publish events received from a remote were previously stashed until any existing handling was complete. This commit changes that so that they are routed and handled.
    
    The commit also tightens up some exception handling around benign exceptions that the developer should not need to consider.
    huntc committed Nov 13, 2018
    Configuration menu
    Copy the full SHA
    ba072d2 View commit details
    Browse the repository at this point in the history

Commits on Nov 14, 2018

  1. Miscellaneous PR feedback

    In particular, actor names need to avoid the sequence number of an actor conflicting with MQTT topic names.
    huntc committed Nov 14, 2018
    Configuration menu
    Copy the full SHA
    861d3c6 View commit details
    Browse the repository at this point in the history

Commits on Nov 15, 2018

  1. Connection packet id distinction

    Packet ids were previously not distinguished according to their connection. This caused a problem when there was more than one client issuing the same packet ids!
    
    This commit addresses the problem by permitting the routing of remotely received packet ids by connection id and client id.
    huntc committed Nov 15, 2018
    Configuration menu
    Copy the full SHA
    6da7a7a View commit details
    Browse the repository at this point in the history

Commits on Nov 16, 2018

  1. Reinstate the topic filtering

    Accidentally removed topic filtering from a previous commit. This could cause unexpected behaviour given that every publish would be broadcast to all topics.
    huntc committed Nov 16, 2018
    Configuration menu
    Copy the full SHA
    d550f75 View commit details
    Browse the repository at this point in the history