1
0
Fork 0

Record how long checkpointing takes

master
Philip O'Toole 1 year ago
parent a80ab8aec6
commit c552dba575

@ -28,6 +28,7 @@ const (
const ( const (
numCheckpoints = "checkpoints" numCheckpoints = "checkpoints"
numCheckpointErrors = "checkpoint_errors" numCheckpointErrors = "checkpoint_errors"
checkpointDuration = "checkpoint_duration_ns"
numExecutions = "executions" numExecutions = "executions"
numExecutionErrors = "execution_errors" numExecutionErrors = "execution_errors"
numQueries = "queries" numQueries = "queries"
@ -60,6 +61,7 @@ func ResetStats() {
stats.Init() stats.Init()
stats.Add(numCheckpoints, 0) stats.Add(numCheckpoints, 0)
stats.Add(numCheckpointErrors, 0) stats.Add(numCheckpointErrors, 0)
stats.Add(checkpointDuration, 0)
stats.Add(numExecutions, 0) stats.Add(numExecutions, 0)
stats.Add(numExecutionErrors, 0) stats.Add(numExecutionErrors, 0)
stats.Add(numQueries, 0) stats.Add(numQueries, 0)
@ -549,10 +551,12 @@ func (db *DB) WALSize() (int64, error) {
// Checkpoint performs a WAL checkpoint. If the checkpoint does not complete // Checkpoint performs a WAL checkpoint. If the checkpoint does not complete
// within the given duration, an error is returned. // within the given duration, an error is returned.
func (db *DB) Checkpoint(dur time.Duration) (err error) { func (db *DB) Checkpoint(dur time.Duration) (err error) {
start := time.Now()
defer func() { defer func() {
if err != nil { if err != nil {
stats.Add(numCheckpointErrors, 1) stats.Add(numCheckpointErrors, 1)
} else { } else {
stats.Get(checkpointDuration).(*expvar.Int).Set(time.Since(start).Nanoseconds())
stats.Add(numCheckpoints, 1) stats.Add(numCheckpoints, 1)
} }
}() }()

Loading…
Cancel
Save