Skip to content

Commit

Permalink
go: sqlserver: Clean up how remotesrv gets a handle to the mrEnv.File…
Browse files Browse the repository at this point in the history
…System, remove the confusing indirection through ctxFactory.
  • Loading branch information
reltuk committed Jan 31, 2025
1 parent eed637b commit d3b9e44
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 13 deletions.
7 changes: 7 additions & 0 deletions go/cmd/dolt/commands/engine/sqlengine.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ import (
"github.com/dolthub/dolt/go/libraries/doltcore/sqle/statspro"
"github.com/dolthub/dolt/go/libraries/doltcore/sqle/writer"
"github.com/dolthub/dolt/go/libraries/utils/config"
"github.com/dolthub/dolt/go/libraries/utils/filesys"
)

// SqlEngine packages up the context necessary to run sql queries against dsqle.
Expand All @@ -55,6 +56,7 @@ type SqlEngine struct {
contextFactory contextFactory
dsessFactory sessionFactory
engine *gms.Engine
fs filesys.Filesys
}

type sessionFactory func(mysqlSess *sql.BaseSession, pro sql.DatabaseProvider) (*dsess.DoltSession, error)
Expand Down Expand Up @@ -194,6 +196,7 @@ func NewSqlEngine(
sqlEngine.contextFactory = sqlContextFactory()
sqlEngine.dsessFactory = sessFactory
sqlEngine.engine = engine
sqlEngine.fs = pro.FileSystem()

// configuring stats depends on sessionBuilder
// sessionBuilder needs ref to statsProv
Expand Down Expand Up @@ -314,6 +317,10 @@ func (se *SqlEngine) GetUnderlyingEngine() *gms.Engine {
return se.engine
}

func (se *SqlEngine) FileSystem() filesys.Filesys {
return se.fs
}

func (se *SqlEngine) Close() error {
if se.engine != nil {
if se.engine.Analyzer.Catalog.BinlogReplicaController != nil {
Expand Down
4 changes: 3 additions & 1 deletion go/cmd/dolt/commands/sqlserver/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -567,7 +567,8 @@ func ConfigureServices(
ConcurrencyControl: remotesapi.PushConcurrencyControl_PUSH_CONCURRENCY_CONTROL_ASSERT_WORKING_SET,
}
var err error
args.FS, args.DBCache, err = sqle.RemoteSrvFSAndDBCache(sqlEngine.NewDefaultContext, sqle.DoNotCreateUnknownDatabases)
args.FS = sqlEngine.FileSystem()
args.DBCache, err = sqle.RemoteSrvDBCache(sqlEngine.NewDefaultContext, sqle.DoNotCreateUnknownDatabases)
if err != nil {
lgr.Errorf("error creating SQL engine context for remotesapi server: %v", err)
return err
Expand Down Expand Up @@ -621,6 +622,7 @@ func ConfigureServices(
lgr.Errorf("error creating SQL engine context for remotesapi server: %v", err)
return err
}
args.FS = sqlEngine.FileSystem()

clusterRemoteSrvTLSConfig, err := LoadClusterTLSConfig(serverConfig.ClusterConfig())
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion go/libraries/doltcore/sqle/cluster/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -690,7 +690,7 @@ func (c *Controller) RemoteSrvServerArgs(ctxFactory func(context.Context) (*sql.
args.GrpcListenAddr = listenaddr
args.Options = c.ServerOptions()
var err error
args.FS, args.DBCache, err = sqle.RemoteSrvFSAndDBCache(ctxFactory, sqle.CreateUnknownDatabases)
args.DBCache, err = sqle.RemoteSrvDBCache(ctxFactory, sqle.CreateUnknownDatabases)
if err != nil {
return remotesrv.ServerArgs{}, err
}
Expand Down
16 changes: 5 additions & 11 deletions go/libraries/doltcore/sqle/remotesrv.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import (
"github.com/dolthub/dolt/go/libraries/doltcore/doltdb"
"github.com/dolthub/dolt/go/libraries/doltcore/remotesrv"
"github.com/dolthub/dolt/go/libraries/doltcore/sqle/dsess"
"github.com/dolthub/dolt/go/libraries/utils/filesys"
"github.com/dolthub/dolt/go/store/datas"
)

Expand Down Expand Up @@ -81,17 +80,12 @@ type CreateUnknownDatabasesSetting bool
const CreateUnknownDatabases CreateUnknownDatabasesSetting = true
const DoNotCreateUnknownDatabases CreateUnknownDatabasesSetting = false

// Considers |args| and returns a new |remotesrv.ServerArgs| instance which
// will serve databases accessible through |ctxFactory|.
func RemoteSrvFSAndDBCache(ctxFactory func(context.Context) (*sql.Context, error), createSetting CreateUnknownDatabasesSetting) (filesys.Filesys, remotesrv.DBCache, error) {
sqlCtx, err := ctxFactory(context.Background())
if err != nil {
return nil, nil, err
}
sess := dsess.DSessFromSess(sqlCtx.Session)
fs := sess.Provider().FileSystem()
// Returns a remotesrv.DBCache instance which will use the *sql.Context
// returned from |ctxFactory| to access a database in the session
// DatabaseProvider.
func RemoteSrvDBCache(ctxFactory func(context.Context) (*sql.Context, error), createSetting CreateUnknownDatabasesSetting) (remotesrv.DBCache, error) {
dbcache := remotesrvStore{ctxFactory, bool(createSetting)}
return fs, dbcache, nil
return dbcache, nil
}

func WithUserPasswordAuth(args remotesrv.ServerArgs, authnz remotesrv.AccessControl) remotesrv.ServerArgs {
Expand Down

0 comments on commit d3b9e44

Please sign in to comment.