@@ -240,37 +240,43 @@ class PossiblySlowRunnable implements Runnable {
240240
241241 @ Override
242242 public void run () {
243- final String uri ;
244- if (pipelinedRequest != null && pipelinedRequest .last () instanceof FullHttpRequest ) {
245- uri = ((FullHttpRequest ) pipelinedRequest .last ()).uri ();
246- } else {
247- uri = fullHttpRequest .uri ();
248- }
243+ try {
244+ final String uri ;
245+ if (pipelinedRequest != null && pipelinedRequest .last () instanceof FullHttpRequest ) {
246+ uri = ((FullHttpRequest ) pipelinedRequest .last ()).uri ();
247+ } else {
248+ uri = fullHttpRequest .uri ();
249+ }
249250
250- final ByteBuf buffer = Unpooled .copiedBuffer (uri , StandardCharsets .UTF_8 );
251+ final ByteBuf buffer = Unpooled .copiedBuffer (uri , StandardCharsets .UTF_8 );
251252
252- final DefaultFullHttpResponse httpResponse = new DefaultFullHttpResponse (HttpVersion .HTTP_1_1 , HttpResponseStatus .OK , buffer );
253- httpResponse .headers ().add (HttpHeaderNames .CONTENT_LENGTH , buffer .readableBytes ());
253+ final FullHttpResponse httpResponse = new DefaultFullHttpResponse (HttpVersion .HTTP_1_1 , HttpResponseStatus .OK , buffer );
254+ httpResponse .headers ().add (HttpHeaderNames .CONTENT_LENGTH , buffer .readableBytes ());
254255
255- final boolean slow = uri .matches ("/slow/\\ d+" );
256- if (slow ) {
257- try {
258- Thread .sleep (scaledRandomIntBetween (500 , 1000 ));
259- } catch (InterruptedException e ) {
260- throw new RuntimeException (e );
256+ final boolean slow = uri .matches ("/slow/\\ d+" );
257+ if (slow ) {
258+ try {
259+ Thread .sleep (scaledRandomIntBetween (500 , 1000 ));
260+ } catch (InterruptedException e ) {
261+ throw new RuntimeException (e );
262+ }
263+ } else {
264+ assert uri .matches ("/\\ d+" );
261265 }
262- } else {
263- assert uri .matches ("/\\ d+" );
264- }
265266
266- final ChannelPromise promise = ctx .newPromise ();
267- final Object msg ;
268- if (pipelinedRequest != null ) {
269- msg = pipelinedRequest .createHttpResponse (httpResponse , promise );
270- } else {
271- msg = httpResponse ;
267+ final ChannelPromise promise = ctx .newPromise ();
268+ final Object msg ;
269+ if (pipelinedRequest != null ) {
270+ msg = pipelinedRequest .createHttpResponse (httpResponse , promise );
271+ } else {
272+ msg = httpResponse ;
273+ }
274+ ctx .writeAndFlush (msg , promise );
275+ } finally {
276+ if (pipelinedRequest != null ) {
277+ pipelinedRequest .release ();
278+ }
272279 }
273- ctx .writeAndFlush (msg , promise );
274280 }
275281
276282 }
0 commit comments