Upgrade versions of vendored libs
This commit is contained in:
102
vendor/github.com/cockroachdb/pebble/options.go
generated
vendored
102
vendor/github.com/cockroachdb/pebble/options.go
generated
vendored
@@ -17,6 +17,7 @@ import (
|
||||
"github.com/cockroachdb/pebble/internal/base"
|
||||
"github.com/cockroachdb/pebble/internal/cache"
|
||||
"github.com/cockroachdb/pebble/internal/humanize"
|
||||
"github.com/cockroachdb/pebble/internal/keyspan"
|
||||
"github.com/cockroachdb/pebble/internal/manifest"
|
||||
"github.com/cockroachdb/pebble/objstorage/shared"
|
||||
"github.com/cockroachdb/pebble/sstable"
|
||||
@@ -118,10 +119,13 @@ type IterOptions struct {
|
||||
// function can be used by multiple iterators, if the iterator is cloned.
|
||||
TableFilter func(userProps map[string]string) bool
|
||||
// PointKeyFilters can be used to avoid scanning tables and blocks in tables
|
||||
// when iterating over point keys. It is requires that this slice is sorted in
|
||||
// increasing order of the BlockPropertyFilter.ShortID. This slice represents
|
||||
// an intersection across all filters, i.e., all filters must indicate that the
|
||||
// block is relevant.
|
||||
// when iterating over point keys. This slice represents an intersection
|
||||
// across all filters, i.e., all filters must indicate that the block is
|
||||
// relevant.
|
||||
//
|
||||
// Performance note: When len(PointKeyFilters) > 0, the caller should ensure
|
||||
// that cap(PointKeyFilters) is at least len(PointKeyFilters)+1. This helps
|
||||
// avoid allocations in Pebble internal code that mutates the slice.
|
||||
PointKeyFilters []BlockPropertyFilter
|
||||
// RangeKeyFilters can be usefd to avoid scanning tables and blocks in tables
|
||||
// when iterating over range keys. The same requirements that apply to
|
||||
@@ -180,6 +184,10 @@ type IterOptions struct {
|
||||
level manifest.Level
|
||||
// disableLazyCombinedIteration is an internal testing option.
|
||||
disableLazyCombinedIteration bool
|
||||
// snapshotForHideObsoletePoints is specified for/by levelIter when opening
|
||||
// files and is used to decide whether to hide obsolete points. A value of 0
|
||||
// implies obsolete points should not be hidden.
|
||||
snapshotForHideObsoletePoints uint64
|
||||
|
||||
// NB: If adding new Options, you must account for them in iterator
|
||||
// construction and Iterator.SetOptions.
|
||||
@@ -222,6 +230,17 @@ func (o *IterOptions) getLogger() Logger {
|
||||
return o.logger
|
||||
}
|
||||
|
||||
// SpanIterOptions creates a SpanIterOptions from this IterOptions.
|
||||
func (o *IterOptions) SpanIterOptions(level manifest.Level) keyspan.SpanIterOptions {
|
||||
if o == nil {
|
||||
return keyspan.SpanIterOptions{Level: level}
|
||||
}
|
||||
return keyspan.SpanIterOptions{
|
||||
RangeKeyFilters: o.RangeKeyFilters,
|
||||
Level: level,
|
||||
}
|
||||
}
|
||||
|
||||
// scanInternalOptions is similar to IterOptions, meant for use with
|
||||
// scanInternalIterator.
|
||||
type scanInternalOptions struct {
|
||||
@@ -509,17 +528,6 @@ type Options struct {
|
||||
// concurrency slots as determined by the two options is chosen.
|
||||
CompactionDebtConcurrency int
|
||||
|
||||
// MinDeletionRate is the minimum number of bytes per second that would
|
||||
// be deleted. Deletion pacing is used to slow down deletions when
|
||||
// compactions finish up or readers close, and newly-obsolete files need
|
||||
// cleaning up. Deleting lots of files at once can cause disk latency to
|
||||
// go up on some SSDs, which this functionality guards against. This is a
|
||||
// minimum as the maximum is theoretically unlimited; pacing is disabled
|
||||
// when there are too many obsolete files relative to live bytes, or
|
||||
// there isn't enough disk space available. Setting this to 0 disables
|
||||
// deletion pacing, which is also the default.
|
||||
MinDeletionRate int
|
||||
|
||||
// ReadCompactionRate controls the frequency of read triggered
|
||||
// compactions by adjusting `AllowedSeeks` in manifest.FileMetadata:
|
||||
//
|
||||
@@ -606,12 +614,6 @@ type Options struct {
|
||||
// for CPUWorkPermissionGranter for more details.
|
||||
CPUWorkPermissionGranter CPUWorkPermissionGranter
|
||||
|
||||
// PointTombstoneWeight is a float in the range [0, +inf) used to weight the
|
||||
// point tombstone heuristics during compaction picking.
|
||||
//
|
||||
// The default value is 1, which results in no scaling of point tombstones.
|
||||
PointTombstoneWeight float64
|
||||
|
||||
// EnableValueBlocks is used to decide whether to enable writing
|
||||
// TableFormatPebblev3 sstables. This setting is only respected by a
|
||||
// specific subset of format major versions: FormatSSTableValueBlocks,
|
||||
@@ -626,18 +628,24 @@ type Options struct {
|
||||
ShortAttributeExtractor ShortAttributeExtractor
|
||||
|
||||
// RequiredInPlaceValueBound specifies an optional span of user key
|
||||
// prefixes for which the values must be stored with the key. This is
|
||||
// useful for statically known exclusions to value separation. In
|
||||
// CockroachDB, this will be used for the lock table key space that has
|
||||
// non-empty suffixes, but those locks don't represent actual MVCC
|
||||
// versions (the suffix ordering is arbitrary). We will also need to add
|
||||
// support for dynamically configured exclusions (we want the default to
|
||||
// be to allow Pebble to decide whether to separate the value or not,
|
||||
// hence this is structured as exclusions), for example, for users of
|
||||
// CockroachDB to dynamically exclude certain tables.
|
||||
// prefixes that are not-MVCC, but have a suffix. For these the values
|
||||
// must be stored with the key, since the concept of "older versions" is
|
||||
// not defined. It is also useful for statically known exclusions to value
|
||||
// separation. In CockroachDB, this will be used for the lock table key
|
||||
// space that has non-empty suffixes, but those locks don't represent
|
||||
// actual MVCC versions (the suffix ordering is arbitrary). We will also
|
||||
// need to add support for dynamically configured exclusions (we want the
|
||||
// default to be to allow Pebble to decide whether to separate the value
|
||||
// or not, hence this is structured as exclusions), for example, for users
|
||||
// of CockroachDB to dynamically exclude certain tables.
|
||||
//
|
||||
// Any change in exclusion behavior takes effect only on future written
|
||||
// sstables, and does not start rewriting existing sstables.
|
||||
//
|
||||
// Even ignoring changes in this setting, exclusions are interpreted as a
|
||||
// guidance by Pebble, and not necessarily honored. Specifically, user
|
||||
// keys with multiple Pebble-versions *may* have the older versions stored
|
||||
// in value blocks.
|
||||
RequiredInPlaceValueBound UserKeyPrefixBound
|
||||
|
||||
// DisableIngestAsFlushable disables lazy ingestion of sstables through
|
||||
@@ -858,6 +866,19 @@ type Options struct {
|
||||
// changing options dynamically?
|
||||
WALMinSyncInterval func() time.Duration
|
||||
|
||||
// TargetByteDeletionRate is the rate (in bytes per second) at which sstable file
|
||||
// deletions are limited to (under normal circumstances).
|
||||
//
|
||||
// Deletion pacing is used to slow down deletions when compactions finish up
|
||||
// or readers close and newly-obsolete files need cleaning up. Deleting lots
|
||||
// of files at once can cause disk latency to go up on some SSDs, which this
|
||||
// functionality guards against. This is only a best-effort target; pacing is
|
||||
// disabled when there are too many obsolete files relative to live bytes, or
|
||||
// there isn't enough disk space available.
|
||||
//
|
||||
// Setting this to 0 disables deletion pacing, which is also the default.
|
||||
TargetByteDeletionRate int
|
||||
|
||||
// private options are only used by internal tests or are used internally
|
||||
// for facilitating upgrade paths of unconfigurable functionality.
|
||||
private struct {
|
||||
@@ -1043,10 +1064,6 @@ func (o *Options) EnsureDefaults() *Options {
|
||||
if o.Experimental.CPUWorkPermissionGranter == nil {
|
||||
o.Experimental.CPUWorkPermissionGranter = defaultCPUWorkGranter{}
|
||||
}
|
||||
if o.Experimental.PointTombstoneWeight == 0 {
|
||||
o.Experimental.PointTombstoneWeight = 1
|
||||
}
|
||||
|
||||
if o.Experimental.MultiLevelCompactionHueristic == nil {
|
||||
o.Experimental.MultiLevelCompactionHueristic = NoMultiLevel{}
|
||||
}
|
||||
@@ -1167,9 +1184,8 @@ func (o *Options) String() string {
|
||||
fmt.Fprintf(&buf, " max_open_files=%d\n", o.MaxOpenFiles)
|
||||
fmt.Fprintf(&buf, " mem_table_size=%d\n", o.MemTableSize)
|
||||
fmt.Fprintf(&buf, " mem_table_stop_writes_threshold=%d\n", o.MemTableStopWritesThreshold)
|
||||
fmt.Fprintf(&buf, " min_deletion_rate=%d\n", o.Experimental.MinDeletionRate)
|
||||
fmt.Fprintf(&buf, " min_deletion_rate=%d\n", o.TargetByteDeletionRate)
|
||||
fmt.Fprintf(&buf, " merger=%s\n", o.Merger.Name)
|
||||
fmt.Fprintf(&buf, " point_tombstone_weight=%f\n", o.Experimental.PointTombstoneWeight)
|
||||
fmt.Fprintf(&buf, " read_compaction_rate=%d\n", o.Experimental.ReadCompactionRate)
|
||||
fmt.Fprintf(&buf, " read_sampling_multiplier=%d\n", o.Experimental.ReadSamplingMultiplier)
|
||||
fmt.Fprintf(&buf, " strict_wal_tail=%t\n", o.private.strictWALTail)
|
||||
@@ -1374,7 +1390,7 @@ func (o *Options) Parse(s string, hooks *ParseHooks) error {
|
||||
// version is valid right here.
|
||||
var v uint64
|
||||
v, err = strconv.ParseUint(value, 10, 64)
|
||||
if vers := FormatMajorVersion(v); vers > FormatNewest || vers == FormatDefault {
|
||||
if vers := FormatMajorVersion(v); vers > internalFormatNewest || vers == FormatDefault {
|
||||
err = errors.Newf("unknown format major version %d", o.FormatMajorVersion)
|
||||
}
|
||||
if err == nil {
|
||||
@@ -1414,12 +1430,12 @@ func (o *Options) Parse(s string, hooks *ParseHooks) error {
|
||||
// Do nothing; option existed in older versions of pebble, and
|
||||
// may be meaningful again eventually.
|
||||
case "min_deletion_rate":
|
||||
o.Experimental.MinDeletionRate, err = strconv.Atoi(value)
|
||||
o.TargetByteDeletionRate, err = strconv.Atoi(value)
|
||||
case "min_flush_rate":
|
||||
// Do nothing; option existed in older versions of pebble, and
|
||||
// may be meaningful again eventually.
|
||||
case "point_tombstone_weight":
|
||||
o.Experimental.PointTombstoneWeight, err = strconv.ParseFloat(value, 64)
|
||||
// Do nothing; deprecated.
|
||||
case "strict_wal_tail":
|
||||
o.private.strictWALTail, err = strconv.ParseBool(value)
|
||||
case "merger":
|
||||
@@ -1594,9 +1610,9 @@ func (o *Options) Validate() error {
|
||||
fmt.Fprintf(&buf, "MemTableStopWritesThreshold (%d) must be >= 2\n",
|
||||
o.MemTableStopWritesThreshold)
|
||||
}
|
||||
if o.FormatMajorVersion > FormatNewest {
|
||||
if o.FormatMajorVersion > internalFormatNewest {
|
||||
fmt.Fprintf(&buf, "FormatMajorVersion (%d) must be <= %d\n",
|
||||
o.FormatMajorVersion, FormatNewest)
|
||||
o.FormatMajorVersion, internalFormatNewest)
|
||||
}
|
||||
if o.TableCache != nil && o.Cache != o.TableCache.cache {
|
||||
fmt.Fprintf(&buf, "underlying cache in the TableCache and the Cache dont match\n")
|
||||
@@ -1616,6 +1632,7 @@ func (o *Options) MakeReaderOptions() sstable.ReaderOptions {
|
||||
readerOpts.Comparer = o.Comparer
|
||||
readerOpts.Filters = o.Filters
|
||||
if o.Merger != nil {
|
||||
readerOpts.Merge = o.Merger.Merge
|
||||
readerOpts.MergerName = o.Merger.Name
|
||||
}
|
||||
readerOpts.LoggerAndTracer = o.LoggerAndTracer
|
||||
@@ -1640,6 +1657,9 @@ func (o *Options) MakeWriterOptions(level int, format sstable.TableFormat) sstab
|
||||
if format >= sstable.TableFormatPebblev3 {
|
||||
writerOpts.ShortAttributeExtractor = o.Experimental.ShortAttributeExtractor
|
||||
writerOpts.RequiredInPlaceValueBound = o.Experimental.RequiredInPlaceValueBound
|
||||
if format >= sstable.TableFormatPebblev4 && level == numLevels-1 {
|
||||
writerOpts.WritingToLowestLevel = true
|
||||
}
|
||||
}
|
||||
levelOpts := o.Level(level)
|
||||
writerOpts.BlockRestartInterval = levelOpts.BlockRestartInterval
|
||||
|
||||
Reference in New Issue
Block a user