-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
[CHANGED] MQTT no longer requires server name to be set #4679
Conversation
Signed-off-by: Lev Brouk <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thanks!
@@ -598,11 +597,6 @@ func validateMQTTOptions(o *Options) error { | |||
if mo.Port == 0 { | |||
return nil | |||
} | |||
// We have to force the server name to be explicitly set. There are conditions | |||
// where we need a unique, repeatable name. | |||
if o.ServerName == _EMPTY_ { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This might be ok for single server mode, but not clustered mode. In clustered mode this is required.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought @bruth's point was that a (unique?) name will be auto-defaulted, not? I don't see any direct references to it in the MQTT code.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Peer names, which need to be consistent, are a derived hash from server names. So in clustered mode this condition has to hold. So we need to check if we are in single server mode, or not using JetStream, although I thought it was required for MQTT.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
JS is required for MQTT; I am 0/5 if it makes any sense to remove the name requirement for single server only. @bruth?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is a js helper function to test if in single server mode.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's do same thing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I did, unfortunately it just checks that the run-time object is not nil, that it has initialized. This one, https://github.com/nats-io/nats-server/blob/main/server/jetstream_cluster.go#L724?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
// Determines if this server is in standalone mode, meaning no routes or gateways.
func (s *Server) standAloneMode() bool {
opts := s.getOpts()
return opts.Cluster.Port == 0 && opts.Gateway.Port == 0
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ah! thx!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@derekcollison Can you please confirm
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
It was required because it was required by JetStream, but JetStream now auto-generates a default name.