diff --git a/cmd/thanos/query.go b/cmd/thanos/query.go index ebaa68c236..e29e39dce8 100644 --- a/cmd/thanos/query.go +++ b/cmd/thanos/query.go @@ -150,8 +150,6 @@ func registerQuery(m map[string]setupFunc, app *kingpin.Application) { level.Warn(logger).Log("msg", "different values for --web.route-prefix and --web.external-prefix detected, web UI may not work without a reverse-proxy.") } - promql.SetDefaultEvaluationInterval(time.Duration(*defaultEvaluationInterval)) - flagsMap := getFlagsMap(cmd.Model().Flags) return runQuery( @@ -178,6 +176,7 @@ func registerQuery(m map[string]setupFunc, app *kingpin.Application) { *maxConcurrentQueries, *maxConcurrentSelects, time.Duration(*queryTimeout), + time.Duration(*defaultEvaluationInterval), time.Duration(*storeResponseTimeout), *queryReplicaLabels, selectorLset, @@ -224,6 +223,7 @@ func runQuery( maxConcurrentQueries int, maxConcurrentSelects int, queryTimeout time.Duration, + defaultEvaluationInterval time.Duration, storeResponseTimeout time.Duration, queryReplicaLabels []string, selectorLset labels.Labels, @@ -310,6 +310,9 @@ func runQuery( // TODO(bwplotka): Expose this as a flag: https://github.com/thanos-io/thanos/issues/703. MaxSamples: math.MaxInt32, Timeout: queryTimeout, + NoStepSubqueryIntervalFn: func(rangeMillis int64) int64 { + return defaultEvaluationInterval.Milliseconds() + }, }, ) ) diff --git a/docs/storage.md b/docs/storage.md index c799ca03a6..26dac3509b 100644 --- a/docs/storage.md +++ b/docs/storage.md @@ -87,7 +87,7 @@ config: secret_key: "" put_user_metadata: {} http_config: - idle_conn_timeout: 90s + idle_conn_timeout: 1m30s response_header_timeout: 2m insecure_skip_verify: false trace: diff --git a/go.mod b/go.mod index 91907177eb..9c5694b1a7 100644 --- a/go.mod +++ b/go.mod @@ -48,9 +48,9 @@ require ( github.com/prometheus/alertmanager v0.21.0 github.com/prometheus/client_golang v1.7.1 github.com/prometheus/client_model v0.2.0 - github.com/prometheus/common v0.10.0 - github.com/prometheus/prometheus v1.8.2-0.20200722151933-4a8531a64b32 - github.com/uber/jaeger-client-go v2.24.0+incompatible + github.com/prometheus/common v0.11.1 + github.com/prometheus/prometheus v1.8.2-0.20200805082714-e0cf219f0de2 + github.com/uber/jaeger-client-go v2.25.0+incompatible github.com/uber/jaeger-lib v2.2.0+incompatible go.elastic.co/apm v1.5.0 go.elastic.co/apm/module/apmot v1.5.0 @@ -62,7 +62,7 @@ require ( golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1 // indirect golang.org/x/text v0.3.3 google.golang.org/api v0.29.0 - google.golang.org/genproto v0.0.0-20200710124503-20a17af7bd0e + google.golang.org/genproto v0.0.0-20200724131911-43cab4749ae7 google.golang.org/grpc v1.30.0 gopkg.in/alecthomas/kingpin.v2 v2.2.6 gopkg.in/fsnotify.v1 v1.4.7 @@ -75,7 +75,7 @@ require ( // See https://github.com/thanos-io/thanos/issues/1415 replace ( // Make sure Cortex is not forcing us to some other Prometheus version. - github.com/prometheus/prometheus => github.com/prometheus/prometheus v1.8.2-0.20200714083622-823b218e1b2e + github.com/prometheus/prometheus => github.com/prometheus/prometheus v1.8.2-0.20200805082714-e0cf219f0de2 google.golang.org/grpc => google.golang.org/grpc v1.29.1 k8s.io/klog => k8s.io/klog v0.3.1 k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30 diff --git a/go.sum b/go.sum index 341953d96f..39225afc56 100644 --- a/go.sum +++ b/go.sum @@ -37,8 +37,8 @@ github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiU github.com/Azure/azure-pipeline-go v0.2.2 h1:6oiIS9yaG6XCCzhgAgKFfIWyo4LLCiDhZot6ltoThhY= github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= github.com/Azure/azure-sdk-for-go v36.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v44.0.0+incompatible h1:e82Yv2HNpS0kuyeCrV29OPKvEiqfs2/uJHic3/3iKdg= -github.com/Azure/azure-sdk-for-go v44.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v44.2.0+incompatible h1:d0WY8HTXhnurVBAkLXzv4bRpd+P5r3U/W17Z88PJWiI= +github.com/Azure/azure-sdk-for-go v44.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-storage-blob-go v0.8.0 h1:53qhf0Oxa0nOjgbDeeYPUeyiNmafAFEY95rZLK0Tj6o= github.com/Azure/azure-storage-blob-go v0.8.0/go.mod h1:lPI3aLPpuLTeUwh1sViKXFxwl2B6teiRqI0deQUvsw0= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8= @@ -135,8 +135,9 @@ github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3A github.com/aws/aws-sdk-go v1.17.7/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.25.48/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.33.5 h1:p2fr1ryvNTU6avUWLI+/H7FGv0TBIjzVM5WDgXBBv4U= github.com/aws/aws-sdk-go v1.33.5/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= +github.com/aws/aws-sdk-go v1.33.12 h1:eydMoSwfrSTD9PWKUJOiDL7+/UwDW8AjInUGVE5Llh4= +github.com/aws/aws-sdk-go v1.33.12/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f h1:ZNv7On9kyUzm7fvRZumSyy/IUiSC7AzL0I1jKKtwooA= github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= @@ -219,8 +220,8 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= github.com/dgryski/go-sip13 v0.0.0-20190329191031-25c5027a8c7b/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dhui/dktest v0.3.0/go.mod h1:cyzIUfGsBEbZ6BT7tnXqAShHSXCZhSNmFl70sZ7c1yc= -github.com/digitalocean/godo v1.38.0 h1:to+pLe5RJqflJiyxhaLJfJgT3YzwHRSg19mOWkKt6A0= -github.com/digitalocean/godo v1.38.0/go.mod h1:p7dOjjtSBqCTUksqtA5Fd3uaKs9kyTq2xcz76ulEJRU= +github.com/digitalocean/godo v1.42.0 h1:xQlEFLhQ1zZUryJAfiWb8meLPPCWnLO901U5Imhh0Mc= +github.com/digitalocean/godo v1.42.0/go.mod h1:p7dOjjtSBqCTUksqtA5Fd3uaKs9kyTq2xcz76ulEJRU= github.com/docker/distribution v2.7.0+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= @@ -858,6 +859,8 @@ github.com/prometheus/common v0.8.0/go.mod h1:PC/OgXc+UN7B4ALwvn1yzVZmVwvhXp5Jsb github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0 h1:RyRA7RzGXQZiW+tGMr7sxa85G1z0yOpM1qq5c8lNawc= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.11.1 h1:0ZISXCMRuCZcxF77aT1BXY5m74mX2vrGYl1dSwBI0Jo= +github.com/prometheus/common v0.11.1/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/node_exporter v1.0.0-rc.0.0.20200428091818-01054558c289 h1:dTUS1vaLWq+Y6XKOTnrFpoVsQKLCbCp1OLj24TDi7oM= github.com/prometheus/node_exporter v1.0.0-rc.0.0.20200428091818-01054558c289/go.mod h1:FGbBv5OPKjch+jNUJmEQpMZytIdyW0NdBtWFcfSKusc= github.com/prometheus/procfs v0.0.0-20180612222113-7d6f385de8be/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= @@ -873,8 +876,8 @@ github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+Gx github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.1.3 h1:F0+tqvhOksq22sc6iCHF5WGlWjdwj92p0udFh1VFBS8= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/prometheus v1.8.2-0.20200714083622-823b218e1b2e h1:NCV6Sz7qguIRsvG6Aii4wDwWeiUPadaWT/4l4eP7Ax0= -github.com/prometheus/prometheus v1.8.2-0.20200714083622-823b218e1b2e/go.mod h1:F3OdzfA9PNvJ0PxQwHL58k9zOhOLhtcIAOtVqwyYxwk= +github.com/prometheus/prometheus v1.8.2-0.20200805082714-e0cf219f0de2 h1:eQ88y1vfbXuclr6B04jYTmhc6ydXlBUSIaXCjEs0osk= +github.com/prometheus/prometheus v1.8.2-0.20200805082714-e0cf219f0de2/go.mod h1:i1KZsZmyDTJRvnR7zE8z/u2v+tkpPjoiPpnWp6nwhr0= github.com/rafaeljusto/redigomock v0.0.0-20190202135759-257e089e14a1/go.mod h1:JaY6n2sDr+z2WTsXkOmNRUfDy6FN0L6Nk7x06ndm4tY= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= @@ -888,8 +891,9 @@ github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da h1:p3Vo3i64TCLY7gIfzeQaUJ+kppEO5WQG3cL8iE8tGHU= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/samuel/go-zookeeper v0.0.0-20200724154423-2164a8ac840e h1:CGjiMQ0wMH4wtNWrlj6kiTbkPt2F3rbYnhGX6TWLfco= +github.com/samuel/go-zookeeper v0.0.0-20200724154423-2164a8ac840e/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/santhosh-tekuri/jsonschema v1.2.4 h1:hNhW8e7t+H1vgY+1QeEQpveR6D4+OwKPXCfD2aieJis= github.com/santhosh-tekuri/jsonschema v1.2.4/go.mod h1:TEAUOeZSmIxTTuHatJzrvARHiuO9LYd+cIxzgEHCQI4= github.com/satori/go.uuid v0.0.0-20160603004225-b111a074d5ef/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= @@ -943,6 +947,7 @@ github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3 github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -961,8 +966,9 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1 github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/uber/jaeger-client-go v2.15.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-client-go v2.20.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/uber/jaeger-client-go v2.24.0+incompatible h1:CGchgJcHsDd2jWnaL4XngByMrXoGHh3n8oCqAKx0uMo= github.com/uber/jaeger-client-go v2.24.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= +github.com/uber/jaeger-client-go v2.25.0+incompatible h1:IxcNZ7WRY1Y3G4poYlx24szfsn/3LvK9QHCq9oQw8+U= +github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-lib v1.5.1-0.20181102163054-1fc5c315e03c/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/uber/jaeger-lib v2.2.0+incompatible h1:MxZXOiR2JuoANZ3J6DE/U0kSFv/eJ/GfSYVCjK7dyaw= github.com/uber/jaeger-lib v2.2.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= @@ -1021,6 +1027,8 @@ go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/automaxprocs v1.2.0 h1:+RUihKM+nmYUoB9w0D0Ov5TJ2PpFO2FgenTxMJiZBZA= go.uber.org/automaxprocs v1.2.0/go.mod h1:YfO3fm683kQpzETxlTGZhGIVmXAhaw3gxeBADbpZtnU= +go.uber.org/goleak v1.0.0 h1:qsup4IcBdlmsnGfqyLl4Ntn3C2XCCuKAE7DwHpScyUo= +go.uber.org/goleak v1.0.0/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= @@ -1208,6 +1216,7 @@ golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200724161237-0e2f3a69832c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1 h1:sIky/MyNRSHTrdxfsiUSS4WIAMvInbeXljJz+jDjeYE= golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1253,6 +1262,7 @@ golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191111182352-50fa39b762bc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1275,8 +1285,8 @@ golang.org/x/tools v0.0.0-20200216192241-b320d3a0f5a2/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200513201620-d5fe73897c97/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200710042808-f1c4188a97a1 h1:rD1FcWVsRaMY+l8biE9jbWP5MS/CJJ/90a9TMkMgNrM= -golang.org/x/tools v0.0.0-20200710042808-f1c4188a97a1/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200725200936-102e7d357031 h1:VtIxiVHWPhnny2ZTi4f9/2diZKqyLaq3FUTuud5+khA= +golang.org/x/tools v0.0.0-20200725200936-102e7d357031/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= @@ -1336,12 +1346,11 @@ google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200624020401-64a14ca9d1ad/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200710124503-20a17af7bd0e h1:k+p/u26/lVeNEpdxSeUrm7rTvoFckBKaf7gTzgmHyDA= google.golang.org/genproto v0.0.0-20200710124503-20a17af7bd0e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200724131911-43cab4749ae7 h1:AWgNCmk2V5HZp9AiCDRBExX/b9I0Ey9F8STHDZlhCC4= +google.golang.org/genproto v0.0.0-20200724131911-43cab4749ae7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/grpc v1.29.1 h1:EC2SB8S04d2r73uptxphDSUG+kTKVgjRPF+N3xpxRB4= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc/examples v0.0.0-20200709232328-d8193ee9cc3e/go.mod h1:5j1uub0jRGhRiSghIlrThmBUgcgLXOVJQ/l1getT4uo= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1401,13 +1410,13 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 howett.net/plist v0.0.0-20181124034731-591f970eefbb h1:jhnBjNi9UFpfpl8YZhA9CrOqpnJdvzuiHsl/dnxl11M= howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= k8s.io/api v0.0.0-20191115095533-47f6de673b26/go.mod h1:iA/8arsvelvo4IDqIhX4IbjTEKBGgvsf2OraTuRtLFU= -k8s.io/api v0.18.5 h1:fKbCxr+U3fu7k6jB+QeYPD/c6xKYeSJ2KVWmyUypuWM= -k8s.io/api v0.18.5/go.mod h1:tN+e/2nbdGKOAH55NMV8oGrMG+3uRlA9GaRfvnCCSNk= +k8s.io/api v0.18.6 h1:osqrAXbOQjkKIWDTjrqxWQ3w0GkKb1KA1XkUGHHYpeE= +k8s.io/api v0.18.6/go.mod h1:eeyxr+cwCjMdLAmr2W3RyDI0VvTawSg/3RFFBEnmZGI= k8s.io/apimachinery v0.0.0-20191115015347-3c7067801da2/go.mod h1:dXFS2zaQR8fyzuvRdJDHw2Aerij/yVGJSre0bZQSVJA= -k8s.io/apimachinery v0.18.5 h1:Lh6tgsM9FMkC12K5T5QjRm7rDs6aQN5JHkA0JomULDM= -k8s.io/apimachinery v0.18.5/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= -k8s.io/client-go v0.18.5 h1:cLhGZdOmyPhwtt20Lrb7uAqxxB1uvY+NTmNJvno1oKA= -k8s.io/client-go v0.18.5/go.mod h1:EsiD+7Fx+bRckKWZXnAXRKKetm1WuzPagH4iOSC8x58= +k8s.io/apimachinery v0.18.6 h1:RtFHnfGNfd1N0LeSrKCUznz5xtUP1elRGvHJbL3Ntag= +k8s.io/apimachinery v0.18.6/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko= +k8s.io/client-go v0.18.6 h1:I+oWqJbibLSGsZj8Xs8F0aWVXJVIoUHWaaJV3kUN/Zw= +k8s.io/client-go v0.18.6/go.mod h1:/fwtGLjYMS1MaM5oi+eXhKwG+1UHidUEXRh6cNsdO0Q= k8s.io/klog v0.3.1 h1:RVgyDHY/kFKtLqh67NvEWIgkMneNoIrdkN0CxDSQc68= k8s.io/klog v0.3.1/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog/v2 v2.0.0 h1:Foj74zO6RbjjP4hBEKjnYtjjAhGg4jNynUdYF6fJrok= diff --git a/pkg/api/query/v1_test.go b/pkg/api/query/v1_test.go index 030907a882..54ccdffe41 100644 --- a/pkg/api/query/v1_test.go +++ b/pkg/api/query/v1_test.go @@ -93,7 +93,7 @@ func TestEndpoints(t *testing.T) { defer func() { testutil.Ok(t, db.Close()) }() testutil.Ok(t, err) - app := db.Appender() + app := db.Appender(context.Background()) for _, lbl := range lbls { for i := int64(0); i < 10; i++ { _, err := app.Add(lbl, i*60000, float64(i)) diff --git a/pkg/promclient/promclient.go b/pkg/promclient/promclient.go index 6ce9dbda14..0a4b515942 100644 --- a/pkg/promclient/promclient.go +++ b/pkg/promclient/promclient.go @@ -409,11 +409,11 @@ func (c *Client) QueryInstant(ctx context.Context, base *url.URL, query string, // Decode the Result depending on the ResultType // Currently only `vector` and `scalar` types are supported. switch m.Data.ResultType { - case parser.ValueTypeVector: + case string(parser.ValueTypeVector): if err = json.Unmarshal(m.Data.Result, &vectorResult); err != nil { return nil, nil, errors.Wrap(err, "decode result into ValueTypeVector") } - case parser.ValueTypeScalar: + case string(parser.ValueTypeScalar): vectorResult, err = convertScalarJSONToVector(m.Data.Result) if err != nil { return nil, nil, errors.Wrap(err, "decode result into ValueTypeScalar") @@ -510,7 +510,7 @@ func (c *Client) QueryRange(ctx context.Context, base *url.URL, query string, st // Decode the Result depending on the ResultType switch m.Data.ResultType { - case parser.ValueTypeMatrix: + case string(parser.ValueTypeMatrix): if err = json.Unmarshal(m.Data.Result, &matrixResult); err != nil { return nil, nil, errors.Wrap(err, "decode result into ValueTypeMatrix") } diff --git a/pkg/receive/handler.go b/pkg/receive/handler.go index 130ba2d18a..1070aaffab 100644 --- a/pkg/receive/handler.go +++ b/pkg/receive/handler.go @@ -448,7 +448,7 @@ func (h *Handler) fanoutForward(pctx context.Context, tenant string, replicas ma var err error tracing.DoInSpan(fctx, "receive_tsdb_write", func(_ context.Context) { - err = h.writer.Write(tenant, wreqs[endpoint]) + err = h.writer.Write(fctx, tenant, wreqs[endpoint]) }) if err != nil { // When a MultiError is added to another MultiError, the error slices are concatenated, not nested. diff --git a/pkg/receive/multitsdb.go b/pkg/receive/multitsdb.go index 017224d566..b396196fae 100644 --- a/pkg/receive/multitsdb.go +++ b/pkg/receive/multitsdb.go @@ -386,9 +386,9 @@ func (s *ReadyStorage) Querier(ctx context.Context, mint, maxt int64) (storage.Q } // Appender implements the Storage interface. -func (s *ReadyStorage) Appender() (storage.Appender, error) { +func (s *ReadyStorage) Appender(ctx context.Context) (storage.Appender, error) { if x := s.get(); x != nil { - return x.Appender() + return x.Appender(ctx) } return nil, ErrNotReady } @@ -420,8 +420,8 @@ func (a adapter) Querier(ctx context.Context, mint, maxt int64) (storage.Querier } // Appender returns a new appender against the storage. -func (a adapter) Appender() (storage.Appender, error) { - return a.db.Appender(), nil +func (a adapter) Appender(ctx context.Context) (storage.Appender, error) { + return a.db.Appender(ctx), nil } // Close closes the storage and all its underlying resources. diff --git a/pkg/receive/multitsdb_test.go b/pkg/receive/multitsdb_test.go index b884cc19bc..ff21ac788c 100644 --- a/pkg/receive/multitsdb_test.go +++ b/pkg/receive/multitsdb_test.go @@ -56,7 +56,7 @@ func TestMultiTSDB(t *testing.T) { var a storage.Appender testutil.Ok(t, runutil.Retry(1*time.Second, ctx.Done(), func() error { - a, err = app.Appender() + a, err = app.Appender(context.Background()) return err })) @@ -83,7 +83,7 @@ func TestMultiTSDB(t *testing.T) { testutil.Ok(t, err) testutil.Ok(t, runutil.Retry(1*time.Second, ctx.Done(), func() error { - a, err = app.Appender() + a, err = app.Appender(context.Background()) return err })) @@ -123,7 +123,7 @@ func TestMultiTSDB(t *testing.T) { defer cancel() testutil.Ok(t, runutil.Retry(1*time.Second, ctx.Done(), func() error { - _, err := app.Appender() + _, err := app.Appender(context.Background()) return err })) diff --git a/pkg/receive/writer.go b/pkg/receive/writer.go index 77bb242043..2b1a1b01b7 100644 --- a/pkg/receive/writer.go +++ b/pkg/receive/writer.go @@ -4,6 +4,7 @@ package receive import ( + "context" "sync" "github.com/go-kit/kit/log" @@ -19,7 +20,7 @@ import ( // Appendable returns an Appender. type Appendable interface { - Appender() (storage.Appender, error) + Appender(ctx context.Context) (storage.Appender, error) } type TenantStorage interface { @@ -38,7 +39,7 @@ func NewWriter(logger log.Logger, multiTSDB TenantStorage) *Writer { } } -func (r *Writer) Write(tenantID string, wreq *prompb.WriteRequest) error { +func (r *Writer) Write(ctx context.Context, tenantID string, wreq *prompb.WriteRequest) error { var ( numOutOfOrder = 0 numDuplicates = 0 @@ -50,7 +51,7 @@ func (r *Writer) Write(tenantID string, wreq *prompb.WriteRequest) error { return errors.Wrap(err, "get tenant appendable") } - app, err := s.Appender() + app, err := s.Appender(ctx) if err == tsdb.ErrNotReady { return err } @@ -130,7 +131,7 @@ func nilErrFn() error { return nil } -func (f *fakeAppendable) Appender() (storage.Appender, error) { +func (f *fakeAppendable) Appender(_ context.Context) (storage.Appender, error) { errf := f.appenderErr if errf == nil { errf = nilErrFn diff --git a/pkg/rules/manager.go b/pkg/rules/manager.go index 969f055b4b..5cde2f4ae7 100644 --- a/pkg/rules/manager.go +++ b/pkg/rules/manager.go @@ -144,9 +144,10 @@ func NewManager( return m } +// Run is non blocking, in opposite to TSDB manager, which is blocking. func (m *Manager) Run() { for _, mgr := range m.mgrs { - mgr.Run() + go mgr.Run() } } diff --git a/pkg/rules/manager_test.go b/pkg/rules/manager_test.go index 71265c0f51..a7aaaa927e 100644 --- a/pkg/rules/manager_test.go +++ b/pkg/rules/manager_test.go @@ -27,7 +27,7 @@ import ( type nopAppendable struct{} -func (n nopAppendable) Appender() storage.Appender { return nopAppender{} } +func (n nopAppendable) Appender(_ context.Context) storage.Appender { return nopAppender{} } type nopAppender struct{} @@ -35,7 +35,13 @@ func (n nopAppender) Add(l labels.Labels, t int64, v float64) (uint64, error) { func (n nopAppender) AddFast(ref uint64, t int64, v float64) error { return nil } func (n nopAppender) Commit() error { return nil } func (n nopAppender) Rollback() error { return nil } -func (n nopAppender) Appender() (storage.Appender, error) { return n, nil } +func (n nopAppender) Appender(_ context.Context) (storage.Appender, error) { return n, nil } + +type nopQueryable struct{} + +func (n nopQueryable) Querier(_ context.Context, _, _ int64) (storage.Querier, error) { + return storage.NoopQuerier(), nil +} // Regression test against https://github.com/thanos-io/thanos/issues/1779. func TestRun(t *testing.T) { @@ -65,6 +71,7 @@ groups: Logger: log.NewLogfmtLogger(os.Stderr), Context: context.Background(), Appendable: nopAppendable{}, + Queryable: nopQueryable{}, }, func(partialResponseStrategy storepb.PartialResponseStrategy) rules.QueryFunc { return func(ctx context.Context, q string, t time.Time) (vectors promql.Vector, e error) { @@ -160,7 +167,8 @@ groups: nil, dir, rules.ManagerOptions{ - Logger: log.NewLogfmtLogger(os.Stderr), + Logger: log.NewLogfmtLogger(os.Stderr), + Queryable: nopQueryable{}, }, func(partialResponseStrategy storepb.PartialResponseStrategy) rules.QueryFunc { return func(ctx context.Context, q string, t time.Time) (promql.Vector, error) { @@ -287,7 +295,8 @@ func TestManager_Rules(t *testing.T) { nil, dir, rules.ManagerOptions{ - Logger: log.NewLogfmtLogger(os.Stderr), + Logger: log.NewLogfmtLogger(os.Stderr), + Queryable: nopQueryable{}, }, func(partialResponseStrategy storepb.PartialResponseStrategy) rules.QueryFunc { return func(ctx context.Context, q string, t time.Time) (promql.Vector, error) { diff --git a/pkg/store/bucket_test.go b/pkg/store/bucket_test.go index a70cc99482..215ce3b153 100644 --- a/pkg/store/bucket_test.go +++ b/pkg/store/bucket_test.go @@ -1028,7 +1028,7 @@ func uploadTestBlock(t testing.TB, tmpDir string, bkt objstore.Bucket, series in logger := log.NewNopLogger() - appendTestData(t, h.Appender(), series) + appendTestData(t, h.Appender(context.Background()), series) testutil.Ok(t, os.MkdirAll(filepath.Join(tmpDir, "tmp"), os.ModePerm)) id := createBlockFromHead(t, filepath.Join(tmpDir, "tmp"), h) @@ -1372,7 +1372,7 @@ func TestBucketSeries_OneBlock_InMemIndexCacheSegfault(t *testing.T) { testutil.Ok(t, err) defer func() { testutil.Ok(t, h.Close()) }() - app := h.Appender() + app := h.Appender(context.Background()) for i := 0; i < numSeries; i++ { ts := int64(i) @@ -1410,7 +1410,7 @@ func TestBucketSeries_OneBlock_InMemIndexCacheSegfault(t *testing.T) { testutil.Ok(t, err) defer func() { testutil.Ok(t, h.Close()) }() - app := h.Appender() + app := h.Appender(context.Background()) for i := 0; i < numSeries; i++ { ts := int64(i) @@ -1848,7 +1848,7 @@ func createBlockWithOneSeriesWithStep(t testutil.TB, dir string, lbls labels.Lab testutil.Ok(t, err) defer func() { testutil.Ok(t, h.Close()) }() - app := h.Appender() + app := h.Appender(context.Background()) ts := int64(blockIndex * totalSamples) ref, err := app.Add(lbls, ts, random.Float64()) diff --git a/pkg/store/postings_codec_test.go b/pkg/store/postings_codec_test.go index 602eb5a8ca..2fe6848a63 100644 --- a/pkg/store/postings_codec_test.go +++ b/pkg/store/postings_codec_test.go @@ -4,6 +4,7 @@ package store import ( + "context" "io/ioutil" "math" "math/rand" @@ -29,7 +30,7 @@ func TestDiffVarintCodec(t *testing.T) { testutil.Ok(t, os.RemoveAll(chunksDir)) }() - appendTestData(t, h.Appender(), 1e6) + appendTestData(t, h.Appender(context.Background()), 1e6) idx, err := h.Index() testutil.Ok(t, err) diff --git a/pkg/store/storepb/testutil/series.go b/pkg/store/storepb/testutil/series.go index 3f28ec2c3c..db96d3652e 100644 --- a/pkg/store/storepb/testutil/series.go +++ b/pkg/store/storepb/testutil/series.go @@ -72,7 +72,7 @@ func CreateHeadWithSeries(t testing.TB, j int, opts HeadGenOptions) (*tsdb.Head, h, err := tsdb.NewHead(nil, nil, w, 10000000, tsdbDir, nil, tsdb.DefaultStripeSize, nil) testutil.Ok(t, err) - app := h.Appender() + app := h.Appender(context.Background()) for i := 0; i < opts.Series; i++ { ts := int64(j*opts.Series*opts.SamplesPerSeries + i*opts.SamplesPerSeries) ref, err := app.Add(labels.FromStrings("foo", "bar", "i", fmt.Sprintf("%07d%s", ts, LabelLongSuffix)), ts, opts.Random.Float64()) diff --git a/pkg/store/tsdb_test.go b/pkg/store/tsdb_test.go index c0aa6bf87c..42532c159c 100644 --- a/pkg/store/tsdb_test.go +++ b/pkg/store/tsdb_test.go @@ -38,7 +38,7 @@ func TestTSDBStore_Info(t *testing.T) { testutil.Equals(t, int64(math.MaxInt64), resp.MinTime) testutil.Equals(t, int64(math.MaxInt64), resp.MaxTime) - app := db.Appender() + app := db.Appender(context.Background()) _, err = app.Add(labels.FromStrings("a", "a"), 12, 0.1) testutil.Ok(t, err) testutil.Ok(t, app.Commit()) @@ -64,7 +64,7 @@ func TestTSDBStore_Series(t *testing.T) { tsdbStore := NewTSDBStore(nil, nil, db, component.Rule, labels.FromStrings("region", "eu-west")) - appender := db.Appender() + appender := db.Appender(context.Background()) for i := 1; i <= 3; i++ { _, err = appender.Add(labels.FromStrings("a", "1"), int64(i), float64(i)) @@ -188,7 +188,7 @@ func TestTSDBStore_LabelNames(t *testing.T) { defer func() { testutil.Ok(t, db.Close()) }() testutil.Ok(t, err) - appender := db.Appender() + appender := db.Appender(context.Background()) addLabels := func(lbs []string, timestamp int64) { if len(lbs) > 0 { _, err = appender.Add(labels.FromStrings(lbs...), timestamp, 1) @@ -209,10 +209,9 @@ func TestTSDBStore_LabelNames(t *testing.T) { end func() int64 }{ { - title: "no label in tsdb", - labels: []string{}, - expectedNames: []string{}, - timestamp: now.Unix(), + title: "no label in tsdb", + labels: []string{}, + timestamp: now.Unix(), start: func() int64 { return timestamp.FromTime(minTime) }, @@ -246,10 +245,9 @@ func TestTSDBStore_LabelNames(t *testing.T) { }, }, { - title: "query range outside tsdb head", - labels: []string{}, - expectedNames: []string{}, - timestamp: now.Unix(), + title: "query range outside tsdb head", + labels: []string{}, + timestamp: now.Unix(), start: func() int64 { return timestamp.FromTime(minTime) }, @@ -296,7 +294,7 @@ func TestTSDBStore_LabelValues(t *testing.T) { defer func() { testutil.Ok(t, db.Close()) }() testutil.Ok(t, err) - appender := db.Appender() + appender := db.Appender(context.Background()) addLabels := func(lbs []string, timestamp int64) { if len(lbs) > 0 { _, err = appender.Add(labels.FromStrings(lbs...), timestamp, 1) @@ -318,11 +316,10 @@ func TestTSDBStore_LabelValues(t *testing.T) { end func() int64 }{ { - title: "no label in tsdb", - addedLabels: []string{}, - queryLabel: "foo", - expectedValues: []string{}, - timestamp: now.Unix(), + title: "no label in tsdb", + addedLabels: []string{}, + queryLabel: "foo", + timestamp: now.Unix(), start: func() int64 { return timestamp.FromTime(minTime) }, @@ -357,11 +354,10 @@ func TestTSDBStore_LabelValues(t *testing.T) { }, }, { - title: "query time range outside head", - addedLabels: []string{}, - queryLabel: "foo", - expectedValues: []string{}, - timestamp: now.Unix(), + title: "query time range outside head", + addedLabels: []string{}, + queryLabel: "foo", + timestamp: now.Unix(), start: func() int64 { return timestamp.FromTime(minTime) }, @@ -394,7 +390,7 @@ func TestTSDBStore_Series_SplitSamplesIntoChunksWithMaxSizeOf120(t *testing.T) { defer func() { testutil.Ok(t, db.Close()) }() testutil.Ok(t, err) - testSeries_SplitSamplesIntoChunksWithMaxSizeOf120(t, db.Appender(), func() storepb.StoreServer { + testSeries_SplitSamplesIntoChunksWithMaxSizeOf120(t, db.Appender(context.Background()), func() storepb.StoreServer { tsdbStore := NewTSDBStore(nil, nil, db, component.Rule, labels.FromStrings("region", "eu-west")) return tsdbStore diff --git a/pkg/testutil/e2eutil/prometheus.go b/pkg/testutil/e2eutil/prometheus.go index 49492350a9..acc4482d0d 100644 --- a/pkg/testutil/e2eutil/prometheus.go +++ b/pkg/testutil/e2eutil/prometheus.go @@ -276,7 +276,7 @@ func (p *Prometheus) Appender() storage.Appender { if p.running { panic("Appender must not be called after start") } - return p.db.Appender() + return p.db.Appender(context.Background()) } // CreateEmptyBlock produces empty block like it was the case before fix: https://github.com/prometheus/tsdb/pull/374. @@ -435,7 +435,7 @@ func createBlock( t := mint for i := 0; i < numSamples; i++ { - app := h.Appender() + app := h.Appender(ctx) for _, lset := range batch { _, err := app.Add(lset, t, rand.Float64()) diff --git a/test/e2e/rule_test.go b/test/e2e/rule_test.go index 9c29564265..8b22bd3576 100644 --- a/test/e2e/rule_test.go +++ b/test/e2e/rule_test.go @@ -38,6 +38,7 @@ const ( testAlertRuleAbortOnPartialResponse = ` groups: - name: example_abort + interval: 100ms # Abort should be a default: partial_response_strategy: "ABORT" rules: - alert: TestAlert_AbortOnPartialResponse @@ -51,6 +52,7 @@ groups: testAlertRuleWarnOnPartialResponse = ` groups: - name: example_warn + interval: 100ms partial_response_strategy: "WARN" rules: - alert: TestAlert_WarnOnPartialResponse @@ -64,6 +66,7 @@ groups: testAlertRuleAddedLaterWebHandler = ` groups: - name: example + interval: 100ms partial_response_strategy: "WARN" rules: - alert: TestAlert_HasBeenLoadedViaWebHandler