Skip to content

Commit a02ade7

Browse files
Merge pull request #6456 from eclipse/jetty-9.4.x-6383-FileBufferedResponseHandler
Merge fix to BufferedResponseHandlerTest to 9.4.x
2 parents a3effb1 + e140478 commit a02ade7

File tree

3 files changed

+44
-8
lines changed

3 files changed

+44
-8
lines changed

jetty-server/src/main/java/org/eclipse/jetty/server/handler/BufferedResponseHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ protected interface BufferedInterceptor extends HttpOutput.Interceptor
209209
{
210210
}
211211

212-
private class ArrayBufferedInterceptor implements BufferedInterceptor
212+
class ArrayBufferedInterceptor implements BufferedInterceptor
213213
{
214214
private final Interceptor _next;
215215
private final HttpChannel _channel;

jetty-server/src/main/java/org/eclipse/jetty/server/handler/FileBufferedResponseHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ protected BufferedInterceptor newBufferedInterceptor(HttpChannel httpChannel, In
7676
return new FileBufferedInterceptor(httpChannel, interceptor);
7777
}
7878

79-
private class FileBufferedInterceptor implements BufferedResponseHandler.BufferedInterceptor
79+
class FileBufferedInterceptor implements BufferedResponseHandler.BufferedInterceptor
8080
{
8181
private static final int MAX_MAPPED_BUFFER_SIZE = Integer.MAX_VALUE / 2;
8282

@@ -111,7 +111,7 @@ public void resetBuffer()
111111
BufferedInterceptor.super.resetBuffer();
112112
}
113113

114-
private void dispose()
114+
protected void dispose()
115115
{
116116
IO.close(_fileOutputStream);
117117
_fileOutputStream = null;

jetty-server/src/test/java/org/eclipse/jetty/server/FileBufferedResponseHandlerTest.java renamed to jetty-server/src/test/java/org/eclipse/jetty/server/handler/FileBufferedResponseHandlerTest.java

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
// ========================================================================
1717
//
1818

19-
package org.eclipse.jetty.server;
19+
package org.eclipse.jetty.server.handler;
2020

2121
import java.io.File;
2222
import java.io.IOException;
@@ -30,6 +30,7 @@
3030
import java.time.Duration;
3131
import java.util.Random;
3232
import java.util.concurrent.CompletableFuture;
33+
import java.util.concurrent.CountDownLatch;
3334
import java.util.concurrent.TimeUnit;
3435
import java.util.concurrent.atomic.AtomicLong;
3536
import javax.servlet.ServletException;
@@ -39,9 +40,14 @@
3940

4041
import org.eclipse.jetty.http.HttpStatus;
4142
import org.eclipse.jetty.http.HttpTester;
42-
import org.eclipse.jetty.server.handler.AbstractHandler;
43-
import org.eclipse.jetty.server.handler.FileBufferedResponseHandler;
44-
import org.eclipse.jetty.server.handler.HandlerCollection;
43+
import org.eclipse.jetty.server.HttpChannel;
44+
import org.eclipse.jetty.server.HttpConfiguration;
45+
import org.eclipse.jetty.server.HttpConnectionFactory;
46+
import org.eclipse.jetty.server.HttpOutput;
47+
import org.eclipse.jetty.server.LocalConnector;
48+
import org.eclipse.jetty.server.Request;
49+
import org.eclipse.jetty.server.Server;
50+
import org.eclipse.jetty.server.ServerConnector;
4551
import org.eclipse.jetty.toolchain.test.FS;
4652
import org.eclipse.jetty.toolchain.test.MavenTestingUtils;
4753
import org.eclipse.jetty.util.Callback;
@@ -63,6 +69,7 @@ public class FileBufferedResponseHandlerTest
6369
{
6470
private static final Logger LOG = Log.getLogger(FileBufferedResponseHandlerTest.class);
6571

72+
private final CountDownLatch _disposeLatch = new CountDownLatch(1);
6673
private Server _server;
6774
private LocalConnector _localConnector;
6875
private ServerConnector _serverConnector;
@@ -86,7 +93,22 @@ public void before() throws Exception
8693
_serverConnector = new ServerConnector(_server, new HttpConnectionFactory(config));
8794
_server.addConnector(_serverConnector);
8895

89-
_bufferedHandler = new FileBufferedResponseHandler();
96+
_bufferedHandler = new FileBufferedResponseHandler()
97+
{
98+
@Override
99+
protected BufferedInterceptor newBufferedInterceptor(HttpChannel httpChannel, HttpOutput.Interceptor interceptor)
100+
{
101+
return new FileBufferedInterceptor(httpChannel, interceptor)
102+
{
103+
@Override
104+
protected void dispose()
105+
{
106+
super.dispose();
107+
_disposeLatch.countDown();
108+
}
109+
};
110+
}
111+
};
90112
_bufferedHandler.setTempDir(_testDir);
91113
_bufferedHandler.getPathIncludeExclude().include("/include/*");
92114
_bufferedHandler.getPathIncludeExclude().exclude("*.exclude");
@@ -157,6 +179,8 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
157179
assertThat(response.getStatus(), is(HttpStatus.OK_200));
158180
assertThat(responseContent, containsString("Committed: false"));
159181
assertThat(responseContent, containsString("NumFiles: 1"));
182+
183+
assertTrue(_disposeLatch.await(5, TimeUnit.SECONDS));
160184
assertThat(getNumFiles(), is(0));
161185
}
162186

@@ -249,6 +273,8 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
249273
assertThat(responseContent, containsString("NumFilesBeforeFlush: 0"));
250274
assertThat(responseContent, containsString("Committed: false"));
251275
assertThat(responseContent, containsString("NumFiles: 1"));
276+
277+
assertTrue(_disposeLatch.await(5, TimeUnit.SECONDS));
252278
assertThat(getNumFiles(), is(0));
253279
}
254280

@@ -279,6 +305,8 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
279305
assertThat(response.getStatus(), is(HttpStatus.OK_200));
280306
assertThat(responseContent, not(containsString("writtenAfterClose")));
281307
assertThat(responseContent, containsString("NumFiles: 1"));
308+
309+
assertTrue(_disposeLatch.await(5, TimeUnit.SECONDS));
282310
assertThat(getNumFiles(), is(0));
283311
}
284312

