mirror of
https://github.com/dolthub/dolt.git
synced 2026-01-06 16:19:49 -06:00
[statspro] Restart drop db (#8350)
* [statspro] restart only inits stats database if missing * fix test
This commit is contained in:
committed by
GitHub
parent
3c58db3c59
commit
b42eee3996
@@ -147,8 +147,6 @@ func (p *Provider) Load(ctx *sql.Context, fs filesys.Filesys, db dsess.SqlDataba
|
||||
}
|
||||
}
|
||||
|
||||
p.mu.Lock()
|
||||
defer p.mu.Unlock()
|
||||
p.setStatDb(strings.ToLower(db.Name()), statsDb)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -37,15 +37,15 @@ func NewStatsInitDatabaseHook(
|
||||
denv *env.DoltEnv,
|
||||
db dsess.SqlDatabase,
|
||||
) error {
|
||||
statsDb, err := statsProv.sf.Init(ctx, db, statsProv.pro, denv.FS, env.GetCurrentUserHomeDir)
|
||||
if err != nil {
|
||||
ctx.GetLogger().Debugf("statistics load error: %s", err.Error())
|
||||
return nil
|
||||
dbName := strings.ToLower(db.Name())
|
||||
if _, ok := statsProv.getStatDb(dbName); !ok {
|
||||
statsDb, err := statsProv.sf.Init(ctx, db, statsProv.pro, denv.FS, env.GetCurrentUserHomeDir)
|
||||
if err != nil {
|
||||
ctx.GetLogger().Debugf("statistics load error: %s", err.Error())
|
||||
return nil
|
||||
}
|
||||
statsProv.setStatDb(dbName, statsDb)
|
||||
}
|
||||
statsProv.mu.Lock()
|
||||
statsProv.setStatDb(strings.ToLower(db.Name()), statsDb)
|
||||
statsProv.mu.Unlock()
|
||||
|
||||
ctx.GetLogger().Debugf("statistics refresh: initialize %s", name)
|
||||
return statsProv.InitAutoRefresh(ctxFactory, name, bThreads)
|
||||
}
|
||||
|
||||
@@ -186,6 +186,8 @@ func (p *Provider) GetTableDoltStats(ctx *sql.Context, branch, db, table string)
|
||||
}
|
||||
|
||||
func (p *Provider) setStatDb(name string, db Database) {
|
||||
p.mu.Lock()
|
||||
defer p.mu.Unlock()
|
||||
p.statDbs[name] = db
|
||||
}
|
||||
|
||||
|
||||
@@ -130,6 +130,26 @@ teardown() {
|
||||
[ "$status" -eq 1 ]
|
||||
}
|
||||
|
||||
@test "stats: restart in shell doesn't drop db, issue#8345" {
|
||||
cd repo2
|
||||
|
||||
dolt sql -q "insert into xy values (0,0), (1,1), (2,2), (3,3), (4,4)"
|
||||
dolt sql -q "insert into ab values (0,0), (1,1), (2,2), (3,3), (4,4)"
|
||||
dolt sql -q "ANALYZE table xy, ab"
|
||||
run dolt sql -r csv <<EOF
|
||||
select count(*) from dolt_statistics;
|
||||
set @@GLOBAL.dolt_stats_auto_refresh_interval = 2;
|
||||
call dolt_stats_restart();
|
||||
select count(*) from dolt_statistics;
|
||||
select sleep(3);
|
||||
select count(*) from dolt_statistics;
|
||||
EOF
|
||||
[ "${lines[1]}" = "4" ]
|
||||
[ "${lines[5]}" = "4" ]
|
||||
[ "${lines[9]}" = "4" ]
|
||||
[ "$status" -eq 0 ]
|
||||
}
|
||||
|
||||
@test "stats: stats roundtrip restart" {
|
||||
cd repo2
|
||||
|
||||
@@ -383,6 +403,7 @@ SQL
|
||||
dolt sql <<SQL
|
||||
use repo2;
|
||||
insert into xy values (0,0);
|
||||
analyze table xy;
|
||||
SQL
|
||||
|
||||
sleep 1
|
||||
|
||||
Reference in New Issue
Block a user