@@ -15,43 +15,40 @@ const (
15
15
stepBatch = 10
16
16
)
17
17
18
- func LogicalPlanGenMiddleware (enablePerStepStats bool , lookBackDelta time.Duration ) Middleware {
18
+ func DistributedQueryMiddleware (enablePerStepStats bool , lookBackDelta time.Duration ) Middleware {
19
19
return MiddlewareFunc (func (next Handler ) Handler {
20
- return logicalPlanGen {
20
+ return distributedQueryMiddleware {
21
21
next : next ,
22
22
enablePerStepStats : enablePerStepStats ,
23
23
lookBackDelta : lookBackDelta ,
24
24
}
25
25
})
26
26
}
27
27
28
- type logicalPlanGen struct {
28
+ func getStartAndEnd (start time.Time , end time.Time , step time.Duration ) (time.Time , time.Time ) {
29
+ if step == 0 {
30
+ return start , start
31
+ }
32
+ return start , end
33
+ }
34
+
35
+ type distributedQueryMiddleware struct {
29
36
next Handler
30
37
enablePerStepStats bool
31
38
lookBackDelta time.Duration
32
39
}
33
40
34
- func (l logicalPlanGen ) NewLogicalPlan (qs string , start time.Time , end time.Time , step time.Duration ) (* logicalplan.Plan , error ) {
41
+ func (d distributedQueryMiddleware ) newLogicalPlan (qs string , start time.Time , end time.Time , step time.Duration ) (* logicalplan.Plan , error ) {
35
42
36
- qOpts := query.Options {}
37
- if step == 0 {
38
- qOpts = query.Options {
39
- Start : start ,
40
- End : start ,
41
- Step : 0 ,
42
- StepsBatch : stepBatch ,
43
- LookbackDelta : l .lookBackDelta ,
44
- EnablePerStepStats : l .enablePerStepStats ,
45
- }
46
- } else {
47
- qOpts = query.Options {
48
- Start : start ,
49
- End : end ,
50
- Step : step ,
51
- StepsBatch : stepBatch ,
52
- LookbackDelta : l .lookBackDelta ,
53
- EnablePerStepStats : l .enablePerStepStats ,
54
- }
43
+ start , end = getStartAndEnd (start , end , step )
44
+
45
+ qOpts := query.Options {
46
+ Start : start ,
47
+ End : end ,
48
+ Step : step ,
49
+ StepsBatch : stepBatch ,
50
+ LookbackDelta : d .lookBackDelta ,
51
+ EnablePerStepStats : d .enablePerStepStats ,
55
52
}
56
53
57
54
expr , err := parser .NewParser (qs , parser .WithFunctions (parser .Functions )).ParseExpr ()
@@ -71,7 +68,7 @@ func (l logicalPlanGen) NewLogicalPlan(qs string, start time.Time, end time.Time
71
68
return & optimizedPlan , nil
72
69
}
73
70
74
- func (l logicalPlanGen ) Do (ctx context.Context , r Request ) (Response , error ) {
71
+ func (d distributedQueryMiddleware ) Do (ctx context.Context , r Request ) (Response , error ) {
75
72
promReq , ok := r .(* PrometheusRequest )
76
73
if ! ok {
77
74
return nil , httpgrpc .Errorf (http .StatusBadRequest , "invalid request format" )
@@ -83,12 +80,12 @@ func (l logicalPlanGen) Do(ctx context.Context, r Request) (Response, error) {
83
80
84
81
var err error
85
82
86
- newLogicalPlan , err := l . NewLogicalPlan (promReq .Query , startTime , endTime , step )
83
+ newLogicalPlan , err := d . newLogicalPlan (promReq .Query , startTime , endTime , step )
87
84
if err != nil {
88
85
return nil , err
89
86
}
90
87
91
88
promReq .LogicalPlan = * newLogicalPlan
92
89
93
- return l .next .Do (ctx , r )
90
+ return d .next .Do (ctx , r )
94
91
}
0 commit comments