@@ -2150,21 +2150,28 @@ func Benchmark_Router_Next_Parallel(b *testing.B) {
21502150 app := New ()
21512151 registerDummyRoutes (app )
21522152 app .startupProcess ()
2153- request := & fasthttp.RequestCtx {}
2154- request .Request .Header .SetMethod ("DELETE" )
2155- request .URI ().SetPath ("/user/keys/1337" )
2156- var res bool
2157- var err error
2158- c := acquireDefaultCtxForRouterBenchmark (b , app , request )
21592153 b .RunParallel (func (pb * testing.PB ) {
2154+ // Each worker gets its own request and context to avoid data races.
2155+ request := & fasthttp.RequestCtx {}
2156+ request .Request .Header .SetMethod ("DELETE" )
2157+ request .URI ().SetPath ("/user/keys/1337" )
2158+ c := acquireDefaultCtxForRouterBenchmark (b , app , request )
21602159 for pb .Next () {
21612160 c .indexRoute = - 1
2162- res , err = app .next (c )
2161+ _ , _ = app .next (c )
21632162 }
21642163 })
2164+
2165+ // Single-threaded verification on a fresh context to preserve correctness checks.
2166+ verifyRequest := & fasthttp.RequestCtx {}
2167+ verifyRequest .Request .Header .SetMethod ("DELETE" )
2168+ verifyRequest .URI ().SetPath ("/user/keys/1337" )
2169+ verifyCtx := acquireDefaultCtxForRouterBenchmark (b , app , verifyRequest )
2170+ verifyCtx .indexRoute = - 1
2171+ res , err := app .next (verifyCtx )
21652172 require .NoError (b , err )
21662173 require .True (b , res )
2167- require .Equal (b , 4 , c .indexRoute )
2174+ require .Equal (b , 4 , verifyCtx .indexRoute )
21682175}
21692176
21702177func Benchmark_Router_Next_Default_Immutable_Parallel (b * testing.B ) {
0 commit comments