Fix double close in streaming HTML output Writer.close() will close the OutputStream it wraps. The try block will also close the OutputStream. This cause the tail HTML to be output twice. Unless the servlet container supplies an OutputStream that throws an exception for any write attempt after close. Change-Id: Icaec2d284259d6e2f040e141253bc65d39407d55
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java index ec6c600..3754d60 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/LogServlet.java
@@ -115,10 +115,11 @@ data.put("title", title); - try (OutputStream out = startRenderStreamingHtml(req, res, "gitiles.logDetail", data); - Writer w = newWriter(out, res)) { + try (OutputStream out = startRenderStreamingHtml(req, res, "gitiles.logDetail", data)) { + Writer w = newWriter(out, res); new LogSoyData(req, access, pretty) .renderStreaming(paginator, null, renderer, w, df); + w.flush(); } renderHtml(req, res, "gitiles.logDetail", data);
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java index 4e726dd..7e8e573 100644 --- a/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java +++ b/gitiles-servlet/src/main/java/com/google/gitiles/RepositoryIndexServlet.java
@@ -97,10 +97,11 @@ if (paginator != null) { DateFormatter df = new DateFormatter(access, Format.DEFAULT); - try (OutputStream out = startRenderStreamingHtml(req, res, "gitiles.repositoryIndex", data); - Writer w = newWriter(out, res)) { + try (OutputStream out = startRenderStreamingHtml(req, res, "gitiles.repositoryIndex", data)) { + Writer w = newWriter(out, res); new LogSoyData(req, access, "oneline") .renderStreaming(paginator, "HEAD", renderer, w, df); + w.flush(); } } else { renderHtml(req, res, "gitiles.repositoryIndex", data);