diff options
| author | 2024-01-09 10:30:01 +0000 | |
|---|---|---|
| committer | 2024-01-09 10:30:01 +0000 | |
| commit | d9127f56305f771d1ce7b9bea4400d4f38783128 (patch) | |
| tree | 7780895e88211a6d6b4375ea98d0bea0605b0e0f | |
| parent | [bugfix] misc dereferencer fixes (#2475) (diff) | |
| download | gotosocial-d9127f56305f771d1ce7b9bea4400d4f38783128.tar.xz | |
[chore]: Bump github.com/prometheus/client_golang from 1.17.0 to 1.18.0 (#2507)
Bumps [github.com/prometheus/client_golang](https://github.com/prometheus/client_golang) from 1.17.0 to 1.18.0.
- [Release notes](https://github.com/prometheus/client_golang/releases)
- [Changelog](https://github.com/prometheus/client_golang/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prometheus/client_golang/compare/v1.17.0...v1.18.0)
---
updated-dependencies:
- dependency-name: github.com/prometheus/client_golang
  dependency-type: direct:production
  update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
23 files changed, 235 insertions, 58 deletions
@@ -40,7 +40,7 @@ require (  	github.com/minio/minio-go/v7 v7.0.66  	github.com/mitchellh/mapstructure v1.5.0  	github.com/oklog/ulid v1.3.1 -	github.com/prometheus/client_golang v1.17.0 +	github.com/prometheus/client_golang v1.18.0  	github.com/spf13/cobra v1.8.0  	github.com/spf13/viper v1.16.0  	github.com/stretchr/testify v1.8.4 @@ -137,7 +137,7 @@ require (  	github.com/leodido/go-urn v1.2.4 // indirect  	github.com/magiconair/properties v1.8.7 // indirect  	github.com/mattn/go-isatty v0.0.19 // indirect -	github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect +	github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect  	github.com/minio/md5-simd v1.1.2 // indirect  	github.com/minio/sha256-simd v1.0.1 // indirect  	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -147,8 +147,8 @@ require (  	github.com/pkg/errors v0.9.1 // indirect  	github.com/pmezard/go-difflib v1.0.0 // indirect  	github.com/prometheus/client_model v0.5.0 // indirect -	github.com/prometheus/common v0.44.0 // indirect -	github.com/prometheus/procfs v0.11.1 // indirect +	github.com/prometheus/common v0.45.0 // indirect +	github.com/prometheus/procfs v0.12.0 // indirect  	github.com/quasoft/memstore v0.0.0-20191010062613-2bce066d2b0b // indirect  	github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect  	github.com/rs/xid v1.5.0 // indirect @@ -395,8 +395,8 @@ github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APP  github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=  github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U=  github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= -github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k=  github.com/microcosm-cc/bluemonday v1.0.26 h1:xbqSvqzQMeEHCqMi64VAs4d8uy6Mequs3rQ0k/Khz58=  github.com/microcosm-cc/bluemonday v1.0.26/go.mod h1:JyzOCs9gkyQyjs+6h10UEVSe02CGwkhd72Xdqh78TWs=  github.com/miekg/dns v1.1.57 h1:Jzi7ApEIzwEPLHWRcafCN9LZSBbqQpxjt/wpgvg7wcM= @@ -441,15 +441,15 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb  github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=  github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g=  github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= -github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= -github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= +github.com/prometheus/client_golang v1.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk= +github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA=  github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=  github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw=  github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= -github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= -github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= -github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= -github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= +github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= +github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=  github.com/quasoft/memstore v0.0.0-20191010062613-2bce066d2b0b h1:aUNXCGgukb4gtY99imuIeoh8Vr0GSwAlYxPAhqZrpFc=  github.com/quasoft/memstore v0.0.0-20191010062613-2bce066d2b0b/go.mod h1:wTPjTepVu7uJBYgZ0SdWHQlIas582j6cn2jgk4DDdlg=  github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/LICENSE b/vendor/github.com/matttproud/golang_protobuf_extensions/v2/LICENSE index 8dada3eda..8dada3eda 100644 --- a/vendor/github.com/matttproud/golang_protobuf_extensions/LICENSE +++ b/vendor/github.com/matttproud/golang_protobuf_extensions/v2/LICENSE diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/NOTICE b/vendor/github.com/matttproud/golang_protobuf_extensions/v2/NOTICE index 5d8cb5b72..5d8cb5b72 100644 --- a/vendor/github.com/matttproud/golang_protobuf_extensions/NOTICE +++ b/vendor/github.com/matttproud/golang_protobuf_extensions/v2/NOTICE diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/.gitignore b/vendor/github.com/matttproud/golang_protobuf_extensions/v2/pbutil/.gitignore index e16fb946b..e16fb946b 100644 --- a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/.gitignore +++ b/vendor/github.com/matttproud/golang_protobuf_extensions/v2/pbutil/.gitignore diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/Makefile b/vendor/github.com/matttproud/golang_protobuf_extensions/v2/pbutil/Makefile index 81be21437..81be21437 100644 --- a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/Makefile +++ b/vendor/github.com/matttproud/golang_protobuf_extensions/v2/pbutil/Makefile diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/decode.go b/vendor/github.com/matttproud/golang_protobuf_extensions/v2/pbutil/decode.go index 258c0636a..7c08e564f 100644 --- a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/decode.go +++ b/vendor/github.com/matttproud/golang_protobuf_extensions/v2/pbutil/decode.go @@ -19,9 +19,10 @@ import (  	"errors"  	"io" -	"github.com/golang/protobuf/proto" +	"google.golang.org/protobuf/proto"  ) +// TODO: Give error package name prefix in next minor release.  var errInvalidVarint = errors.New("invalid varint32 encountered")  // ReadDelimited decodes a message from the provided length-delimited stream, @@ -36,6 +37,12 @@ var errInvalidVarint = errors.New("invalid varint32 encountered")  // of the stream has been reached in doing so.  In that case, any subsequent  // calls return (0, io.EOF).  func ReadDelimited(r io.Reader, m proto.Message) (n int, err error) { +	// TODO: Consider allowing the caller to specify a decode buffer in the +	// next major version. + +	// TODO: Consider using error wrapping to annotate error state in pass- +	// through cases in the next minor version. +  	// Per AbstractParser#parsePartialDelimitedFrom with  	// CodedInputStream#readRawVarint32.  	var headerBuf [binary.MaxVarintLen32]byte @@ -53,15 +60,14 @@ func ReadDelimited(r io.Reader, m proto.Message) (n int, err error) {  			if err != nil {  				return bytesRead, err  			} -			// A Reader should not return (0, nil), but if it does, -			// it should be treated as no-op (according to the -			// Reader contract). So let's go on... +			// A Reader should not return (0, nil); but if it does, it should +			// be treated as no-op according to the Reader contract.  			continue  		}  		bytesRead += newBytesRead  		// Now present everything read so far to the varint decoder and  		// see if a varint can be decoded already. -		messageLength, varIntBytes = proto.DecodeVarint(headerBuf[:bytesRead]) +		messageLength, varIntBytes = binary.Uvarint(headerBuf[:bytesRead])  	}  	messageBuf := make([]byte, messageLength) diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/doc.go b/vendor/github.com/matttproud/golang_protobuf_extensions/v2/pbutil/doc.go index c318385cb..c318385cb 100644 --- a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/doc.go +++ b/vendor/github.com/matttproud/golang_protobuf_extensions/v2/pbutil/doc.go diff --git a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/encode.go b/vendor/github.com/matttproud/golang_protobuf_extensions/v2/pbutil/encode.go index 8fb59ad22..e58dd9d29 100644 --- a/vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/encode.go +++ b/vendor/github.com/matttproud/golang_protobuf_extensions/v2/pbutil/encode.go @@ -18,7 +18,7 @@ import (  	"encoding/binary"  	"io" -	"github.com/golang/protobuf/proto" +	"google.golang.org/protobuf/proto"  )  // WriteDelimited encodes and dumps a message to the provided writer prefixed @@ -28,6 +28,9 @@ import (  // number of bytes written and any applicable error.  This is roughly  // equivalent to the companion Java API's MessageLite#writeDelimitedTo.  func WriteDelimited(w io.Writer, m proto.Message) (n int, err error) { +	// TODO: Consider allowing the caller to specify an encode buffer in the +	// next major version. +  	buffer, err := proto.Marshal(m)  	if err != nil {  		return 0, err diff --git a/vendor/github.com/prometheus/client_golang/prometheus/histogram.go b/vendor/github.com/prometheus/client_golang/prometheus/histogram.go index 1feba62c6..b5c8bcb39 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/histogram.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/histogram.go @@ -475,6 +475,9 @@ type HistogramOpts struct {  	// now is for testing purposes, by default it's time.Now.  	now func() time.Time + +	// afterFunc is for testing purposes, by default it's time.AfterFunc. +	afterFunc func(time.Duration, func()) *time.Timer  }  // HistogramVecOpts bundles the options to create a HistogramVec metric. @@ -526,7 +529,9 @@ func newHistogram(desc *Desc, opts HistogramOpts, labelValues ...string) Histogr  	if opts.now == nil {  		opts.now = time.Now  	} - +	if opts.afterFunc == nil { +		opts.afterFunc = time.AfterFunc +	}  	h := &histogram{  		desc:                            desc,  		upperBounds:                     opts.Buckets, @@ -536,6 +541,7 @@ func newHistogram(desc *Desc, opts HistogramOpts, labelValues ...string) Histogr  		nativeHistogramMinResetDuration: opts.NativeHistogramMinResetDuration,  		lastResetTime:                   opts.now(),  		now:                             opts.now, +		afterFunc:                       opts.afterFunc,  	}  	if len(h.upperBounds) == 0 && opts.NativeHistogramBucketFactor <= 1 {  		h.upperBounds = DefBuckets @@ -716,9 +722,16 @@ type histogram struct {  	nativeHistogramMinResetDuration time.Duration  	// lastResetTime is protected by mtx. It is also used as created timestamp.  	lastResetTime time.Time +	// resetScheduled is protected by mtx. It is true if a reset is +	// scheduled for a later time (when nativeHistogramMinResetDuration has +	// passed). +	resetScheduled bool  	// now is for testing purposes, by default it's time.Now.  	now func() time.Time + +	// afterFunc is for testing purposes, by default it's time.AfterFunc. +	afterFunc func(time.Duration, func()) *time.Timer  }  func (h *histogram) Desc() *Desc { @@ -874,21 +887,31 @@ func (h *histogram) limitBuckets(counts *histogramCounts, value float64, bucket  	if h.maybeReset(hotCounts, coldCounts, coldIdx, value, bucket) {  		return  	} +	// One of the other strategies will happen. To undo what they will do as +	// soon as enough time has passed to satisfy +	// h.nativeHistogramMinResetDuration, schedule a reset at the right time +	// if we haven't done so already. +	if h.nativeHistogramMinResetDuration > 0 && !h.resetScheduled { +		h.resetScheduled = true +		h.afterFunc(h.nativeHistogramMinResetDuration-h.now().Sub(h.lastResetTime), h.reset) +	} +  	if h.maybeWidenZeroBucket(hotCounts, coldCounts) {  		return  	}  	h.doubleBucketWidth(hotCounts, coldCounts)  } -// maybeReset resets the whole histogram if at least h.nativeHistogramMinResetDuration -// has been passed. It returns true if the histogram has been reset. The caller -// must have locked h.mtx. +// maybeReset resets the whole histogram if at least +// h.nativeHistogramMinResetDuration has been passed. It returns true if the +// histogram has been reset. The caller must have locked h.mtx.  func (h *histogram) maybeReset(  	hot, cold *histogramCounts, coldIdx uint64, value float64, bucket int,  ) bool {  	// We are using the possibly mocked h.now() rather than  	// time.Since(h.lastResetTime) to enable testing. -	if h.nativeHistogramMinResetDuration == 0 || +	if h.nativeHistogramMinResetDuration == 0 || // No reset configured. +		h.resetScheduled || // Do not interefere if a reset is already scheduled.  		h.now().Sub(h.lastResetTime) < h.nativeHistogramMinResetDuration {  		return false  	} @@ -906,6 +929,29 @@ func (h *histogram) maybeReset(  	return true  } +// reset resets the whole histogram. It locks h.mtx itself, i.e. it has to be +// called without having locked h.mtx. +func (h *histogram) reset() { +	h.mtx.Lock() +	defer h.mtx.Unlock() + +	n := atomic.LoadUint64(&h.countAndHotIdx) +	hotIdx := n >> 63 +	coldIdx := (^n) >> 63 +	hot := h.counts[hotIdx] +	cold := h.counts[coldIdx] +	// Completely reset coldCounts. +	h.resetCounts(cold) +	// Make coldCounts the new hot counts while resetting countAndHotIdx. +	n = atomic.SwapUint64(&h.countAndHotIdx, coldIdx<<63) +	count := n & ((1 << 63) - 1) +	waitForCooldown(count, hot) +	// Finally, reset the formerly hot counts, too. +	h.resetCounts(hot) +	h.lastResetTime = h.now() +	h.resetScheduled = false +} +  // maybeWidenZeroBucket widens the zero bucket until it includes the existing  // buckets closest to the zero bucket (which could be two, if an equidistant  // negative and a positive bucket exists, but usually it's only one bucket to be diff --git a/vendor/github.com/prometheus/client_golang/prometheus/labels.go b/vendor/github.com/prometheus/client_golang/prometheus/labels.go index b3c4eca2b..c21911f29 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/labels.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/labels.go @@ -165,6 +165,8 @@ func validateValuesInLabels(labels Labels, expectedNumberOfValues int) error {  func validateLabelValues(vals []string, expectedNumberOfValues int) error {  	if len(vals) != expectedNumberOfValues { +		// The call below makes vals escape, copy them to avoid that. +		vals := append([]string(nil), vals...)  		return fmt.Errorf(  			"%w: expected %d label values but got %d in %#v",  			errInconsistentCardinality, expectedNumberOfValues, diff --git a/vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go b/vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go index c0152cdb6..8c1136cee 100644 --- a/vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go +++ b/vendor/github.com/prometheus/client_golang/prometheus/process_collector_other.go @@ -11,8 +11,8 @@  // See the License for the specific language governing permissions and  // limitations under the License. -//go:build !windows && !js -// +build !windows,!js +//go:build !windows && !js && !wasip1 +// +build !windows,!js,!wasip1  package prometheus diff --git a/vendor/github.com/prometheus/client_golang/prometheus/process_collector_wasip1.go b/vendor/github.com/prometheus/client_golang/prometheus/process_collector_wasip1.go new file mode 100644 index 000000000..d8d9a6d7a --- /dev/null +++ b/vendor/github.com/prometheus/client_golang/prometheus/process_collector_wasip1.go @@ -0,0 +1,26 @@ +// Copyright 2023 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build wasip1 +// +build wasip1 + +package prometheus + +func canCollectProcess() bool { +	return false +} + +func (*processCollector) processCollect(chan<- Metric) { +	// noop on this platform +	return +} diff --git a/vendor/github.com/prometheus/common/expfmt/decode.go b/vendor/github.com/prometheus/common/expfmt/decode.go index 906397815..0ca86a3dc 100644 --- a/vendor/github.com/prometheus/common/expfmt/decode.go +++ b/vendor/github.com/prometheus/common/expfmt/decode.go @@ -22,7 +22,7 @@ import (  	dto "github.com/prometheus/client_model/go" -	"github.com/matttproud/golang_protobuf_extensions/pbutil" +	"github.com/matttproud/golang_protobuf_extensions/v2/pbutil"  	"github.com/prometheus/common/model"  ) diff --git a/vendor/github.com/prometheus/common/expfmt/encode.go b/vendor/github.com/prometheus/common/expfmt/encode.go index 7f611ffaa..ca2140600 100644 --- a/vendor/github.com/prometheus/common/expfmt/encode.go +++ b/vendor/github.com/prometheus/common/expfmt/encode.go @@ -18,7 +18,7 @@ import (  	"io"  	"net/http" -	"github.com/matttproud/golang_protobuf_extensions/pbutil" +	"github.com/matttproud/golang_protobuf_extensions/v2/pbutil"  	"github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg"  	"google.golang.org/protobuf/encoding/prototext" diff --git a/vendor/github.com/prometheus/procfs/Makefile.common b/vendor/github.com/prometheus/procfs/Makefile.common index 0ce7ea461..062a28185 100644 --- a/vendor/github.com/prometheus/procfs/Makefile.common +++ b/vendor/github.com/prometheus/procfs/Makefile.common @@ -61,7 +61,7 @@ PROMU_URL     := https://github.com/prometheus/promu/releases/download/v$(PROMU_  SKIP_GOLANGCI_LINT :=  GOLANGCI_LINT :=  GOLANGCI_LINT_OPTS ?= -GOLANGCI_LINT_VERSION ?= v1.53.3 +GOLANGCI_LINT_VERSION ?= v1.54.2  # golangci-lint only supports linux, darwin and windows platforms on i386/amd64.  # windows isn't included here because of the path separator being different.  ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux darwin)) diff --git a/vendor/github.com/prometheus/procfs/fs_statfs_notype.go b/vendor/github.com/prometheus/procfs/fs_statfs_notype.go index 13d74e395..134767d69 100644 --- a/vendor/github.com/prometheus/procfs/fs_statfs_notype.go +++ b/vendor/github.com/prometheus/procfs/fs_statfs_notype.go @@ -11,8 +11,8 @@  // See the License for the specific language governing permissions and  // limitations under the License. -//go:build netbsd || openbsd || solaris || windows || nostatfs -// +build netbsd openbsd solaris windows nostatfs +//go:build !freebsd && !linux +// +build !freebsd,!linux  package procfs diff --git a/vendor/github.com/prometheus/procfs/fs_statfs_type.go b/vendor/github.com/prometheus/procfs/fs_statfs_type.go index bee151445..80df79c31 100644 --- a/vendor/github.com/prometheus/procfs/fs_statfs_type.go +++ b/vendor/github.com/prometheus/procfs/fs_statfs_type.go @@ -11,8 +11,8 @@  // See the License for the specific language governing permissions and  // limitations under the License. -//go:build !netbsd && !openbsd && !solaris && !windows && !nostatfs -// +build !netbsd,!openbsd,!solaris,!windows,!nostatfs +//go:build freebsd || linux +// +build freebsd linux  package procfs diff --git a/vendor/github.com/prometheus/procfs/mountstats.go b/vendor/github.com/prometheus/procfs/mountstats.go index 852c8c4a0..9d8af6db7 100644 --- a/vendor/github.com/prometheus/procfs/mountstats.go +++ b/vendor/github.com/prometheus/procfs/mountstats.go @@ -44,6 +44,14 @@ const (  	fieldTransport11TCPLen = 13  	fieldTransport11UDPLen = 10 + +	// kernel version >= 4.14 MaxLen +	// See: https://elixir.bootlin.com/linux/v6.4.8/source/net/sunrpc/xprtrdma/xprt_rdma.h#L393 +	fieldTransport11RDMAMaxLen = 28 + +	// kernel version <= 4.2 MinLen +	// See: https://elixir.bootlin.com/linux/v4.2.8/source/net/sunrpc/xprtrdma/xprt_rdma.h#L331 +	fieldTransport11RDMAMinLen = 20  )  // A Mount is a device mount parsed from /proc/[pid]/mountstats. @@ -233,6 +241,33 @@ type NFSTransportStats struct {  	// A running counter, incremented on each request as the current size of the  	// pending queue.  	CumulativePendingQueue uint64 + +	// Stats below only available with stat version 1.1. +	// Transport over RDMA + +	// accessed when sending a call +	ReadChunkCount   uint64 +	WriteChunkCount  uint64 +	ReplyChunkCount  uint64 +	TotalRdmaRequest uint64 + +	// rarely accessed error counters +	PullupCopyCount      uint64 +	HardwayRegisterCount uint64 +	FailedMarshalCount   uint64 +	BadReplyCount        uint64 +	MrsRecovered         uint64 +	MrsOrphaned          uint64 +	MrsAllocated         uint64 +	EmptySendctxQ        uint64 + +	// accessed when receiving a reply +	TotalRdmaReply    uint64 +	FixupCopyCount    uint64 +	ReplyWaitsForSend uint64 +	LocalInvNeeded    uint64 +	NomsgCallCount    uint64 +	BcallCount        uint64  }  // parseMountStats parses a /proc/[pid]/mountstats file and returns a slice @@ -587,14 +622,17 @@ func parseNFSTransportStats(ss []string, statVersion string) (*NFSTransportStats  			expectedLength = fieldTransport11TCPLen  		} else if protocol == "udp" {  			expectedLength = fieldTransport11UDPLen +		} else if protocol == "rdma" { +			expectedLength = fieldTransport11RDMAMinLen  		} else {  			return nil, fmt.Errorf("%w: invalid NFS protocol \"%s\" in stats 1.1 statement: %v", ErrFileParse, protocol, ss)  		} -		if len(ss) != expectedLength { -			return nil, fmt.Errorf("%w: invalid NFS transport stats 1.1 statement: %v", ErrFileParse, ss) +		if (len(ss) != expectedLength && (protocol == "tcp" || protocol == "udp")) || +			(protocol == "rdma" && len(ss) < expectedLength) { +			return nil, fmt.Errorf("%w: invalid NFS transport stats 1.1 statement: %v, protocol: %v", ErrFileParse, ss, protocol)  		}  	default: -		return nil, fmt.Errorf("%s: Unrecognized NFS transport stats version: %q", ErrFileParse, statVersion) +		return nil, fmt.Errorf("%s: Unrecognized NFS transport stats version: %q, protocol: %v", ErrFileParse, statVersion, protocol)  	}  	// Allocate enough for v1.1 stats since zero value for v1.1 stats will be okay @@ -604,7 +642,9 @@ func parseNFSTransportStats(ss []string, statVersion string) (*NFSTransportStats  	// Note: slice length must be set to length of v1.1 stats to avoid a panic when  	// only v1.0 stats are present.  	// See: https://github.com/prometheus/node_exporter/issues/571. -	ns := make([]uint64, fieldTransport11TCPLen) +	// +	// Note: NFS Over RDMA slice length is fieldTransport11RDMAMaxLen +	ns := make([]uint64, fieldTransport11RDMAMaxLen+3)  	for i, s := range ss {  		n, err := strconv.ParseUint(s, 10, 64)  		if err != nil { @@ -622,9 +662,14 @@ func parseNFSTransportStats(ss []string, statVersion string) (*NFSTransportStats  	// we set them to 0 here.  	if protocol == "udp" {  		ns = append(ns[:2], append(make([]uint64, 3), ns[2:]...)...) +	} else if protocol == "tcp" { +		ns = append(ns[:fieldTransport11TCPLen], make([]uint64, fieldTransport11RDMAMaxLen-fieldTransport11TCPLen+3)...) +	} else if protocol == "rdma" { +		ns = append(ns[:fieldTransport10TCPLen], append(make([]uint64, 3), ns[fieldTransport10TCPLen:]...)...)  	}  	return &NFSTransportStats{ +		// NFS xprt over tcp or udp  		Protocol:                 protocol,  		Port:                     ns[0],  		Bind:                     ns[1], @@ -636,8 +681,32 @@ func parseNFSTransportStats(ss []string, statVersion string) (*NFSTransportStats  		BadTransactionIDs:        ns[7],  		CumulativeActiveRequests: ns[8],  		CumulativeBacklog:        ns[9], -		MaximumRPCSlotsUsed:      ns[10], -		CumulativeSendingQueue:   ns[11], -		CumulativePendingQueue:   ns[12], + +		// NFS xprt over tcp or udp +		// And statVersion 1.1 +		MaximumRPCSlotsUsed:    ns[10], +		CumulativeSendingQueue: ns[11], +		CumulativePendingQueue: ns[12], + +		// NFS xprt over rdma +		// And stat Version 1.1 +		ReadChunkCount:       ns[13], +		WriteChunkCount:      ns[14], +		ReplyChunkCount:      ns[15], +		TotalRdmaRequest:     ns[16], +		PullupCopyCount:      ns[17], +		HardwayRegisterCount: ns[18], +		FailedMarshalCount:   ns[19], +		BadReplyCount:        ns[20], +		MrsRecovered:         ns[21], +		MrsOrphaned:          ns[22], +		MrsAllocated:         ns[23], +		EmptySendctxQ:        ns[24], +		TotalRdmaReply:       ns[25], +		FixupCopyCount:       ns[26], +		ReplyWaitsForSend:    ns[27], +		LocalInvNeeded:       ns[28], +		NomsgCallCount:       ns[29], +		BcallCount:           ns[30],  	}, nil  } diff --git a/vendor/github.com/prometheus/procfs/proc_fdinfo.go b/vendor/github.com/prometheus/procfs/proc_fdinfo.go index 4b7933e4f..fa761b352 100644 --- a/vendor/github.com/prometheus/procfs/proc_fdinfo.go +++ b/vendor/github.com/prometheus/procfs/proc_fdinfo.go @@ -26,6 +26,7 @@ var (  	rPos          = regexp.MustCompile(`^pos:\s+(\d+)$`)  	rFlags        = regexp.MustCompile(`^flags:\s+(\d+)$`)  	rMntID        = regexp.MustCompile(`^mnt_id:\s+(\d+)$`) +	rIno          = regexp.MustCompile(`^ino:\s+(\d+)$`)  	rInotify      = regexp.MustCompile(`^inotify`)  	rInotifyParts = regexp.MustCompile(`^inotify\s+wd:([0-9a-f]+)\s+ino:([0-9a-f]+)\s+sdev:([0-9a-f]+)(?:\s+mask:([0-9a-f]+))?`)  ) @@ -40,6 +41,8 @@ type ProcFDInfo struct {  	Flags string  	// Mount point ID  	MntID string +	// Inode number +	Ino string  	// List of inotify lines (structured) in the fdinfo file (kernel 3.8+ only)  	InotifyInfos []InotifyInfo  } @@ -51,7 +54,7 @@ func (p Proc) FDInfo(fd string) (*ProcFDInfo, error) {  		return nil, err  	} -	var text, pos, flags, mntid string +	var text, pos, flags, mntid, ino string  	var inotify []InotifyInfo  	scanner := bufio.NewScanner(bytes.NewReader(data)) @@ -63,6 +66,8 @@ func (p Proc) FDInfo(fd string) (*ProcFDInfo, error) {  			flags = rFlags.FindStringSubmatch(text)[1]  		} else if rMntID.MatchString(text) {  			mntid = rMntID.FindStringSubmatch(text)[1] +		} else if rIno.MatchString(text) { +			ino = rIno.FindStringSubmatch(text)[1]  		} else if rInotify.MatchString(text) {  			newInotify, err := parseInotifyInfo(text)  			if err != nil { @@ -77,6 +82,7 @@ func (p Proc) FDInfo(fd string) (*ProcFDInfo, error) {  		Pos:          pos,  		Flags:        flags,  		MntID:        mntid, +		Ino:          ino,  		InotifyInfos: inotify,  	} diff --git a/vendor/github.com/prometheus/procfs/proc_maps.go b/vendor/github.com/prometheus/procfs/proc_maps.go index 727549a13..7e75c286b 100644 --- a/vendor/github.com/prometheus/procfs/proc_maps.go +++ b/vendor/github.com/prometheus/procfs/proc_maps.go @@ -63,17 +63,17 @@ type ProcMap struct {  // parseDevice parses the device token of a line and converts it to a dev_t  // (mkdev) like structure.  func parseDevice(s string) (uint64, error) { -	toks := strings.Split(s, ":") -	if len(toks) < 2 { -		return 0, fmt.Errorf("%w: unexpected number of fields, expected: 2, got: %q", ErrFileParse, len(toks)) +	i := strings.Index(s, ":") +	if i == -1 { +		return 0, fmt.Errorf("%w: expected separator `:` in %s", ErrFileParse, s)  	} -	major, err := strconv.ParseUint(toks[0], 16, 0) +	major, err := strconv.ParseUint(s[0:i], 16, 0)  	if err != nil {  		return 0, err  	} -	minor, err := strconv.ParseUint(toks[1], 16, 0) +	minor, err := strconv.ParseUint(s[i+1:], 16, 0)  	if err != nil {  		return 0, err  	} @@ -93,17 +93,17 @@ func parseAddress(s string) (uintptr, error) {  // parseAddresses parses the start-end address.  func parseAddresses(s string) (uintptr, uintptr, error) { -	toks := strings.Split(s, "-") -	if len(toks) < 2 { -		return 0, 0, fmt.Errorf("%w: invalid address", ErrFileParse) +	idx := strings.Index(s, "-") +	if idx == -1 { +		return 0, 0, fmt.Errorf("%w: expected separator `-` in %s", ErrFileParse, s)  	} -	saddr, err := parseAddress(toks[0]) +	saddr, err := parseAddress(s[0:idx])  	if err != nil {  		return 0, 0, err  	} -	eaddr, err := parseAddress(toks[1]) +	eaddr, err := parseAddress(s[idx+1:])  	if err != nil {  		return 0, 0, err  	} diff --git a/vendor/github.com/prometheus/procfs/proc_status.go b/vendor/github.com/prometheus/procfs/proc_status.go index c055d075d..46307f572 100644 --- a/vendor/github.com/prometheus/procfs/proc_status.go +++ b/vendor/github.com/prometheus/procfs/proc_status.go @@ -23,7 +23,7 @@ import (  )  // ProcStatus provides status information about the process, -// read from /proc/[pid]/stat. +// read from /proc/[pid]/status.  type ProcStatus struct {  	// The process ID.  	PID int @@ -32,6 +32,8 @@ type ProcStatus struct {  	// Thread group ID.  	TGID int +	// List of Pid namespace. +	NSpids []uint64  	// Peak virtual memory size.  	VmPeak uint64 // nolint:revive @@ -127,6 +129,8 @@ func (s *ProcStatus) fillStatus(k string, vString string, vUint uint64, vUintByt  		copy(s.UIDs[:], strings.Split(vString, "\t"))  	case "Gid":  		copy(s.GIDs[:], strings.Split(vString, "\t")) +	case "NSpid": +		s.NSpids = calcNSPidsList(vString)  	case "VmPeak":  		s.VmPeak = vUintBytes  	case "VmSize": @@ -200,3 +204,18 @@ func calcCpusAllowedList(cpuString string) []uint64 {  	sort.Slice(g, func(i, j int) bool { return g[i] < g[j] })  	return g  } + +func calcNSPidsList(nspidsString string) []uint64 { +	s := strings.Split(nspidsString, " ") +	var nspids []uint64 + +	for _, nspid := range s { +		nspid, _ := strconv.ParseUint(nspid, 10, 64) +		if nspid == 0 { +			continue +		} +		nspids = append(nspids, nspid) +	} + +	return nspids +} diff --git a/vendor/modules.txt b/vendor/modules.txt index 6ec48a1f9..4f3edf0a3 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -369,9 +369,9 @@ github.com/magiconair/properties  # github.com/mattn/go-isatty v0.0.19  ## explicit; go 1.15  github.com/mattn/go-isatty -# github.com/matttproud/golang_protobuf_extensions v1.0.4 -## explicit; go 1.9 -github.com/matttproud/golang_protobuf_extensions/pbutil +# github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 +## explicit; go 1.19 +github.com/matttproud/golang_protobuf_extensions/v2/pbutil  # github.com/microcosm-cc/bluemonday v1.0.26  ## explicit; go 1.21  github.com/microcosm-cc/bluemonday @@ -426,7 +426,7 @@ github.com/pkg/errors  # github.com/pmezard/go-difflib v1.0.0  ## explicit  github.com/pmezard/go-difflib/difflib -# github.com/prometheus/client_golang v1.17.0 +# github.com/prometheus/client_golang v1.18.0  ## explicit; go 1.19  github.com/prometheus/client_golang/prometheus  github.com/prometheus/client_golang/prometheus/internal @@ -434,12 +434,12 @@ github.com/prometheus/client_golang/prometheus/promhttp  # github.com/prometheus/client_model v0.5.0  ## explicit; go 1.19  github.com/prometheus/client_model/go -# github.com/prometheus/common v0.44.0 -## explicit; go 1.18 +# github.com/prometheus/common v0.45.0 +## explicit; go 1.20  github.com/prometheus/common/expfmt  github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg  github.com/prometheus/common/model -# github.com/prometheus/procfs v0.11.1 +# github.com/prometheus/procfs v0.12.0  ## explicit; go 1.19  github.com/prometheus/procfs  github.com/prometheus/procfs/internal/fs  | 
