mirror of
https://github.com/dolthub/dolt.git
synced 2026-04-24 03:16:12 -05:00
cmd/dolt/commands/sqlserver: Restructure the start up sequence for sql-server.
We explicitly model Services, which can have an Init step, a Run step and a Stop step. Every registered service get initialized in the order they were registered in, then they all run concurrently until Stop is called, when they all get Stopped in reverse order. It's possible for clients to wait for init to be completed and be delivered any errors encountered on startup. They can also wait for stop, to be delivered any errors encountered on shutdown.
This commit is contained in:
@@ -31,6 +31,7 @@ import (
|
||||
"github.com/dolthub/dolt/go/libraries/doltcore/doltdb"
|
||||
"github.com/dolthub/dolt/go/libraries/doltcore/env"
|
||||
"github.com/dolthub/dolt/go/libraries/utils/filesys"
|
||||
"github.com/dolthub/dolt/go/libraries/utils/svcs"
|
||||
"github.com/dolthub/dolt/go/store/types"
|
||||
)
|
||||
|
||||
@@ -175,13 +176,13 @@ func getProfFile(b *testing.B) *os.File {
|
||||
}
|
||||
|
||||
func executeServerQueries(ctx context.Context, b *testing.B, dEnv *env.DoltEnv, cfg srv.ServerConfig, queries []query) {
|
||||
serverController := srv.NewServerController()
|
||||
sc := svcs.NewController()
|
||||
|
||||
eg, ctx := errgroup.WithContext(ctx)
|
||||
|
||||
//b.Logf("Starting server with Config %v\n", srv.ConfigInfo(cfg))
|
||||
eg.Go(func() (err error) {
|
||||
startErr, closeErr := srv.Serve(ctx, "", cfg, serverController, dEnv)
|
||||
startErr, closeErr := srv.Serve(ctx, "", cfg, sc, dEnv)
|
||||
if startErr != nil {
|
||||
return startErr
|
||||
}
|
||||
@@ -190,7 +191,7 @@ func executeServerQueries(ctx context.Context, b *testing.B, dEnv *env.DoltEnv,
|
||||
}
|
||||
return nil
|
||||
})
|
||||
if err := serverController.WaitForStart(); err != nil {
|
||||
if err := sc.WaitForStart(); err != nil {
|
||||
b.Fatal(err)
|
||||
}
|
||||
|
||||
@@ -200,8 +201,8 @@ func executeServerQueries(ctx context.Context, b *testing.B, dEnv *env.DoltEnv,
|
||||
}
|
||||
}
|
||||
|
||||
serverController.StopServer()
|
||||
if err := serverController.WaitForClose(); err != nil {
|
||||
sc.Stop()
|
||||
if err := sc.WaitForStop(); err != nil {
|
||||
b.Fatal(err)
|
||||
}
|
||||
if err := eg.Wait(); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user