Skip to content

Commit

Permalink
vreplication: fix vreplication timing metrics
Browse files Browse the repository at this point in the history
Several of the vreplication metrics were recently updated to no longer be
correct. Specifically time.Now() is no longer executed when the function
starts and is instead executed when the defer statement is called after the end
of the function.

This updates the metrics to properly execute time.Now() at the start
of the functions.

Signed-off-by: Dylan Visher <dvisher@figma.com>
  • Loading branch information
dyv committed May 3, 2021
1 parent 62fd51b commit d93ee91
Showing 1 changed file with 4 additions and 10 deletions.
14 changes: 4 additions & 10 deletions go/vt/vttablet/tabletmanager/vreplication/vcopier.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,9 +146,7 @@ func (vc *vcopier) copyNext(ctx context.Context, settings binlogplayer.VRSetting
func (vc *vcopier) catchup(ctx context.Context, copyState map[string]*sqltypes.Result) error {
ctx, cancel := context.WithCancel(ctx)
defer cancel()
defer func() {
vc.vr.stats.PhaseTimings.Record("catchup", time.Now())
}()
defer vc.vr.stats.PhaseTimings.Record("catchup", time.Now())

settings, err := binlogplayer.ReadVRSettings(vc.vr.dbClient, vc.vr.id)
if err != nil {
Expand Down Expand Up @@ -198,10 +196,8 @@ func (vc *vcopier) catchup(ctx context.Context, copyState map[string]*sqltypes.R
// committed with the lastpk. This allows for consistent resumability.
func (vc *vcopier) copyTable(ctx context.Context, tableName string, copyState map[string]*sqltypes.Result) error {
defer vc.vr.dbClient.Rollback()
defer func() {
vc.vr.stats.PhaseTimings.Record("copy", time.Now())
vc.vr.stats.CopyLoopCount.Add(1)
}()
defer vc.vr.stats.PhaseTimings.Record("copy", time.Now())
defer vc.vr.stats.CopyLoopCount.Add(1)

log.Infof("Copying table %s, lastpk: %v", tableName, copyState[tableName])

Expand Down Expand Up @@ -334,9 +330,7 @@ func (vc *vcopier) copyTable(ctx context.Context, tableName string, copyState ma
}

func (vc *vcopier) fastForward(ctx context.Context, copyState map[string]*sqltypes.Result, gtid string) error {
defer func() {
vc.vr.stats.PhaseTimings.Record("fastforward", time.Now())
}()
defer vc.vr.stats.PhaseTimings.Record("fastforward", time.Now())
pos, err := mysql.DecodePosition(gtid)
if err != nil {
return err
Expand Down

0 comments on commit d93ee91

Please sign in to comment.