@@ -22,16 +22,13 @@ package zanzibar
22
22
23
23
import (
24
24
"context"
25
- "time"
26
25
27
26
jsonschema "github.com/mcuadros/go-jsonschema-generator"
28
27
"github.com/uber-go/tally"
29
28
)
30
29
31
30
const (
32
- middlewareRequestLatencyTag = "middleware.request.latency"
33
- middlewareResponseLatencyTag = "middleware.response.latency"
34
- middlewareRequestStatusTag = "middleware.request.status"
31
+ middlewareRequestStatusTag = "middleware.request.status"
35
32
)
36
33
37
34
// MiddlewareStack is a stack of Middleware Handlers that can be invoked as an Handle.
@@ -111,23 +108,16 @@ func (m *MiddlewareStack) Handle(
111
108
res * ServerHTTPResponse ) context.Context {
112
109
113
110
shared := NewSharedState (m .middlewares )
114
- middlewareRequestStartTime := time .Now ()
115
111
116
112
for i := 0 ; i < len (m .middlewares ); i ++ {
117
113
ctx , ok := m .middlewares [i ].HandleRequest (ctx , req , res , shared )
118
114
// If a middleware errors and writes to the response header
119
115
// then abort the rest of the stack and evaluate the response
120
116
// handlers for the middlewares seen so far.
121
117
if ok == false {
122
- //record latency for middlewares requests in unsuccessful case as the middleware requests calls are terminated
123
- m .recordLatency (middlewareRequestLatencyTag , middlewareRequestStartTime , req .scope )
124
-
125
- middlewareResponseStartTime := time .Now () // start the timer for middleware responses
126
118
for j := i ; j >= 0 ; j -- {
127
119
m .middlewares [j ].HandleResponse (ctx , res , shared )
128
120
}
129
- //record latency for middlewares responses in unsuccessful case
130
- m .recordLatency (middlewareResponseLatencyTag , middlewareResponseStartTime , req .scope )
131
121
132
122
//for error metrics only emit when there is gateway error and not request error
133
123
// the percentage can be calculated via error_count/total_request
@@ -137,27 +127,15 @@ func (m *MiddlewareStack) Handle(
137
127
return ctx
138
128
}
139
129
}
140
- // record latency for middlewares requests in successful case
141
- m .recordLatency (middlewareRequestLatencyTag , middlewareRequestStartTime , req .scope )
142
130
143
131
ctx = m .handle (ctx , req , res )
144
132
145
- middlewareResponseStartTime := time .Now ()
146
133
for i := len (m .middlewares ) - 1 ; i >= 0 ; i -- {
147
134
m .middlewares [i ].HandleResponse (ctx , res , shared )
148
135
}
149
- // record latency for middlewares responses in successful case
150
- m .recordLatency (middlewareResponseLatencyTag , middlewareResponseStartTime , req .scope )
151
136
return ctx
152
137
}
153
138
154
- // recordLatency measures the latency as per the tagName and start time given.
155
- func (m * MiddlewareStack ) recordLatency (tagName string , startTime time.Time , scope tally.Scope ) {
156
- elapsed := time .Now ().Sub (startTime )
157
- scope .Timer (tagName ).Record (elapsed )
158
- scope .Histogram (tagName , tally .DefaultBuckets ).RecordDuration (elapsed )
159
- }
160
-
161
139
// emitAvailability is used to increment the error counter for a particular tagName.
162
140
func (m * MiddlewareStack ) emitAvailabilityError (tagName string , middlewareName string , scope tally.Scope ) {
163
141
tagged := scope .Tagged (map [string ]string {
0 commit comments