Unique client id and fix graceful shutdown

This commit is contained in:
Daniel Pupius
2025-05-04 13:26:13 -07:00
parent 3ce8889786
commit df7df6dbd6
3 changed files with 16 additions and 11 deletions

View File

@@ -72,8 +72,8 @@ func parseConfig() *Config {
flag.StringVar(&config.MQTTBroker, "mqtt-broker", getEnv("MQTT_BROKER", "mqtt.bayme.sh"), "MQTT broker address") flag.StringVar(&config.MQTTBroker, "mqtt-broker", getEnv("MQTT_BROKER", "mqtt.bayme.sh"), "MQTT broker address")
flag.StringVar(&config.MQTTUsername, "mqtt-username", getEnv("MQTT_USERNAME", "meshdev"), "MQTT username") flag.StringVar(&config.MQTTUsername, "mqtt-username", getEnv("MQTT_USERNAME", "meshdev"), "MQTT username")
flag.StringVar(&config.MQTTPassword, "mqtt-password", getEnv("MQTT_PASSWORD", "large4cats"), "MQTT password") flag.StringVar(&config.MQTTPassword, "mqtt-password", getEnv("MQTT_PASSWORD", "large4cats"), "MQTT password")
flag.StringVar(&config.MQTTTopicPrefix, "mqtt-topic-prefix", getEnv("MQTT_TOPIC_PREFIX", "msh/US/CA/Motherlode"), "MQTT topic prefix") flag.StringVar(&config.MQTTTopicPrefix, "mqtt-topic-prefix", getEnv("MQTT_TOPIC_PREFIX", "msh/US/bayarea"), "MQTT topic prefix")
flag.StringVar(&config.MQTTClientID, "mqtt-client-id", getEnv("MQTT_CLIENT_ID", "meshstream-client"), "MQTT client ID") flag.StringVar(&config.MQTTClientID, "mqtt-client-id", getEnv("MQTT_CLIENT_ID", "meshstream"), "MQTT client ID")
// MQTT connection tuning parameters // MQTT connection tuning parameters
flag.IntVar(&config.MQTTKeepAlive, "mqtt-keepalive", intFromEnv("MQTT_KEEPALIVE", 60), "MQTT keep alive interval in seconds") flag.IntVar(&config.MQTTKeepAlive, "mqtt-keepalive", intFromEnv("MQTT_KEEPALIVE", 60), "MQTT keep alive interval in seconds")
@@ -98,14 +98,15 @@ func parseConfig() *Config {
flag.IntVar(&config.CacheSize, "cache-size", intFromEnv("CACHE_SIZE", 50), "Number of packets to cache for new subscribers") flag.IntVar(&config.CacheSize, "cache-size", intFromEnv("CACHE_SIZE", 50), "Number of packets to cache for new subscribers")
flag.BoolVar(&config.VerboseLogging, "verbose", boolFromEnv("VERBOSE_LOGGING", false), "Enable verbose message logging") flag.BoolVar(&config.VerboseLogging, "verbose", boolFromEnv("VERBOSE_LOGGING", false), "Enable verbose message logging")
// Parse flags
flag.Parse() flag.Parse()
// Process channel keys from the command line
if *channelKeysFlag != "" { if *channelKeysFlag != "" {
config.ChannelKeys = strings.Split(*channelKeysFlag, ",") config.ChannelKeys = strings.Split(*channelKeysFlag, ",")
} }
// Unique client ID for this process.
config.MQTTClientID = fmt.Sprintf("%s-%d-%d", config.MQTTClientID, os.Getpid(), time.Now().Unix())
return config return config
} }

View File

@@ -14,6 +14,7 @@ if [ -f .env ]; then
value=$(echo "$value" | sed -E 's/^"(.*)"$/\1/' | sed -E "s/^'(.*)'$/\1/") value=$(echo "$value" | sed -E 's/^"(.*)"$/\1/' | sed -E "s/^'(.*)'$/\1/")
# Export the variable preserving spaces in the value # Export the variable preserving spaces in the value
export "$key=$value" export "$key=$value"
echo "$key=$value"
done < .env done < .env
else else
echo "Warning: .env file not found. Using default environment variables." echo "Warning: .env file not found. Using default environment variables."

View File

@@ -96,15 +96,18 @@ func (s *Server) Start() error {
// Stop shuts down the server // Stop shuts down the server
func (s *Server) Stop() error { func (s *Server) Stop() error {
// Set the shutdown flag first to prevent new connections from starting streams if !s.isShuttingDown.Load() {
s.isShuttingDown.Store(true) s.logger.Info("Stopping server...")
// Set the shutdown flag first to prevent new connections from starting streams
s.isShuttingDown.Store(true)
// Signal all active connections to close // Signal all active connections to close
close(s.shutdown) close(s.shutdown)
// Then shut down the HTTP server // Then shut down the HTTP server
if s.server != nil { if s.server != nil {
return s.server.Shutdown() return s.server.Shutdown()
}
} }
return nil return nil
} }