@@ -9,12 +9,11 @@ import (
9
9
"context"
10
10
gosql "database/sql"
11
11
"fmt"
12
- "regexp"
13
12
"time"
14
13
15
14
"github.com/cockroachdb/cockroach-go/v2/crdb"
16
15
"github.com/cockroachdb/cockroach/pkg/config/zonepb"
17
- kvpb "github.com/cockroachdb/cockroach/pkg/kv/kvpb "
16
+ "github.com/cockroachdb/cockroach/pkg/kv/kvtestutils "
18
17
"github.com/cockroachdb/cockroach/pkg/roachpb"
19
18
"github.com/cockroachdb/cockroach/pkg/util/protoutil"
20
19
"github.com/cockroachdb/errors"
@@ -46,53 +45,7 @@ func (e *Env) anyNode() *gosql.DB {
46
45
// as a list of errors. RANGE_CONSISTENT_STATS_ESTIMATED is considered a
47
46
// success, since stats estimates are fine (if unfortunate).
48
47
func (e * Env ) CheckConsistency (ctx context.Context , span roachpb.Span ) []error {
49
- rows , err := e .anyNode ().QueryContext (ctx , fmt .Sprintf (`
50
- SELECT range_id, start_key_pretty, status, detail
51
- FROM crdb_internal.check_consistency(false, b'\x%x', b'\x%x')
52
- ORDER BY range_id ASC` ,
53
- span .Key , span .EndKey ,
54
- ))
55
- if err != nil {
56
- return []error {err }
57
- }
58
- defer rows .Close ()
59
-
60
- var failures []error
61
- for rows .Next () {
62
- var rangeID int
63
- var key , status , detail string
64
- if err := rows .Scan (& rangeID , & key , & status , & detail ); err != nil {
65
- return []error {err }
66
- }
67
- // NB: There's a known issue that can result in a 10-byte discrepancy in
68
- // SysBytes. See:
69
- // https://github.com/cockroachdb/cockroach/issues/93896
70
- //
71
- // This isn't critical, so we ignore such discrepancies.
72
- if status == kvpb .CheckConsistencyResponse_RANGE_CONSISTENT_STATS_INCORRECT .String () {
73
- m := regexp .MustCompile (`.*\ndelta \(stats-computed\): \{(.*)\}` ).FindStringSubmatch (detail )
74
- if len (m ) > 1 {
75
- delta := m [1 ]
76
- // Strip out LastUpdateNanos and all zero-valued fields.
77
- delta = regexp .MustCompile (`LastUpdateNanos:\d+` ).ReplaceAllString (delta , "" )
78
- delta = regexp .MustCompile (`\S+:0\b` ).ReplaceAllString (delta , "" )
79
- if regexp .MustCompile (`^\s*SysBytes:-?10\s*$` ).MatchString (delta ) {
80
- continue
81
- }
82
- }
83
- }
84
- switch status {
85
- case kvpb .CheckConsistencyResponse_RANGE_INDETERMINATE .String ():
86
- // Can't do anything, so let it slide.
87
- case kvpb .CheckConsistencyResponse_RANGE_CONSISTENT .String ():
88
- // Good.
89
- case kvpb .CheckConsistencyResponse_RANGE_CONSISTENT_STATS_ESTIMATED .String ():
90
- // Ok.
91
- default :
92
- failures = append (failures , errors .Errorf ("range %d (%s) %s:\n %s" , rangeID , key , status , detail ))
93
- }
94
- }
95
- return failures
48
+ return kvtestutils .CheckConsistency (ctx , e .anyNode (), span )
96
49
}
97
50
98
51
// SetClosedTimestampInterval sets the kv.closed_timestamp.target_duration
0 commit comments