Skip to content

Commit aea5886

Browse files
committed
blobtest: don't depend on manifest
Minor refactor so `blobtest` doesn't depend on `manifest` and can be used from `sstable`.
1 parent 567a8d3 commit aea5886

File tree

2 files changed

+18
-16
lines changed

2 files changed

+18
-16
lines changed

data_test.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1085,13 +1085,18 @@ func runDBDefineCmdReuseFS(td *datadriven.TestData, opts *Options) (*DB, error)
10851085

10861086
if len(ve.NewTables) > 0 {
10871087
// Collect any blob files created.
1088-
err := blobtest.WriteFiles(&valueSeparator.bv, func(fileNum base.DiskFileNum) (objstorage.Writable, error) {
1088+
fileStats, err := valueSeparator.bv.WriteFiles(func(fileNum base.DiskFileNum) (objstorage.Writable, error) {
10891089
writable, _, err := d.objProvider.Create(context.Background(), base.FileTypeBlob, fileNum, objstorage.CreateOptions{})
10901090
return writable, err
1091-
}, d.opts.MakeBlobWriterOptions(0), valueSeparator.metas)
1091+
}, d.opts.MakeBlobWriterOptions(0))
10921092
if err != nil {
10931093
return nil, err
10941094
}
1095+
for f, stats := range fileStats {
1096+
valueSeparator.metas[f].Size = stats.FileLen
1097+
valueSeparator.metas[f].ValueSize = stats.UncompressedValueBytes
1098+
}
1099+
10951100
ve.NewBlobFiles = slices.Collect(maps.Values(valueSeparator.metas))
10961101

10971102
jobID := d.newJobIDLocked()

internal/blobtest/handles.go

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import (
1515

1616
"github.com/cockroachdb/errors"
1717
"github.com/cockroachdb/pebble/internal/base"
18-
"github.com/cockroachdb/pebble/internal/manifest"
1918
"github.com/cockroachdb/pebble/internal/strparse"
2019
"github.com/cockroachdb/pebble/internal/testutils"
2120
"github.com/cockroachdb/pebble/objstorage"
@@ -204,21 +203,20 @@ func (bv *Values) ParseInlineHandle(
204203
}
205204

206205
// WriteFiles writes all the blob files referenced by Values, using
207-
// newBlobObject to construct new objects. Additionally, it updates the
208-
// BlobFileMetadatas contained within metas with the resulting physical and
209-
// logical sizes of the blob files.
210-
func WriteFiles(
211-
bv *Values,
206+
// newBlobObject to construct new objects.
207+
//
208+
// Return the FileWriterStats for the written blob files.
209+
func (bv *Values) WriteFiles(
212210
newBlobObject func(fileNum base.DiskFileNum) (objstorage.Writable, error),
213211
writerOpts blob.FileWriterOptions,
214-
metas map[base.DiskFileNum]*manifest.BlobFileMetadata,
215-
) error {
212+
) (map[base.DiskFileNum]blob.FileWriterStats, error) {
216213
// Organize the handles by file number.
217214
files := make(map[base.DiskFileNum][]blob.Handle)
218215
for handle := range bv.trackedHandles {
219216
files[handle.FileNum] = append(files[handle.FileNum], handle)
220217
}
221218

219+
stats := make(map[base.DiskFileNum]blob.FileWriterStats)
222220
for fileNum, handles := range files {
223221
slices.SortFunc(handles, func(a, b blob.Handle) int {
224222
if v := cmp.Compare(a.BlockNum, b.BlockNum); v != 0 {
@@ -228,7 +226,7 @@ func WriteFiles(
228226
})
229227
writable, err := newBlobObject(fileNum)
230228
if err != nil {
231-
return err
229+
return nil, err
232230
}
233231
writer := blob.NewFileWriter(fileNum, writable, writerOpts)
234232
for i, handle := range handles {
@@ -241,14 +239,13 @@ func WriteFiles(
241239
writer.AddValue(deriveValueFromHandle(handle))
242240
}
243241
}
244-
stats, err := writer.Close()
242+
fileStats, err := writer.Close()
245243
if err != nil {
246-
return err
244+
return nil, err
247245
}
248-
metas[fileNum].Size = stats.FileLen
249-
metas[fileNum].ValueSize = stats.UncompressedValueBytes
246+
stats[fileNum] = fileStats
250247
}
251-
return nil
248+
return stats, nil
252249
}
253250

254251
// errFromPanic can be used in a recover block to convert panics into errors.

0 commit comments

Comments
 (0)