Merge pull request #16434 from machine424/3.3.1

Prepare 3.3.1
release-3.3 v0.303.1
Ayoub Mrini 2 months ago committed by GitHub
commit 3dcecabff6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 5
      CHANGELOG.md
  2. 2
      VERSION
  3. 61
      cmd/prometheus/main.go
  4. 1
      cmd/prometheus/main_test.go
  5. 1
      cmd/promtool/main.go
  6. 1
      cmd/promtool/main_test.go
  7. 1
      config/config.go
  8. 9
      config/config_test.go
  9. 2
      go.mod
  10. 4
      go.sum
  11. 2
      model/labels/labels_common.go
  12. 1
      model/labels/labels_test.go
  13. 1
      model/relabel/relabel.go
  14. 3
      model/textparse/openmetricsparse_test.go
  15. 3
      model/textparse/promparse_test.go
  16. 1
      promql/parser/parse_test.go
  17. 1
      promql/parser/printer_test.go
  18. 1
      promql/promqltest/test.go
  19. 1
      scrape/manager_test.go
  20. 5
      scrape/scrape_test.go
  21. 3
      storage/remote/codec_test.go
  22. 2
      storage/remote/write_handler.go
  23. 2
      util/logging/file.go
  24. 9
      web/api/v1/api_test.go
  25. 4
      web/ui/mantine-ui/package.json
  26. 4
      web/ui/module/codemirror-promql/package.json
  27. 2
      web/ui/module/lezer-promql/package.json
  28. 14
      web/ui/package-lock.json
  29. 2
      web/ui/package.json

@ -2,6 +2,11 @@
## unreleased ## unreleased
## 3.3.1 / 2025-05-02
* [BUGFIX] Azure SD: Fix panic on malformed log message. #16434 #16210
* [BUGFIX] Config: Update GOGC before loading TSDB. #16491
## 3.3.0 / 2025-04-15 ## 3.3.0 / 2025-04-15
* [FEATURE] PromQL: Implement `idelta()` and `irate()` for native histograms. #15853 * [FEATURE] PromQL: Implement `idelta()` and `irate()` for native histograms. #15853

@ -1 +1 @@
3.3.0 3.3.1

