Skip to content

Commit 36cb7a2

Browse files
committed
valsep: do not embed sstable.Writer methods on SSTBlobWriter
Instead, users of SSTBlobwriter will need to explicitly access the SST writer for any methods not redefined by SSTBlobWriter. This prevents any confusion on whether values may be separated by the wrapper.
1 parent 3735f59 commit 36cb7a2

File tree

2 files changed

+15
-16
lines changed

2 files changed

+15
-16
lines changed

valsep/sst_blob_writer.go

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,9 @@ import (
1919
// neverSeparateValues, this behaves like sstable.Writer and no blob
2020
// files are written.
2121
type SSTBlobWriter struct {
22-
// Promote methods from sstable.Writer.
23-
*sstable.Writer
24-
valSep ValueSeparation
25-
err error
22+
SSTWriter *sstable.Writer
23+
valSep ValueSeparation
24+
err error
2625

2726
blobFileNum base.DiskFileNum
2827
closed bool
@@ -76,7 +75,7 @@ func NewSSTBlobWriter(sstHandle objstorage.Writable, opts SSTBlobWriterOptions)
7675
opts.SSTWriterOpts.Compression = block.FastestCompression
7776
}
7877

79-
writer.Writer = sstable.NewWriter(sstHandle, opts.SSTWriterOpts)
78+
writer.SSTWriter = sstable.NewWriter(sstHandle, opts.SSTWriterOpts)
8079

8180
// Create the value separator.
8281
minimumValueSize := opts.ValueSeparationMinSize
@@ -123,7 +122,7 @@ func NewSSTBlobWriter(sstHandle objstorage.Writable, opts SSTBlobWriterOptions)
123122

124123
// Error returns the current accumulated error if any.
125124
func (w *SSTBlobWriter) Error() error {
126-
return errors.CombineErrors(w.err, w.Writer.Error())
125+
return errors.CombineErrors(w.err, w.SSTWriter.Error())
127126
}
128127

129128
// Set sets the value for the given key. The sequence number is set to 0.
@@ -142,8 +141,8 @@ func (w *SSTBlobWriter) Set(key, value []byte) error {
142141

143142
w.kvScratch.K = base.MakeInternalKey(key, 0, sstable.InternalKeyKindSet)
144143
w.kvScratch.V = base.MakeInPlaceValue(value)
145-
isLikelyMVCCGarbage := w.Raw().IsLikelyMVCCGarbage(w.kvScratch.K.UserKey, w.kvScratch.Kind())
146-
return w.valSep.Add(w.Raw(), &w.kvScratch, false, isLikelyMVCCGarbage)
144+
isLikelyMVCCGarbage := w.SSTWriter.Raw().IsLikelyMVCCGarbage(w.kvScratch.K.UserKey, w.kvScratch.Kind())
145+
return w.valSep.Add(w.SSTWriter.Raw(), &w.kvScratch, false, isLikelyMVCCGarbage)
147146
}
148147

149148
// BlobWriterMetas returns a slice of blob.FileWriterStats describing the
@@ -160,7 +159,7 @@ func (w *SSTBlobWriter) BlobWriterMetas() ([]blob.FileWriterStats, error) {
160159

161160
// Close closes both the sstable writer and the blob file writer if any.
162161
func (w *SSTBlobWriter) Close() error {
163-
w.err = errors.CombineErrors(w.err, w.Writer.Close())
162+
w.err = errors.CombineErrors(w.err, w.SSTWriter.Close())
164163
meta, err := w.valSep.FinishOutput()
165164
if err != nil {
166165
w.err = errors.CombineErrors(w.err, err)

valsep/sst_blob_writer_test.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -119,27 +119,27 @@ func runDataDriven(t *testing.T, file string) {
119119
return fmt.Sprintf("error putting key %s: %v", kv.Key.UserKey, err)
120120
}
121121
case sstable.InternalKeyKindDelete, sstable.InternalKeyKindDeleteSized:
122-
if err := writer.Delete(kv.Key.UserKey); err != nil {
122+
if err := writer.SSTWriter.Delete(kv.Key.UserKey); err != nil {
123123
return fmt.Sprintf("error deleting key %s: %v", kv.Key.UserKey, err)
124124
}
125125
case base.InternalKeyKindRangeDelete:
126-
if err := writer.DeleteRange(kv.Span.Start, kv.Span.End); err != nil {
126+
if err := writer.SSTWriter.DeleteRange(kv.Span.Start, kv.Span.End); err != nil {
127127
return fmt.Sprintf("error deleting range %s-%s: %v", kv.Span.Start, kv.Span.End, err)
128128
}
129129
case sstable.InternalKeyKindMerge:
130-
if err := writer.Merge(kv.Key.UserKey, kv.Value); err != nil {
130+
if err := writer.SSTWriter.Merge(kv.Key.UserKey, kv.Value); err != nil {
131131
return fmt.Sprintf("error merging key %s: %v", kv.Key.UserKey, err)
132132
}
133133
case base.InternalKeyKindRangeKeySet:
134-
if err := writer.RangeKeySet(kv.Span.Start, kv.Span.End, nil, kv.Value); err != nil {
134+
if err := writer.SSTWriter.RangeKeySet(kv.Span.Start, kv.Span.End, nil, kv.Value); err != nil {
135135
return fmt.Sprintf("error setting range key %s-%s: %v", kv.Span.Start, kv.Span.End, err)
136136
}
137137
case base.InternalKeyKindRangeKeyUnset:
138-
if err := writer.RangeKeyUnset(kv.Span.Start, kv.Span.End, kv.Key.UserKey); err != nil {
138+
if err := writer.SSTWriter.RangeKeyUnset(kv.Span.Start, kv.Span.End, kv.Key.UserKey); err != nil {
139139
return fmt.Sprintf("error unsetting range key %s-%s: %v", kv.Span.Start, kv.Span.End, err)
140140
}
141141
case base.InternalKeyKindRangeKeyDelete:
142-
if err := writer.RangeKeyDelete(kv.Span.Start, kv.Span.End); err != nil {
142+
if err := writer.SSTWriter.RangeKeyDelete(kv.Span.Start, kv.Span.End); err != nil {
143143
return fmt.Sprintf("error deleting range key %s-%s: %v", kv.Span.Start, kv.Span.End, err)
144144
}
145145
default:
@@ -151,7 +151,7 @@ func runDataDriven(t *testing.T, file string) {
151151
return fmt.Sprintf("error closing writer: %v", err)
152152
}
153153

154-
tableMeta, err := writer.Metadata()
154+
tableMeta, err := writer.SSTWriter.Metadata()
155155
if err != nil {
156156
return fmt.Sprintf("error getting metadata: %v", err)
157157
}

0 commit comments

Comments
 (0)