Dont start console service if MINIO_BROWSER=off (#20374)

By default, even if MINIO_BROWSER=off set code tries to get free
port available for the console. 

Signed-off-by: Shubhendu Ram Tripathi <shubhendu@minio.io>
This commit is contained in:
Shubhendu 2024-09-04 22:32:39 +05:30 committed by GitHub
parent 9b79eec29e
commit 6224849fd1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 33 additions and 20 deletions

View File

@ -461,25 +461,27 @@ func handleCommonArgs(ctxt serverCtxt) {
certsDir := ctxt.CertsDir certsDir := ctxt.CertsDir
certsSet := ctxt.certsDirSet certsSet := ctxt.certsDirSet
if consoleAddr == "" { if globalBrowserEnabled {
p, err := xnet.GetFreePort() if consoleAddr == "" {
if err != nil { p, err := xnet.GetFreePort()
logger.FatalIf(err, "Unable to get free port for Console UI on the host") if err != nil {
logger.FatalIf(err, "Unable to get free port for Console UI on the host")
}
// hold the port
l, err := net.Listen("TCP", fmt.Sprintf(":%s", p.String()))
if err == nil {
defer l.Close()
}
consoleAddr = net.JoinHostPort("", p.String())
} }
// hold the port
l, err := net.Listen("TCP", fmt.Sprintf(":%s", p.String())) if _, _, err := net.SplitHostPort(consoleAddr); err != nil {
if err == nil { logger.FatalIf(err, "Unable to start listening on console port")
defer l.Close()
} }
consoleAddr = net.JoinHostPort("", p.String())
}
if _, _, err := net.SplitHostPort(consoleAddr); err != nil { if consoleAddr == addr {
logger.FatalIf(err, "Unable to start listening on console port") logger.FatalIf(errors.New("--console-address cannot be same as --address"), "Unable to start the server")
} }
if consoleAddr == addr {
logger.FatalIf(errors.New("--console-address cannot be same as --address"), "Unable to start the server")
} }
globalMinioHost, globalMinioPort = mustSplitHostPort(addr) globalMinioHost, globalMinioPort = mustSplitHostPort(addr)
@ -492,7 +494,9 @@ func handleCommonArgs(ctxt serverCtxt) {
globalDynamicAPIPort = true globalDynamicAPIPort = true
} }
globalMinioConsoleHost, globalMinioConsolePort = mustSplitHostPort(consoleAddr) if globalBrowserEnabled {
globalMinioConsoleHost, globalMinioConsolePort = mustSplitHostPort(consoleAddr)
}
if globalMinioPort == globalMinioConsolePort { if globalMinioPort == globalMinioConsolePort {
logger.FatalIf(errors.New("--console-address port cannot be same as --address port"), "Unable to start the server") logger.FatalIf(errors.New("--console-address port cannot be same as --address port"), "Unable to start the server")
@ -696,12 +700,16 @@ func loadEnvVarsFromFiles() {
} }
} }
func serverHandleEnvVars() { func serverHandleEarlyEnvVars() {
var err error var err error
globalBrowserEnabled, err = config.ParseBool(env.Get(config.EnvBrowser, config.EnableOn)) globalBrowserEnabled, err = config.ParseBool(env.Get(config.EnvBrowser, config.EnableOn))
if err != nil { if err != nil {
logger.Fatal(config.ErrInvalidBrowserValue(err), "Invalid MINIO_BROWSER value in environment variable") logger.Fatal(config.ErrInvalidBrowserValue(err), "Invalid MINIO_BROWSER value in environment variable")
} }
}
func serverHandleEnvVars() {
var err error
if globalBrowserEnabled { if globalBrowserEnabled {
if redirectURL := env.Get(config.EnvBrowserRedirectURL, ""); redirectURL != "" { if redirectURL := env.Get(config.EnvBrowserRedirectURL, ""); redirectURL != "" {
u, err := xnet.ParseHTTPURL(redirectURL) u, err := xnet.ParseHTTPURL(redirectURL)

View File

@ -773,6 +773,9 @@ func serverMain(ctx *cli.Context) {
// Always load ENV variables from files first. // Always load ENV variables from files first.
loadEnvVarsFromFiles() loadEnvVarsFromFiles()
// Handle early server environment vars
serverHandleEarlyEnvVars()
// Handle all server command args and build the disks layout // Handle all server command args and build the disks layout
bootstrapTrace("serverHandleCmdArgs", func() { bootstrapTrace("serverHandleCmdArgs", func() {
err := buildServerCtxt(ctx, &globalServerCtxt) err := buildServerCtxt(ctx, &globalServerCtxt)

View File

@ -81,8 +81,10 @@ func handleSignals() {
shutdownLogIf(context.Background(), objAPI.Shutdown(context.Background())) shutdownLogIf(context.Background(), objAPI.Shutdown(context.Background()))
} }
if srv := newConsoleServerFn(); srv != nil { if globalBrowserEnabled {
shutdownLogIf(context.Background(), srv.Shutdown()) if srv := newConsoleServerFn(); srv != nil {
shutdownLogIf(context.Background(), srv.Shutdown())
}
} }
if globalEventNotifier != nil { if globalEventNotifier != nil {