@ -141,6 +141,7 @@ var (
func init() { func init() {
// This can be removed when the default validation scheme in common is updated. // This can be removed when the default validation scheme in common is updated.
//nolint:staticcheck
model.NameValidationScheme = model.UTF8Validation model.NameValidationScheme = model.UTF8Validation
prometheus.MustRegister(versioncollector.NewCollector(strings.ReplaceAll(appName, "-", "_"))) prometheus.MustRegister(versioncollector.NewCollector(strings.ReplaceAll(appName, "-", "_")))
@ -617,6 +618,31 @@ func main() {
cfg.tsdb.OutOfOrderTimeWindow = cfgFile.StorageConfig.TSDBConfig.OutOfOrderTimeWindow cfg.tsdb.OutOfOrderTimeWindow = cfgFile.StorageConfig.TSDBConfig.OutOfOrderTimeWindow
} }
// Set Go runtime parameters before we get too far into initialization.
updateGoGC(cfgFile, logger)
if cfg.maxprocsEnable {
l := func(format string, a ...interface{}) {
logger.Info(fmt.Sprintf(strings.TrimPrefix(format, "maxprocs: "), a...), "component", "automaxprocs")
}
if _, err := maxprocs.Set(maxprocs.Logger(l)); err != nil {
logger.Warn("Failed to set GOMAXPROCS automatically", "component", "automaxprocs", "err", err)
}
}
if cfg.memlimitEnable {
if _, err := memlimit.SetGoMemLimitWithOpts(
memlimit.WithRatio(cfg.memlimitRatio),
memlimit.WithProvider(
memlimit.ApplyFallback(
memlimit.FromCgroup,
memlimit.FromSystem,
),
),
); err != nil {
logger.Warn("automemlimit", "msg", "Failed to set GOMEMLIMIT automatically", "err", err)
}
}
// Now that the validity of the config is established, set the config // Now that the validity of the config is established, set the config
// success metrics accordingly, although the config isn't really loaded // success metrics accordingly, although the config isn't really loaded
// yet. This will happen later (including setting these metrics again), // yet. This will happen later (including setting these metrics again),
@ -763,29 +789,6 @@ func main() {
ruleManager *rules.Manager ruleManager *rules.Manager
) )
if cfg.maxprocsEnable {
l := func(format string, a ...interface{}) {
logger.Info(fmt.Sprintf(strings.TrimPrefix(format, "maxprocs: "), a...), "component", "automaxprocs")
}
if _, err := maxprocs.Set(maxprocs.Logger(l)); err != nil {
logger.Warn("Failed to set GOMAXPROCS automatically", "component", "automaxprocs", "err", err)
}
}
if cfg.memlimitEnable {
if _, err := memlimit.SetGoMemLimitWithOpts(
memlimit.WithRatio(cfg.memlimitRatio),
memlimit.WithProvider(
memlimit.ApplyFallback(
memlimit.FromCgroup,
memlimit.FromSystem,
),
),
); err != nil {
logger.Warn("automemlimit", "msg", "Failed to set GOMEMLIMIT automatically", "err", err)
}
}
if !agentMode { if !agentMode {
opts := promql.EngineOpts{ opts := promql.EngineOpts{
Logger: logger.With("component", "query engine"), Logger: logger.With("component", "query engine"),
@ -1471,6 +1474,14 @@ func reloadConfig(filename string, enableExemplarStorage bool, logger *slog.Logg
return fmt.Errorf("one or more errors occurred while applying the new configuration (--config.file=%q)", filename) return fmt.Errorf("one or more errors occurred while applying the new configuration (--config.file=%q)", filename)
} }
updateGoGC(conf, logger)
noStepSuqueryInterval.Set(conf.GlobalConfig.EvaluationInterval)
timingsLogger.Info("Completed loading of configuration file", "filename", filename, "totalDuration", time.Since(start))
return nil
}
func updateGoGC(conf *config.Config, logger *slog.Logger) {
oldGoGC := debug.SetGCPercent(conf.Runtime.GoGC) oldGoGC := debug.SetGCPercent(conf.Runtime.GoGC)
if oldGoGC != conf.Runtime.GoGC { if oldGoGC != conf.Runtime.GoGC {
logger.Info("updated GOGC", "old", oldGoGC, "new", conf.Runtime.GoGC) logger.Info("updated GOGC", "old", oldGoGC, "new", conf.Runtime.GoGC)
@ -1481,10 +1492,6 @@ func reloadConfig(filename string, enableExemplarStorage bool, logger *slog.Logg
} else { } else {
os.Setenv("GOGC", "off") os.Setenv("GOGC", "off")
} }
noStepSuqueryInterval.Set(conf.GlobalConfig.EvaluationInterval)
timingsLogger.Info("Completed loading of configuration file", "filename", filename, "totalDuration", time.Since(start))
return nil
} }
func startsOrEndsWithQuote(s string) bool { func startsOrEndsWithQuote(s string) bool {

@ -45,6 +45,7 @@ import (
func init() { func init() {
// This can be removed when the default validation scheme in common is updated. // This can be removed when the default validation scheme in common is updated.
//nolint:staticcheck
model.NameValidationScheme = model.UTF8Validation model.NameValidationScheme = model.UTF8Validation
} }

@ -64,6 +64,7 @@ import (
func init() { func init() {
// This can be removed when the default validation scheme in common is updated. // This can be removed when the default validation scheme in common is updated.
//nolint:staticcheck
model.NameValidationScheme = model.UTF8Validation model.NameValidationScheme = model.UTF8Validation
} }

@ -41,6 +41,7 @@ import (
func init() { func init() {
// This can be removed when the default validation scheme in common is updated. // This can be removed when the default validation scheme in common is updated.
//nolint:staticcheck
model.NameValidationScheme = model.UTF8Validation model.NameValidationScheme = model.UTF8Validation
} }

@ -840,6 +840,7 @@ func (c *ScrapeConfig) Validate(globalConfig GlobalConfig) error {
switch globalConfig.MetricNameValidationScheme { switch globalConfig.MetricNameValidationScheme {
case LegacyValidationConfig: case LegacyValidationConfig:
case "", UTF8ValidationConfig: case "", UTF8ValidationConfig:
//nolint:staticcheck
if model.NameValidationScheme != model.UTF8Validation { if model.NameValidationScheme != model.UTF8Validation {
panic("utf8 name validation requested but model.NameValidationScheme is not set to UTF8") panic("utf8 name validation requested but model.NameValidationScheme is not set to UTF8")
} }

@ -64,6 +64,7 @@ import (
func init() { func init() {
// This can be removed when the default validation scheme in common is updated. // This can be removed when the default validation scheme in common is updated.
//nolint:staticcheck
model.NameValidationScheme = model.UTF8Validation model.NameValidationScheme = model.UTF8Validation
} }
@ -2181,8 +2182,10 @@ var expectedErrors = []struct {
} }
func TestBadConfigs(t *testing.T) { func TestBadConfigs(t *testing.T) {
//nolint:staticcheck
model.NameValidationScheme = model.LegacyValidation model.NameValidationScheme = model.LegacyValidation
defer func() { defer func() {
//nolint:staticcheck
model.NameValidationScheme = model.UTF8Validation model.NameValidationScheme = model.UTF8Validation
}() }()
for _, ee := range expectedErrors { for _, ee := range expectedErrors {
@ -2193,8 +2196,10 @@ func TestBadConfigs(t *testing.T) {
} }
func TestBadStaticConfigsJSON(t *testing.T) { func TestBadStaticConfigsJSON(t *testing.T) {
//nolint:staticcheck
model.NameValidationScheme = model.LegacyValidation model.NameValidationScheme = model.LegacyValidation
defer func() { defer func() {
//nolint:staticcheck
model.NameValidationScheme = model.UTF8Validation model.NameValidationScheme = model.UTF8Validation
}() }()
content, err := os.ReadFile("testdata/static_config.bad.json") content, err := os.ReadFile("testdata/static_config.bad.json")
@ -2205,8 +2210,10 @@ func TestBadStaticConfigsJSON(t *testing.T) {
} }
func TestBadStaticConfigsYML(t *testing.T) { func TestBadStaticConfigsYML(t *testing.T) {
//nolint:staticcheck
model.NameValidationScheme = model.LegacyValidation model.NameValidationScheme = model.LegacyValidation
defer func() { defer func() {
//nolint:staticcheck
model.NameValidationScheme = model.UTF8Validation model.NameValidationScheme = model.UTF8Validation
}() }()
content, err := os.ReadFile("testdata/static_config.bad.yml") content, err := os.ReadFile("testdata/static_config.bad.yml")
@ -2453,8 +2460,10 @@ func TestScrapeConfigDisableCompression(t *testing.T) {
} }
func TestScrapeConfigNameValidationSettings(t *testing.T) { func TestScrapeConfigNameValidationSettings(t *testing.T) {
//nolint:staticcheck
model.NameValidationScheme = model.UTF8Validation model.NameValidationScheme = model.UTF8Validation
defer func() { defer func() {
//nolint:staticcheck
model.NameValidationScheme = model.LegacyValidation model.NameValidationScheme = model.LegacyValidation
}() }()

@ -53,7 +53,7 @@ require (
github.com/prometheus/alertmanager v0.28.0 github.com/prometheus/alertmanager v0.28.0
github.com/prometheus/client_golang v1.21.0-rc.0 github.com/prometheus/client_golang v1.21.0-rc.0
github.com/prometheus/client_model v0.6.1 github.com/prometheus/client_model v0.6.1
github.com/prometheus/common v0.62.0 github.com/prometheus/common v0.63.0
github.com/prometheus/common/assets v0.2.0 github.com/prometheus/common/assets v0.2.0
github.com/prometheus/exporter-toolkit v0.14.0 github.com/prometheus/exporter-toolkit v0.14.0
github.com/prometheus/sigv4 v0.1.2 github.com/prometheus/sigv4 v0.1.2

@ -441,8 +441,8 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k=
github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18=
github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/5AahrSrfM= github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/5AahrSrfM=
github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI=
github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg= github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg=

@ -104,6 +104,7 @@ func (ls Labels) IsValid(validationScheme model.ValidationScheme) bool {
if l.Name == model.MetricNameLabel { if l.Name == model.MetricNameLabel {
// If the default validation scheme has been overridden with legacy mode, // If the default validation scheme has been overridden with legacy mode,
// we need to call the special legacy validation checker. // we need to call the special legacy validation checker.
//nolint:staticcheck
if validationScheme == model.LegacyValidation && model.NameValidationScheme == model.UTF8Validation && !model.IsValidLegacyMetricName(string(model.LabelValue(l.Value))) { if validationScheme == model.LegacyValidation && model.NameValidationScheme == model.UTF8Validation && !model.IsValidLegacyMetricName(string(model.LabelValue(l.Value))) {
return strconv.ErrSyntax return strconv.ErrSyntax
} }
@ -111,6 +112,7 @@ func (ls Labels) IsValid(validationScheme model.ValidationScheme) bool {
return strconv.ErrSyntax return strconv.ErrSyntax
} }
} }
//nolint:staticcheck
if validationScheme == model.LegacyValidation && model.NameValidationScheme == model.UTF8Validation { if validationScheme == model.LegacyValidation && model.NameValidationScheme == model.UTF8Validation {
if !model.LabelName(l.Name).IsValidLegacy() || !model.LabelValue(l.Value).IsValid() { if !model.LabelName(l.Name).IsValidLegacy() || !model.LabelValue(l.Value).IsValid() {
return strconv.ErrSyntax return strconv.ErrSyntax

@ -352,6 +352,7 @@ func TestLabels_ValidationModes(t *testing.T) {
expected: false, expected: false,
}, },
} { } {
//nolint:staticcheck
model.NameValidationScheme = test.globalMode model.NameValidationScheme = test.globalMode
require.Equal(t, test.expected, test.input.IsValid(test.callMode)) require.Equal(t, test.expected, test.input.IsValid(test.callMode))
} }

@ -135,6 +135,7 @@ func (c *Config) Validate() error {
// Design escaping mechanism to allow that, once valid use case appears. // Design escaping mechanism to allow that, once valid use case appears.
return model.LabelName(value).IsValid() return model.LabelName(value).IsValid()
} }
//nolint:staticcheck
if model.NameValidationScheme == model.LegacyValidation { if model.NameValidationScheme == model.LegacyValidation {
isValidLabelNameWithRegexVarFn = func(value string) bool { isValidLabelNameWithRegexVarFn = func(value string) bool {
return relabelTargetLegacy.MatchString(value) return relabelTargetLegacy.MatchString(value)

@ -469,9 +469,12 @@ foobar{quantile="0.99"} 150.1`
} }
func TestUTF8OpenMetricsParse(t *testing.T) { func TestUTF8OpenMetricsParse(t *testing.T) {
//nolint:staticcheck
oldValidationScheme := model.NameValidationScheme oldValidationScheme := model.NameValidationScheme
//nolint:staticcheck
model.NameValidationScheme = model.UTF8Validation model.NameValidationScheme = model.UTF8Validation
defer func() { defer func() {
//nolint:staticcheck
model.NameValidationScheme = oldValidationScheme model.NameValidationScheme = oldValidationScheme
}() }()

@ -205,9 +205,12 @@ testmetric{le="10"} 1`
} }
func TestUTF8PromParse(t *testing.T) { func TestUTF8PromParse(t *testing.T) {
//nolint:staticcheck
oldValidationScheme := model.NameValidationScheme oldValidationScheme := model.NameValidationScheme
//nolint:staticcheck
model.NameValidationScheme = model.UTF8Validation model.NameValidationScheme = model.UTF8Validation
defer func() { defer func() {
//nolint:staticcheck
model.NameValidationScheme = oldValidationScheme model.NameValidationScheme = oldValidationScheme
}() }()

@ -3970,6 +3970,7 @@ func TestParseExpressions(t *testing.T) {
EnableExperimentalFunctions = false EnableExperimentalFunctions = false
}) })
//nolint:staticcheck
model.NameValidationScheme = model.UTF8Validation model.NameValidationScheme = model.UTF8Validation
for _, test := range testExpr { for _, test := range testExpr {
t.Run(readable(test.input), func(t *testing.T) { t.Run(readable(test.input), func(t *testing.T) {

@ -170,6 +170,7 @@ func TestExprString(t *testing.T) {
}, },
} }
//nolint:staticcheck
model.NameValidationScheme = model.UTF8Validation model.NameValidationScheme = model.UTF8Validation
for _, test := range inputs { for _, test := range inputs {

@ -58,6 +58,7 @@ const (
) )
func init() { func init() {
//nolint:staticcheck
model.NameValidationScheme = model.UTF8Validation model.NameValidationScheme = model.UTF8Validation
} }

@ -57,6 +57,7 @@ import (
func init() { func init() {
// This can be removed when the default validation scheme in common is updated. // This can be removed when the default validation scheme in common is updated.
//nolint:staticcheck
model.NameValidationScheme = model.UTF8Validation model.NameValidationScheme = model.UTF8Validation
} }

@ -1325,6 +1325,7 @@ func TestScrapeLoopSeriesAdded(t *testing.T) {
} }
func TestScrapeLoopFailWithInvalidLabelsAfterRelabel(t *testing.T) { func TestScrapeLoopFailWithInvalidLabelsAfterRelabel(t *testing.T) {
//nolint:staticcheck
model.NameValidationScheme = model.LegacyValidation model.NameValidationScheme = model.LegacyValidation
s := teststorage.New(t) s := teststorage.New(t)
defer s.Close() defer s.Close()
@ -1357,8 +1358,10 @@ func TestScrapeLoopFailWithInvalidLabelsAfterRelabel(t *testing.T) {
func TestScrapeLoopFailLegacyUnderUTF8(t *testing.T) { func TestScrapeLoopFailLegacyUnderUTF8(t *testing.T) {
// Test that scrapes fail when default validation is utf8 but scrape config is // Test that scrapes fail when default validation is utf8 but scrape config is
// legacy. // legacy.
//nolint:staticcheck
model.NameValidationScheme = model.UTF8Validation model.NameValidationScheme = model.UTF8Validation
defer func() { defer func() {
//nolint:staticcheck
model.NameValidationScheme = model.LegacyValidation model.NameValidationScheme = model.LegacyValidation
}() }()
s := teststorage.New(t) s := teststorage.New(t)
@ -3885,7 +3888,9 @@ func TestScrapeReportLimit(t *testing.T) {
func TestScrapeUTF8(t *testing.T) { func TestScrapeUTF8(t *testing.T) {
s := teststorage.New(t) s := teststorage.New(t)
defer s.Close() defer s.Close()
//nolint:staticcheck
model.NameValidationScheme = model.UTF8Validation model.NameValidationScheme = model.UTF8Validation
//nolint:staticcheck
t.Cleanup(func() { model.NameValidationScheme = model.LegacyValidation }) t.Cleanup(func() { model.NameValidationScheme = model.LegacyValidation })
cfg := &config.ScrapeConfig{ cfg := &config.ScrapeConfig{

@ -165,9 +165,12 @@ func TestWriteV2RequestFixture(t *testing.T) {
} }
func TestValidateLabelsAndMetricName(t *testing.T) { func TestValidateLabelsAndMetricName(t *testing.T) {
//nolint:staticcheck
oldScheme := model.NameValidationScheme oldScheme := model.NameValidationScheme
//nolint:staticcheck
model.NameValidationScheme = model.LegacyValidation model.NameValidationScheme = model.LegacyValidation
defer func() { defer func() {
//nolint:staticcheck
model.NameValidationScheme = oldScheme model.NameValidationScheme = oldScheme
}() }()
tests := []struct { tests := []struct {

@ -250,6 +250,7 @@ func (h *writeHandler) write(ctx context.Context, req *prompb.WriteRequest) (err
// TODO(bwplotka): Even as per 1.0 spec, this should be a 400 error, while other samples are // TODO(bwplotka): Even as per 1.0 spec, this should be a 400 error, while other samples are
// potentially written. Perhaps unify with fixed writeV2 implementation a bit. // potentially written. Perhaps unify with fixed writeV2 implementation a bit.
//nolint:staticcheck
if !ls.Has(labels.MetricName) || !ls.IsValid(model.NameValidationScheme) { if !ls.Has(labels.MetricName) || !ls.IsValid(model.NameValidationScheme) {
h.logger.Warn("Invalid metric names or labels", "got", ls.String()) h.logger.Warn("Invalid metric names or labels", "got", ls.String())
samplesWithInvalidLabels++ samplesWithInvalidLabels++
@ -391,6 +392,7 @@ func (h *writeHandler) appendV2(app storage.Appender, req *writev2.Request, rs *
// Validate series labels early. // Validate series labels early.
// NOTE(bwplotka): While spec allows UTF-8, Prometheus Receiver may impose // NOTE(bwplotka): While spec allows UTF-8, Prometheus Receiver may impose
// specific limits and follow https://prometheus.io/docs/specs/remote_write_spec_2_0/#invalid-samples case. // specific limits and follow https://prometheus.io/docs/specs/remote_write_spec_2_0/#invalid-samples case.
//nolint:staticcheck
if !ls.Has(labels.MetricName) || !ls.IsValid(model.NameValidationScheme) { if !ls.Has(labels.MetricName) || !ls.IsValid(model.NameValidationScheme) {
badRequestErrs = append(badRequestErrs, fmt.Errorf("invalid metric name or labels, got %v", ls.String())) badRequestErrs = append(badRequestErrs, fmt.Errorf("invalid metric name or labels, got %v", ls.String()))
samplesWithInvalidLabels += len(ts.Samples) + len(ts.Histograms) samplesWithInvalidLabels += len(ts.Samples) + len(ts.Histograms)

@ -45,7 +45,7 @@ func NewJSONFileLogger(s string) (*JSONFileLogger, error) {
return nil, fmt.Errorf("can't create json log file: %w", err) return nil, fmt.Errorf("can't create json log file: %w", err)
} }
jsonFmt := &promslog.AllowedFormat{} jsonFmt := promslog.NewFormat()
_ = jsonFmt.Set("json") _ = jsonFmt.Set("json")
return &JSONFileLogger{ return &JSONFileLogger{
handler: promslog.New(&promslog.Config{Format: jsonFmt, Writer: f}).Handler(), handler: promslog.New(&promslog.Config{Format: jsonFmt, Writer: f}).Handler(),

@ -480,15 +480,15 @@ func TestEndpoints(t *testing.T) {
u, err := url.Parse(server.URL) u, err := url.Parse(server.URL)
require.NoError(t, err) require.NoError(t, err)
al := promslog.AllowedLevel{} al := promslog.NewLevel()
require.NoError(t, al.Set("debug")) require.NoError(t, al.Set("debug"))
af := promslog.AllowedFormat{} af := promslog.NewFormat()
require.NoError(t, af.Set("logfmt")) require.NoError(t, af.Set("logfmt"))
promslogConfig := promslog.Config{ promslogConfig := promslog.Config{
Level: &al, Level: al,
Format: &af, Format: af,
} }
dbDir := t.TempDir() dbDir := t.TempDir()
@ -3706,6 +3706,7 @@ func testEndpoints(t *testing.T, api *API, tr *testTargetRetriever, es storage.E
ctx = route.WithParam(ctx, p, v) ctx = route.WithParam(ctx, p, v)
} }
//nolint:staticcheck
model.NameValidationScheme = test.nameValidationScheme model.NameValidationScheme = test.nameValidationScheme
req, err := request(method, test.query) req, err := request(method, test.query)

@ -1,7 +1,7 @@
{ {
"name": "@prometheus-io/mantine-ui", "name": "@prometheus-io/mantine-ui",
"private": true, "private": true,
"version": "0.303.0", "version": "0.303.1",
"type": "module", "type": "module",
"scripts": { "scripts": {
"start": "vite", "start": "vite",
@ -28,7 +28,7 @@
"@microsoft/fetch-event-source": "^2.0.1", "@microsoft/fetch-event-source": "^2.0.1",
"@nexucis/fuzzy": "^0.5.1", "@nexucis/fuzzy": "^0.5.1",
"@nexucis/kvsearch": "^0.9.1", "@nexucis/kvsearch": "^0.9.1",
"@prometheus-io/codemirror-promql": "0.303.0", "@prometheus-io/codemirror-promql": "0.303.1",
"@reduxjs/toolkit": "^2.5.0", "@reduxjs/toolkit": "^2.5.0",
"@tabler/icons-react": "^3.28.1", "@tabler/icons-react": "^3.28.1",
"@tanstack/react-query": "^5.67.1", "@tanstack/react-query": "^5.67.1",

@ -1,6 +1,6 @@
{ {
"name": "@prometheus-io/codemirror-promql", "name": "@prometheus-io/codemirror-promql",
"version": "0.303.0", "version": "0.303.1",
"description": "a CodeMirror mode for the PromQL language", "description": "a CodeMirror mode for the PromQL language",
"types": "dist/esm/index.d.ts", "types": "dist/esm/index.d.ts",
"module": "dist/esm/index.js", "module": "dist/esm/index.js",
@ -29,7 +29,7 @@
}, },
"homepage": "https://github.com/prometheus/prometheus/blob/main/web/ui/module/codemirror-promql/README.md", "homepage": "https://github.com/prometheus/prometheus/blob/main/web/ui/module/codemirror-promql/README.md",
"dependencies": { "dependencies": {
"@prometheus-io/lezer-promql": "0.303.0", "@prometheus-io/lezer-promql": "0.303.1",
"lru-cache": "^11.0.2" "lru-cache": "^11.0.2"
}, },
"devDependencies": { "devDependencies": {

@ -1,6 +1,6 @@
{ {
"name": "@prometheus-io/lezer-promql", "name": "@prometheus-io/lezer-promql",
"version": "0.303.0", "version": "0.303.1",
"description": "lezer-based PromQL grammar", "description": "lezer-based PromQL grammar",
"main": "dist/index.cjs", "main": "dist/index.cjs",
"type": "module", "type": "module",

@ -1,12 +1,12 @@
{ {
"name": "prometheus-io", "name": "prometheus-io",
"version": "0.303.0", "version": "0.303.1",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "prometheus-io", "name": "prometheus-io",
"version": "0.303.0", "version": "0.303.1",
"workspaces": [ "workspaces": [
"mantine-ui", "mantine-ui",
"module/*" "module/*"
@ -24,7 +24,7 @@
}, },
"mantine-ui": { "mantine-ui": {
"name": "@prometheus-io/mantine-ui", "name": "@prometheus-io/mantine-ui",
"version": "0.303.0", "version": "0.303.1",
"dependencies": { "dependencies": {
"@codemirror/autocomplete": "^6.18.4", "@codemirror/autocomplete": "^6.18.4",
"@codemirror/language": "^6.10.8", "@codemirror/language": "^6.10.8",
@ -42,7 +42,7 @@
"@microsoft/fetch-event-source": "^2.0.1", "@microsoft/fetch-event-source": "^2.0.1",
"@nexucis/fuzzy": "^0.5.1", "@nexucis/fuzzy": "^0.5.1",
"@nexucis/kvsearch": "^0.9.1", "@nexucis/kvsearch": "^0.9.1",
"@prometheus-io/codemirror-promql": "0.303.0", "@prometheus-io/codemirror-promql": "0.303.1",
"@reduxjs/toolkit": "^2.5.0", "@reduxjs/toolkit": "^2.5.0",
"@tabler/icons-react": "^3.28.1", "@tabler/icons-react": "^3.28.1",
"@tanstack/react-query": "^5.67.1", "@tanstack/react-query": "^5.67.1",
@ -156,10 +156,10 @@
}, },
"module/codemirror-promql": { "module/codemirror-promql": {
"name": "@prometheus-io/codemirror-promql", "name": "@prometheus-io/codemirror-promql",
"version": "0.303.0", "version": "0.303.1",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@prometheus-io/lezer-promql": "0.303.0", "@prometheus-io/lezer-promql": "0.303.1",
"lru-cache": "^11.0.2" "lru-cache": "^11.0.2"
}, },
"devDependencies": { "devDependencies": {
@ -189,7 +189,7 @@
}, },
"module/lezer-promql": { "module/lezer-promql": {
"name": "@prometheus-io/lezer-promql", "name": "@prometheus-io/lezer-promql",
"version": "0.303.0", "version": "0.303.1",
"license": "Apache-2.0", "license": "Apache-2.0",
"devDependencies": { "devDependencies": {
"@lezer/generator": "^1.7.2", "@lezer/generator": "^1.7.2",

@ -1,7 +1,7 @@
{ {
"name": "prometheus-io", "name": "prometheus-io",
"description": "Monorepo for the Prometheus UI", "description": "Monorepo for the Prometheus UI",
"version": "0.303.0", "version": "0.303.1",
"private": true, "private": true,
"scripts": { "scripts": {
"build": "bash build_ui.sh --all", "build": "bash build_ui.sh --all",

Loading…
Cancel
Save