mirror of
https://github.com/prometheus/prometheus.git
synced 2025-08-05 21:57:09 +02:00
Merge pull request #16436 from prymitive/slicelabels
Use stringlabels by default
This commit is contained in:
commit
2e9ab9cc62
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
@ -18,8 +18,8 @@ jobs:
|
||||
- uses: ./.github/promci/actions/setup_environment
|
||||
with:
|
||||
enable_npm: true
|
||||
- run: make GOOPTS=--tags=stringlabels GO_ONLY=1 SKIP_GOLANGCI_LINT=1
|
||||
- run: go test --tags=stringlabels ./tsdb/ -test.tsdb-isolation=false
|
||||
- run: make GO_ONLY=1 SKIP_GOLANGCI_LINT=1
|
||||
- run: go test ./tsdb/ -test.tsdb-isolation=false
|
||||
- run: make -C documentation/examples/remote_storage
|
||||
- run: make -C documentation/examples
|
||||
|
||||
|
@ -14,10 +14,8 @@ build:
|
||||
all:
|
||||
- netgo
|
||||
- builtinassets
|
||||
- stringlabels
|
||||
windows:
|
||||
- builtinassets
|
||||
- stringlabels
|
||||
ldflags: |
|
||||
-X github.com/prometheus/common/version.Version={{.Version}}
|
||||
-X github.com/prometheus/common/version.Revision={{.Revision}}
|
||||
|
@ -11,7 +11,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
//go:build !stringlabels && !dedupelabels
|
||||
//go:build slicelabels
|
||||
|
||||
package labels
|
||||
|
||||
@ -453,7 +453,7 @@ func (b *ScratchBuilder) Add(name, value string) {
|
||||
}
|
||||
|
||||
// UnsafeAddBytes adds a name/value pair, using []byte instead of string.
|
||||
// The '-tags stringlabels' version of this function is unsafe, hence the name.
|
||||
// The default version of this function is unsafe, hence the name.
|
||||
// This version is safe - it copies the strings immediately - but we keep the same name so everything compiles.
|
||||
func (b *ScratchBuilder) UnsafeAddBytes(name, value []byte) {
|
||||
b.add = append(b.add, Label{Name: string(name), Value: string(value)})
|
||||
|
@ -11,7 +11,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
//go:build stringlabels
|
||||
//go:build !slicelabels && !dedupelabels
|
||||
|
||||
package labels
|
||||
|
||||
@ -70,7 +70,7 @@ func (ls Labels) IsZero() bool {
|
||||
|
||||
// MatchLabels returns a subset of Labels that matches/does not match with the provided label names based on the 'on' boolean.
|
||||
// If on is set to true, it returns the subset of labels that match with the provided label names and its inverse when 'on' is set to false.
|
||||
// TODO: This is only used in printing an error message
|
||||
// TODO: This is only used in printing an error message.
|
||||
func (ls Labels) MatchLabels(on bool, names ...string) Labels {
|
||||
b := NewBuilder(ls)
|
||||
if on {
|
||||
@ -292,6 +292,7 @@ func Equal(ls, o Labels) bool {
|
||||
func EmptyLabels() Labels {
|
||||
return Labels{}
|
||||
}
|
||||
|
||||
func yoloBytes(s string) []byte {
|
||||
return unsafe.Slice(unsafe.StringData(s), len(s))
|
||||
}
|
||||
@ -364,7 +365,7 @@ func Compare(a, b Labels) int {
|
||||
return +1
|
||||
}
|
||||
|
||||
// Copy labels from b on top of whatever was in ls previously, reusing memory or expanding if needed.
|
||||
// CopyFrom will copy labels from b on top of whatever was in ls previously, reusing memory or expanding if needed.
|
||||
func (ls *Labels) CopyFrom(b Labels) {
|
||||
ls.data = b.data // strings are immutable
|
||||
}
|
||||
@ -434,11 +435,11 @@ func (ls Labels) DropMetricName() Labels {
|
||||
}
|
||||
|
||||
// InternStrings is a no-op because it would only save when the whole set of labels is identical.
|
||||
func (ls *Labels) InternStrings(intern func(string) string) {
|
||||
func (ls *Labels) InternStrings(_ func(string) string) {
|
||||
}
|
||||
|
||||
// ReleaseStrings is a no-op for the same reason as InternStrings.
|
||||
func (ls Labels) ReleaseStrings(release func(string)) {
|
||||
func (ls Labels) ReleaseStrings(_ func(string)) {
|
||||
}
|
||||
|
||||
// Builder allows modifying Labels.
|
||||
@ -603,7 +604,7 @@ func (b *ScratchBuilder) Add(name, value string) {
|
||||
b.add = append(b.add, Label{Name: name, Value: value})
|
||||
}
|
||||
|
||||
// Add a name/value pair, using []byte instead of string to reduce memory allocations.
|
||||
// UnsafeAddBytes adds a name/value pair using []byte instead of string to reduce memory allocations.
|
||||
// The values must remain live until Labels() is called.
|
||||
func (b *ScratchBuilder) UnsafeAddBytes(name, value []byte) {
|
||||
b.add = append(b.add, Label{Name: yoloString(name), Value: yoloString(value)})
|
||||
@ -631,7 +632,7 @@ func (b *ScratchBuilder) Labels() Labels {
|
||||
return b.output
|
||||
}
|
||||
|
||||
// Write the newly-built Labels out to ls, reusing an internal buffer.
|
||||
// Overwrite will write the newly-built Labels out to ls, reusing an internal buffer.
|
||||
// Callers must ensure that there are no other references to ls, or any strings fetched from it.
|
||||
func (b *ScratchBuilder) Overwrite(ls *Labels) {
|
||||
size := labelsSize(b.add)
|
||||
@ -644,7 +645,7 @@ func (b *ScratchBuilder) Overwrite(ls *Labels) {
|
||||
ls.data = yoloString(b.overwriteBuffer)
|
||||
}
|
||||
|
||||
// Symbol-table is no-op, just for api parity with dedupelabels.
|
||||
// SymbolTable is no-op, just for api parity with dedupelabels.
|
||||
type SymbolTable struct{}
|
||||
|
||||
func NewSymbolTable() *SymbolTable { return nil }
|
||||
|
@ -11,7 +11,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
//go:build !stringlabels && !dedupelabels
|
||||
//go:build slicelabels
|
||||
|
||||
package labels
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
//go:build stringlabels
|
||||
//go:build !slicelabels && !dedupelabels
|
||||
|
||||
package labels
|
||||
|
||||
|
@ -77,13 +77,13 @@ func TestNoDeadlock(t *testing.T) {
|
||||
|
||||
func labelsWithHashCollision() (labels.Labels, labels.Labels) {
|
||||
// These two series have the same XXHash; thanks to https://github.com/pstibrany/labels_hash_collisions
|
||||
ls1 := labels.FromStrings("__name__", "metric", "lbl1", "value", "lbl2", "l6CQ5y")
|
||||
ls2 := labels.FromStrings("__name__", "metric", "lbl1", "value", "lbl2", "v7uDlF")
|
||||
ls1 := labels.FromStrings("__name__", "metric", "lbl", "HFnEaGl")
|
||||
ls2 := labels.FromStrings("__name__", "metric", "lbl", "RqcXatm")
|
||||
|
||||
if ls1.Hash() != ls2.Hash() {
|
||||
// These ones are the same when using -tags stringlabels
|
||||
ls1 = labels.FromStrings("__name__", "metric", "lbl", "HFnEaGl")
|
||||
ls2 = labels.FromStrings("__name__", "metric", "lbl", "RqcXatm")
|
||||
// These ones are the same when using -tags slicelabels
|
||||
ls1 = labels.FromStrings("__name__", "metric", "lbl1", "value", "lbl2", "l6CQ5y")
|
||||
ls2 = labels.FromStrings("__name__", "metric", "lbl1", "value", "lbl2", "v7uDlF")
|
||||
}
|
||||
|
||||
if ls1.Hash() != ls2.Hash() {
|
||||
|
@ -6372,13 +6372,13 @@ func TestHeadCompactionWhileAppendAndCommitExemplar(t *testing.T) {
|
||||
|
||||
func labelsWithHashCollision() (labels.Labels, labels.Labels) {
|
||||
// These two series have the same XXHash; thanks to https://github.com/pstibrany/labels_hash_collisions
|
||||
ls1 := labels.FromStrings("__name__", "metric", "lbl1", "value", "lbl2", "l6CQ5y")
|
||||
ls2 := labels.FromStrings("__name__", "metric", "lbl1", "value", "lbl2", "v7uDlF")
|
||||
ls1 := labels.FromStrings("__name__", "metric", "lbl", "HFnEaGl")
|
||||
ls2 := labels.FromStrings("__name__", "metric", "lbl", "RqcXatm")
|
||||
|
||||
if ls1.Hash() != ls2.Hash() {
|
||||
// These ones are the same when using -tags stringlabels
|
||||
ls1 = labels.FromStrings("__name__", "metric", "lbl", "HFnEaGl")
|
||||
ls2 = labels.FromStrings("__name__", "metric", "lbl", "RqcXatm")
|
||||
// These ones are the same when using -tags slicelabels
|
||||
ls1 = labels.FromStrings("__name__", "metric", "lbl1", "value", "lbl2", "l6CQ5y")
|
||||
ls2 = labels.FromStrings("__name__", "metric", "lbl1", "value", "lbl2", "v7uDlF")
|
||||
}
|
||||
|
||||
if ls1.Hash() != ls2.Hash() {
|
||||
|
Loading…
Reference in New Issue
Block a user