mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
lib/storage: follow-up for 38bf5fc136
This commit is contained in:
parent
1e0fe615ad
commit
80fc3fda07
3 changed files with 8 additions and 3 deletions
|
@ -13,6 +13,7 @@ sort: 15
|
||||||
* BUGFIX: [vmagent](https://docs.victoriametrics.com/vmagent.html): make sure that `vmagent` replicas scrape the same targets at different time offsets when [replication is enabled in vmagent clustering mode](https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets). This guarantees that the [deduplication](https://docs.victoriametrics.com/#deduplication) consistently leaves samples from the same `vmagent` replica.
|
* BUGFIX: [vmagent](https://docs.victoriametrics.com/vmagent.html): make sure that `vmagent` replicas scrape the same targets at different time offsets when [replication is enabled in vmagent clustering mode](https://docs.victoriametrics.com/vmagent.html#scraping-big-number-of-targets). This guarantees that the [deduplication](https://docs.victoriametrics.com/#deduplication) consistently leaves samples from the same `vmagent` replica.
|
||||||
* BUGFIX: return the proper response stub from `/api/v1/query_exemplars` handler, which is needed for Grafana v8+. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1999).
|
* BUGFIX: return the proper response stub from `/api/v1/query_exemplars` handler, which is needed for Grafana v8+. See [this issue](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1999).
|
||||||
* BUGFIX: [vmctl](https://docs.victoriametrics.com/vmctl.html): fix a few edge cases and improve migration speed for OpenTSDB importer. See [this pull request](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/2019).
|
* BUGFIX: [vmctl](https://docs.victoriametrics.com/vmctl.html): fix a few edge cases and improve migration speed for OpenTSDB importer. See [this pull request](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/2019).
|
||||||
|
* BUGFIX: fix possible data race when searching for time series matching `{key=~"value|"}` filter. See [this pull request](https://github.com/VictoriaMetrics/VictoriaMetrics/pull/2032). Thanks to @waldoweng for the provided fix.
|
||||||
|
|
||||||
|
|
||||||
## [v1.71.0](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.71.0)
|
## [v1.71.0](https://github.com/VictoriaMetrics/VictoriaMetrics/releases/tag/v1.71.0)
|
||||||
|
|
|
@ -2744,9 +2744,11 @@ func (is *indexSearch) getMetricIDsForDateTagFilter(tf *tagFilter, date uint64,
|
||||||
// Use global search if date isn't set.
|
// Use global search if date isn't set.
|
||||||
kb.B = is.marshalCommonPrefix(kb.B[:0], nsPrefixTagToMetricIDs)
|
kb.B = is.marshalCommonPrefix(kb.B[:0], nsPrefixTagToMetricIDs)
|
||||||
}
|
}
|
||||||
|
prefix := kb.B
|
||||||
|
kb.B = append(kb.B, tf.prefix[len(commonPrefix):]...)
|
||||||
tfNew := *tf
|
tfNew := *tf
|
||||||
tfNew.isNegative = false // isNegative for the original tf is handled by the caller.
|
tfNew.isNegative = false // isNegative for the original tf is handled by the caller.
|
||||||
tfNew.prefix = append(kb.B, tf.prefix[len(commonPrefix):]...)
|
tfNew.prefix = kb.B
|
||||||
metricIDs, loopsCount, err := is.getMetricIDsForTagFilter(&tfNew, maxMetrics, maxLoopsCount)
|
metricIDs, loopsCount, err := is.getMetricIDsForTagFilter(&tfNew, maxMetrics, maxLoopsCount)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, loopsCount, err
|
return nil, loopsCount, err
|
||||||
|
@ -2760,7 +2762,7 @@ func (is *indexSearch) getMetricIDsForDateTagFilter(tf *tagFilter, date uint64,
|
||||||
// See also https://github.com/VictoriaMetrics/VictoriaMetrics/issues/395
|
// See also https://github.com/VictoriaMetrics/VictoriaMetrics/issues/395
|
||||||
maxLoopsCount -= loopsCount
|
maxLoopsCount -= loopsCount
|
||||||
tfNew = tagFilter{}
|
tfNew = tagFilter{}
|
||||||
if err := tfNew.Init(kb.B, tf.key, []byte(".+"), false, true); err != nil {
|
if err := tfNew.Init(prefix, tf.key, []byte(".+"), false, true); err != nil {
|
||||||
logger.Panicf(`BUG: cannot init tag filter: {%q=~".+"}: %s`, tf.key, err)
|
logger.Panicf(`BUG: cannot init tag filter: {%q=~".+"}: %s`, tf.key, err)
|
||||||
}
|
}
|
||||||
m, lc, err := is.getMetricIDsForTagFilter(&tfNew, maxMetrics, maxLoopsCount)
|
m, lc, err := is.getMetricIDsForTagFilter(&tfNew, maxMetrics, maxLoopsCount)
|
||||||
|
|
|
@ -246,7 +246,7 @@ type tagFilter struct {
|
||||||
// contains the prefix for regexp filter if isRegexp==true.
|
// contains the prefix for regexp filter if isRegexp==true.
|
||||||
regexpPrefix string
|
regexpPrefix string
|
||||||
|
|
||||||
// Prefix always contains {nsPrefixTagToMetricIDs, AccountID, ProjectID, key}.
|
// Prefix contains either {nsPrefixTagToMetricIDs, AccountID, ProjectID, key} or {nsPrefixDateTagToMetricIDs, AccountID, ProjectID, date, key}.
|
||||||
// Additionally it contains:
|
// Additionally it contains:
|
||||||
// - value if !isRegexp.
|
// - value if !isRegexp.
|
||||||
// - regexpPrefix if isRegexp.
|
// - regexpPrefix if isRegexp.
|
||||||
|
@ -391,6 +391,8 @@ func getCommonPrefix(ss []string) (string, []string) {
|
||||||
|
|
||||||
// Init initializes the tag filter for the given commonPrefix, key and value.
|
// Init initializes the tag filter for the given commonPrefix, key and value.
|
||||||
//
|
//
|
||||||
|
// commonPrefix must contain either {nsPrefixTagToMetricIDs, AccountID, ProjectID} or {nsPrefixDateTagToMetricIDs, AccountID, ProjectID, date}.
|
||||||
|
//
|
||||||
// If isNegaitve is true, then the tag filter matches all the values
|
// If isNegaitve is true, then the tag filter matches all the values
|
||||||
// except the given one.
|
// except the given one.
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in a new issue