go/cmd/dolt/commands/sqlserver: server.go: Lock the multienv repo before we init the sql server.

This commit is contained in:
Aaron Son
2023-11-15 10:29:07 -08:00
parent 58bd173904
commit a9ea25e32c

View File

@@ -258,49 +258,20 @@ func Serve(
}
controller.Register(InitSuperUser)
var listener *metricsListener
var metListener *metricsListener
InitMetricsListener := &svcs.Service{
Init: func(context.Context) (err error) {
labels := serverConfig.MetricsLabels()
listener, err = newMetricsListener(labels, version, clusterController)
metListener, err = newMetricsListener(labels, version, clusterController)
return err
},
Stop: func() error {
listener.Close()
metListener.Close()
return nil
},
}
controller.Register(InitMetricsListener)
var mySQLServer *server.Server
InitSQLServer := &svcs.Service{
Init: func(context.Context) (err error) {
v, ok := serverConfig.(validatingServerConfig)
if ok && v.goldenMysqlConnectionString() != "" {
mySQLServer, err = server.NewValidatingServer(
serverConf,
sqlEngine.GetUnderlyingEngine(),
newSessionBuilder(sqlEngine, serverConfig),
listener,
v.goldenMysqlConnectionString(),
)
} else {
mySQLServer, err = server.NewServer(
serverConf,
sqlEngine.GetUnderlyingEngine(),
newSessionBuilder(sqlEngine, serverConfig),
listener,
)
}
if errors.Is(err, server.UnixSocketInUseError) {
lgr.Warn("unix socket set up failed: file already in use: ", serverConf.Socket)
err = nil
}
return err
},
}
controller.Register(InitSQLServer)
LockMultiRepoEnv := &svcs.Service{
Init: func(context.Context) error {
if ok, f := mrEnv.IsLocked(); ok {
@@ -320,6 +291,35 @@ func Serve(
}
controller.Register(LockMultiRepoEnv)
var mySQLServer *server.Server
InitSQLServer := &svcs.Service{
Init: func(context.Context) (err error) {
v, ok := serverConfig.(validatingServerConfig)
if ok && v.goldenMysqlConnectionString() != "" {
mySQLServer, err = server.NewValidatingServer(
serverConf,
sqlEngine.GetUnderlyingEngine(),
newSessionBuilder(sqlEngine, serverConfig),
metListener,
v.goldenMysqlConnectionString(),
)
} else {
mySQLServer, err = server.NewServer(
serverConf,
sqlEngine.GetUnderlyingEngine(),
newSessionBuilder(sqlEngine, serverConfig),
metListener,
)
}
if errors.Is(err, server.UnixSocketInUseError) {
lgr.Warn("unix socket set up failed: file already in use: ", serverConf.Socket)
err = nil
}
return err
},
}
controller.Register(InitSQLServer)
InitLockSuperUser := &svcs.Service{
Init: func(context.Context) error {
mysqlDb := sqlEngine.GetUnderlyingEngine().Analyzer.Catalog.MySQLDb