Skip to content

Commit

Permalink
moved changelog entry to unreleased
Browse files Browse the repository at this point in the history
Signed-off-by: metonymic-smokey <[email protected]>
  • Loading branch information
metonymic-smokey committed Sep 20, 2021
1 parent a641207 commit 356c8d3
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 5 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ NOTE: As semantic versioning states all 0.y.z releases can contain breaking chan
We use *breaking :warning:* to mark changes that are not backward compatible (relates only to v0.y.z releases.)

## Unreleased
- [#4679](https://github.com/thanos-io/thanos/pull/4679) Added `enable-feature` flag to enable negative offsets and @ modifier, similar to Prometheus.

### Added
- [#4680](https://github.com/thanos-io/thanos/pull/4680) Query: add `exemplar.partial-response` flag to control partial response.

## v0.23.0 - In Progress

Expand Down
30 changes: 30 additions & 0 deletions cmd/thanos/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,11 @@ func registerQuery(app *extkingpin.App) {
enableMetricMetadataPartialResponse := cmd.Flag("metric-metadata.partial-response", "Enable partial response for metric metadata endpoint. --no-metric-metadata.partial-response for disabling.").
Hidden().Default("true").Bool()

featureList := cmd.Flag("enable-feature", "Comma separated experimental feature names to enable.The current list of features is promql-negative-offset and promql-at-modifier.").Default("").Strings()

enableExemplarPartialResponse := cmd.Flag("exemplar.partial-response", "Enable partial response for exemplar endpoint. --no-exemplar.partial-response for disabling.").
Hidden().Default("true").Bool()

defaultEvaluationInterval := extkingpin.ModelDuration(cmd.Flag("query.default-evaluation-interval", "Set default evaluation interval for sub queries.").Default("1m"))

defaultRangeQueryStep := extkingpin.ModelDuration(cmd.Flag("query.default-step", "Set default step for range queries. Default step is only used when step is not set in UI. In such cases, Thanos UI will use default step to calculate resolution (resolution = max(rangeSeconds / 250, defaultStep)). This will not work from Grafana, but Grafana has __step variable which can be used.").
Expand All @@ -160,6 +165,16 @@ func registerQuery(app *extkingpin.App) {
return errors.Wrap(err, "parse federation labels")
}

var enableNegativeOffset, enableAtModifier bool
for _, feature := range *featureList {
if feature == "promql-negative-offset" {
enableNegativeOffset = true
}
if feature == "promql-at-modifier" {
enableAtModifier = true
}
}

if dup := firstDuplicate(*stores); dup != "" {
return errors.Errorf("Address %s is duplicated for --store flag.", dup)
}
Expand Down Expand Up @@ -254,6 +269,7 @@ func registerQuery(app *extkingpin.App) {
*enableRulePartialResponse,
*enableTargetPartialResponse,
*enableMetricMetadataPartialResponse,
*enableExemplarPartialResponse,
fileSD,
time.Duration(*dnsSDInterval),
*dnsSDResolver,
Expand All @@ -262,6 +278,8 @@ func registerQuery(app *extkingpin.App) {
*defaultMetadataTimeRange,
*strictStores,
*webDisableCORS,
enableAtModifier,
enableNegativeOffset,
component.Query,
)
})
Expand Down Expand Up @@ -316,6 +334,7 @@ func runQuery(
enableRulePartialResponse bool,
enableTargetPartialResponse bool,
enableMetricMetadataPartialResponse bool,
enableExemplarPartialResponse bool,
fileSD *file.Discovery,
dnsSDInterval time.Duration,
dnsSDResolver string,
Expand All @@ -324,6 +343,8 @@ func runQuery(
defaultMetadataTimeRange time.Duration,
strictStores []string,
disableCORS bool,
enableAtModifier bool,
enableNegativeOffset bool,
comp component.Component,
) error {
// TODO(bplotka in PR #513 review): Move arguments into struct.
Expand Down Expand Up @@ -451,6 +472,14 @@ func runQuery(
cancelRun()
})

if enableAtModifier {
engineOpts.EnableAtModifier = true
}

if enableNegativeOffset {
engineOpts.EnableNegativeOffset = true
}

ctxUpdate, cancelUpdate := context.WithCancel(context.Background())
g.Add(func() error {
for {
Expand Down Expand Up @@ -554,6 +583,7 @@ func runQuery(
enableRulePartialResponse,
enableTargetPartialResponse,
enableMetricMetadataPartialResponse,
enableExemplarPartialResponse,
queryReplicaLabels,
flagsMap,
defaultRangeQueryStep,
Expand Down
3 changes: 3 additions & 0 deletions docs/components/query.md
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,9 @@ Query node exposing PromQL enabled Query API with data retrieved from multiple
store nodes.
Flags:
--enable-feature=... Comma separated experimental feature names
to enable.The current list of features is
promql-negative-offset and promql-at-modifier.
--grpc-address="0.0.0.0:10901"
Listen ip:port address for gRPC endpoints
(StoreAPI). Make sure this address is routable
Expand Down
2 changes: 2 additions & 0 deletions pkg/api/query/v1.go
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ func NewQueryAPI(
enableRulePartialResponse bool,
enableTargetPartialResponse bool,
enableMetricMetadataPartialResponse bool,
enableExemplarPartialResponse bool,
replicaLabels []string,
flagsMap map[string]string,
defaultRangeQueryStep time.Duration,
Expand All @@ -143,6 +144,7 @@ func NewQueryAPI(
enableRulePartialResponse: enableRulePartialResponse,
enableTargetPartialResponse: enableTargetPartialResponse,
enableMetricMetadataPartialResponse: enableMetricMetadataPartialResponse,
enableExemplarPartialResponse: enableExemplarPartialResponse,
replicaLabels: replicaLabels,
endpointSet: endpointSet,
defaultRangeQueryStep: defaultRangeQueryStep,
Expand Down
4 changes: 2 additions & 2 deletions pkg/exemplars/proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -191,8 +191,8 @@ func (stream *exemplarsStream) receive(ctx context.Context) error {
if err := stream.server.Send(exemplarspb.NewWarningExemplarsResponse(err)); err != nil {
return errors.Wrapf(err, "sending exemplars error to server %v", stream.server)
}

continue
// Not an error if response strategy is warning.
return nil
}

if w := exemplar.GetWarning(); w != "" {
Expand Down
3 changes: 2 additions & 1 deletion pkg/metadata/proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,8 @@ func (stream *metricMetadataStream) receive(ctx context.Context) error {
return errors.Wrapf(err, "sending metadata error to server %v", stream.server)
}

continue
// Not an error if response strategy is warning.
return nil
}

if w := resp.GetWarning(); w != "" {
Expand Down
4 changes: 2 additions & 2 deletions pkg/targets/proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,8 @@ func (stream *targetsStream) receive(ctx context.Context) error {
if err := stream.server.Send(targetspb.NewWarningTargetsResponse(err)); err != nil {
return errors.Wrapf(err, "sending targets error to server %v", stream.server)
}

continue
// Not an error if response strategy is warning.
return nil
}

if w := target.GetWarning(); w != "" {
Expand Down

0 comments on commit 356c8d3

Please sign in to comment.