Repository navigation
fix(mqtt): apply broker changes from the database seamlessly - #70
Merged
Merged
Conversation
Apply the Broker as it is in the database, one change per Broker at a time, so quick edits finish on the last one and a stale event cannot resurrect a deleted Broker. Decide whether to reconnect by comparing connection settings rather than changed attributes, which always included updated_at. Keep retrying until a publisher is connected with the current settings, and republish all state whenever the connection is rebuilt. Stop the manager mqtt_broker_manager_spec started, which took over the sessions of later specs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Specs driving real database changes through the changefeed showed three gaps:
updated_at, so no update counted as safeEvents are also processed concurrently, so two quick edits could finish out of order.
Fix
mqtt_broker_manager_specleft its manager running, which took over the sessions of later specs (the "stopped and will not reconnect" errors in the suite)Testing
New
spec/publishing/broker_changes_spec.cr: add, password change, rename, unreachable address that comes up later, resync on address change, quick successive edits, delete. Full suite natively: 86 examples, 1 failure (clear_spec, which fails the same way on master when run natively).🤖 Generated with Claude Code