Skip to content

Commit fcb19af

Browse files
authored
fix: change inner req hdr caused race (#775)
Signed-off-by: spacewander <spacewanderlzx@gmail.com>
1 parent 23ad00d commit fcb19af

File tree

1 file changed

+4
-10
lines changed

1 file changed

+4
-10
lines changed

api/pkg/filtermanager/filtermanager_dev.go

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,11 @@ func (m *filterManager) OnLog(reqHdr capi.RequestHeaderMap, reqTrailer capi.Requ
2929
return
3030
}
3131

32-
m.hdrLock.Lock()
33-
if m.reqHdr == nil {
34-
m.reqHdr = &filterManagerRequestHeaderMap{
35-
RequestHeaderMap: reqHdr,
36-
}
37-
} else {
38-
// In our benchmark BenchmarkFilterManagerRegular, reuse the request header wrapper is 5% faster than create a new one,
39-
// even the reusage requires holding the lock though it is running on fast path.
40-
h, _ := m.reqHdr.(*filterManagerRequestHeaderMap)
41-
h.RequestHeaderMap = reqHdr
32+
wrappedReqHdr := &filterManagerRequestHeaderMap{
33+
RequestHeaderMap: reqHdr,
4234
}
35+
m.hdrLock.Lock()
36+
m.reqHdr = wrappedReqHdr
4337
m.hdrLock.Unlock()
4438
m.runOnLogPhase(m.reqHdr, reqTrailer, rspHdr, rspTrailer)
4539
}

0 commit comments

Comments
 (0)