@@ -339,6 +367,8 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
339367
// The flush should not create the file unless there is content to write.
340368
assertThat(response.getStatus(), is(HttpStatus.OK_200));
341369
assertThat(responseContent, containsString("NumFiles: 0"));
370+
371+
assertTrue(_disposeLatch.await(5, TimeUnit.SECONDS));
342372
assertThat(getNumFiles(), is(0));
343373
}
344374

@@ -378,6 +408,8 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
378408
assertThat(responseContent, containsString("NumFilesBeforeReset: 1"));
379409
assertThat(responseContent, containsString("NumFilesAfterReset: 0"));
380410
assertThat(responseContent, containsString("NumFilesAfterWrite: 1"));
411+
412+
assertTrue(_disposeLatch.await(5, TimeUnit.SECONDS));
381413
assertThat(getNumFiles(), is(0));
382414
}
383415

@@ -451,6 +483,8 @@ public boolean content(ByteBuffer ref)
451483
assertThat(response.get("NumFiles"), is("1"));
452484
assertThat(response.get("FileSize"), is(Long.toString(fileSize)));
453485
assertThat(received.get(), is(fileSize));
486+
487+
assertTrue(_disposeLatch.await(5, TimeUnit.SECONDS));
454488
assertThat(getNumFiles(), is(0));
455489
}
456490

@@ -531,6 +565,7 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
531565
assertThat(error.getMessage(), containsString("intentionally throwing from interceptor"));
532566

533567
// All files were deleted.
568+
assertTrue(_disposeLatch.await(5, TimeUnit.SECONDS));
534569
assertThat(getNumFiles(), is(0));
535570
}
536571

@@ -579,6 +614,7 @@ public void handle(String target, Request baseRequest, HttpServletRequest reques
579614
assertThat(error, instanceOf(NoSuchFileException.class));
580615

581616
// No files were created.
617+
assertTrue(_disposeLatch.await(5, TimeUnit.SECONDS));
582618
assertThat(getNumFiles(), is(0));
583619
}
584620

0 commit comments

Comments
 (0)