Skip to content

Commit

Permalink
[no-release-notes] more stats logging
Browse files Browse the repository at this point in the history
  • Loading branch information
max-hoffman committed Sep 12, 2024
1 parent 01bd340 commit 6ed111b
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 10 deletions.
7 changes: 5 additions & 2 deletions go/libraries/doltcore/sqle/statsnoms/database.go
Original file line number Diff line number Diff line change
Expand Up @@ -231,23 +231,26 @@ func (n *NomsStatsDatabase) initMutable(ctx context.Context, i int) error {
return nil
}

func (n *NomsStatsDatabase) DeleteStats(branch string, quals ...sql.StatQualifier) {
func (n *NomsStatsDatabase) DeleteStats(ctx *sql.Context, branch string, quals ...sql.StatQualifier) {
n.mu.Lock()
defer n.mu.Unlock()

for i, b := range n.branches {
if strings.EqualFold(b, branch) {
for _, qual := range quals {
ctx.GetLogger().Debugf("statistics refresh: deleting index statistics: %s/%s", branch, qual)
delete(n.stats[i], qual)
}
}
}
}

func (n *NomsStatsDatabase) DeleteBranchStats(ctx context.Context, branch string, flush bool) error {
func (n *NomsStatsDatabase) DeleteBranchStats(ctx *sql.Context, branch string, flush bool) error {
n.mu.Lock()
defer n.mu.Unlock()

ctx.GetLogger().Debugf("statistics refresh: deleting branch statistics: %s", branch)

for i, b := range n.branches {
if strings.EqualFold(b, branch) {
n.branches = append(n.branches[:i], n.branches[i+1:]...)
Expand Down
12 changes: 7 additions & 5 deletions go/libraries/doltcore/sqle/statspro/auto_refresh.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,10 +133,6 @@ func (p *Provider) checkRefresh(ctx *sql.Context, sqlDb sql.Database, dbName, br
}

for _, table := range tables {
if !p.TryLockForUpdate(table, dbName, branch) {
continue
}
defer p.UnlockTable(table, dbName, branch)
sqlTable, dTab, err := GetLatestTable(ctx, table, sqlDb)
if err != nil {
return err
Expand All @@ -156,6 +152,12 @@ func (p *Provider) checkRefresh(ctx *sql.Context, sqlDb sql.Database, dbName, br
ctx.GetLogger().Debugf("statistics refresh: new table hash: %s", tableHash)
}

if !p.TryLockForUpdate(table, dbName, branch) {
ctx.GetLogger().Debugf("statistics refresh: table is already being updated: %s/%s.%s", branch, dbName, table)
continue
}
defer p.UnlockTable(table, dbName, branch)

iat, ok := sqlTable.(sql.IndexAddressableTable)
if !ok {
return fmt.Errorf("table does not support indexes %s", table)
Expand Down Expand Up @@ -240,7 +242,7 @@ func (p *Provider) checkRefresh(ctx *sql.Context, sqlDb sql.Database, dbName, br
}
}

statDb.DeleteStats(branch, deletedStats...)
statDb.DeleteStats(ctx, branch, deletedStats...)

if err := statDb.Flush(ctx, branch); err != nil {
return err
Expand Down
4 changes: 2 additions & 2 deletions go/libraries/doltcore/sqle/statspro/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,13 @@ type Database interface {
LoadBranchStats(ctx *sql.Context, branch string) error
// DeleteBranchStats removes references to in memory index statistics.
// If |flush| is true delete the data from storage.
DeleteBranchStats(ctx context.Context, branch string, flush bool) error
DeleteBranchStats(ctx *sql.Context, branch string, flush bool) error
// GetStat returns a branch's index statistics.
GetStat(branch string, qual sql.StatQualifier) (*DoltStats, bool)
//SetStat bulk replaces the statistic, deleting any previous version
SetStat(ctx context.Context, branch string, qual sql.StatQualifier, stats *DoltStats) error
//DeleteStats deletes a list of index statistics.
DeleteStats(branch string, quals ...sql.StatQualifier)
DeleteStats(ctx *sql.Context, branch string, quals ...sql.StatQualifier)
// ReplaceChunks is an update interface that lets a stats implementation
// decide how to edit stats for a stats refresh.
ReplaceChunks(ctx context.Context, branch string, qual sql.StatQualifier, targetHashes []hash.Hash, dropChunks, newChunks []sql.HistogramBucket) error
Expand Down
2 changes: 1 addition & 1 deletion go/libraries/doltcore/sqle/statspro/stats_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ func (p *Provider) DropStats(ctx *sql.Context, qual sql.StatQualifier, _ []strin
}

if _, ok := statDb.GetStat(branch, qual); ok {
statDb.DeleteStats(branch, qual)
statDb.DeleteStats(ctx, branch, qual)
p.UpdateStatus(qual.Db(), fmt.Sprintf("dropped statisic: %s", qual.String()))
}

Expand Down

0 comments on commit 6ed111b

Please sign in to comment.