Skip to content

Commit 33a43dd

Browse files
committed
Explain why we can't use Response.flushBuffer(), and invert the order of getOutputStream()/getWriter() to avoid creating a Writer if neither has been called before.
PiperOrigin-RevId: 297177511
1 parent e4b0698 commit 33a43dd

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

invoker/core/src/main/java/com/google/cloud/functions/invoker/NewHttpFunctionExecutor.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,13 @@ public void service(HttpServletRequest req, HttpServletResponse res) {
7272
res.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
7373
} finally {
7474
try {
75-
// Shouldn't HttpServletResponse.flushBuffer() work here? But it doesn't. So we have to
76-
// flush whichever of getWriter() or getOutputStream() works.
75+
// We can't use HttpServletResponse.flushBuffer() because we wrap the PrintWriter
76+
// returned by HttpServletResponse in our own BufferedWriter to match our API.
77+
// So we have to flush whichever of getWriter() or getOutputStream() works.
7778
try {
78-
respImpl.getWriter().flush();
79-
} catch (IllegalStateException e) {
8079
respImpl.getOutputStream().flush();
80+
} catch (IllegalStateException e) {
81+
respImpl.getWriter().flush();
8182
}
8283
} catch (IOException e) {
8384
// Too bad, can't flush.

0 commit comments

Comments
 (0)