Skip to content

Commit fdac4fc

Browse files
committed
storageutils: use engine keys in ReportSSTEntries
STTs can contain keys other than MVCCKey, such as lock table keys. Epic: none Release note: none
1 parent bd9f76e commit fdac4fc

File tree

2 files changed

+33
-16
lines changed

2 files changed

+33
-16
lines changed

pkg/testutils/storageutils/BUILD.bazel

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ go_library(
1616
"//pkg/keys",
1717
"//pkg/kv/kvpb",
1818
"//pkg/kv/kvserver/kvserverbase",
19+
"//pkg/kv/kvserver/print",
1920
"//pkg/roachpb",
2021
"//pkg/settings/cluster",
2122
"//pkg/storage",
@@ -25,6 +26,7 @@ go_library(
2526
"//pkg/util/protoutil",
2627
"//pkg/util/syncutil",
2728
"//pkg/util/syncutil/singleflight",
29+
"@com_github_cockroachdb_errors//:errors",
2830
"@com_github_cockroachdb_pebble//:pebble",
2931
"@com_github_cockroachdb_pebble//sstable",
3032
"@com_github_cockroachdb_pebble//sstable/block",

pkg/testutils/storageutils/sst.go

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@ import (
1111
"testing"
1212

1313
"github.com/cockroachdb/cockroach/pkg/keys"
14+
"github.com/cockroachdb/cockroach/pkg/kv/kvserver/print"
1415
"github.com/cockroachdb/cockroach/pkg/roachpb"
1516
"github.com/cockroachdb/cockroach/pkg/settings/cluster"
1617
"github.com/cockroachdb/cockroach/pkg/storage"
1718
"github.com/cockroachdb/cockroach/pkg/storage/enginepb"
1819
"github.com/cockroachdb/cockroach/pkg/storage/mvccencoding"
1920
"github.com/cockroachdb/cockroach/pkg/util/protoutil"
21+
"github.com/cockroachdb/errors"
2022
"github.com/cockroachdb/pebble"
2123
"github.com/cockroachdb/pebble/sstable"
2224
"github.com/cockroachdb/pebble/sstable/block"
@@ -150,9 +152,9 @@ func ReportSSTEntries(buf *redact.StringBuilder, name string, sst []byte) error
150152
if err := iter.Error(); err != nil {
151153
return err
152154
}
153-
key, err := storage.DecodeMVCCKey(kv.K.UserKey)
154-
if err != nil {
155-
return err
155+
key, ok := storage.DecodeEngineKey(kv.K.UserKey)
156+
if !ok {
157+
return errors.Errorf("invalid engine key: %x", kv.K.UserKey)
156158
}
157159
v, _, err := kv.Value(nil)
158160
if err != nil {
@@ -162,7 +164,20 @@ func ReportSSTEntries(buf *redact.StringBuilder, name string, sst []byte) error
162164
if err != nil {
163165
return err
164166
}
165-
buf.Printf("%s: %s -> %s\n", strings.ToLower(kv.Kind().String()), key, value)
167+
if !key.IsMVCCKey() {
168+
buf.Printf("%s: %s -> %s\n", strings.ToLower(kv.Kind().String()), key, value)
169+
continue
170+
}
171+
mk, err := key.ToMVCCKey()
172+
if err != nil {
173+
return err
174+
}
175+
if mk.IsValue() {
176+
buf.Printf("%s: %s -> %s\n", strings.ToLower(kv.Kind().String()), mk, value)
177+
} else {
178+
buf.Printf("%s: %s -> %s\n", strings.ToLower(kv.Kind().String()), mk,
179+
print.SprintMVCCKeyValue(storage.MVCCKeyValue{Key: mk, Value: v}, false /* printKey */))
180+
}
166181
}
167182

168183
// Dump rangedels.
@@ -172,13 +187,13 @@ func ReportSSTEntries(buf *redact.StringBuilder, name string, sst []byte) error
172187
defer rdIter.Close()
173188
s, err := rdIter.First()
174189
for ; s != nil; s, err = rdIter.Next() {
175-
start, err := storage.DecodeMVCCKey(s.Start)
176-
if err != nil {
177-
return err
190+
start, ok := storage.DecodeEngineKey(s.Start)
191+
if !ok {
192+
return errors.Errorf("invalid engine key: %x", s.Start)
178193
}
179-
end, err := storage.DecodeMVCCKey(s.End)
180-
if err != nil {
181-
return err
194+
end, ok := storage.DecodeEngineKey(s.End)
195+
if !ok {
196+
return errors.Errorf("invalid engine key: %x", s.End)
182197
}
183198
for _, k := range s.Keys {
184199
buf.Printf("%s: %s\n", strings.ToLower(k.Kind().String()),
@@ -197,13 +212,13 @@ func ReportSSTEntries(buf *redact.StringBuilder, name string, sst []byte) error
197212
defer rkIter.Close()
198213
s, err := rkIter.First()
199214
for ; s != nil; s, err = rkIter.Next() {
200-
start, err := storage.DecodeMVCCKey(s.Start)
201-
if err != nil {
202-
return err
215+
start, ok := storage.DecodeEngineKey(s.Start)
216+
if !ok {
217+
return errors.Errorf("invalid engine key: %x", s.Start)
203218
}
204-
end, err := storage.DecodeMVCCKey(s.End)
205-
if err != nil {
206-
return err
219+
end, ok := storage.DecodeEngineKey(s.End)
220+
if !ok {
221+
return errors.Errorf("invalid engine key: %x", s.End)
207222
}
208223
for _, k := range s.Keys {
209224
buf.Printf("%s: %s", strings.ToLower(k.Kind().String()),

0 commit comments

Comments
 (0)