You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by se...@apache.org on 2015/09/17 20:20:21 UTC

[49/51] [abbrv] flink git commit: Revert "[FLINK-2605] [runtime] Unclosed RandomAccessFile may leak resource in StaticFileServerHandler"

Revert "[FLINK-2605] [runtime] Unclosed RandomAccessFile may leak resource in StaticFileServerHandler"

The change breaks the functionality by returning incorrect HTTP responses (length / contents mismatch).


Project: http://git-wip-us.apache.org/repos/asf/flink/repo
Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/482d4373
Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/482d4373
Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/482d4373

Branch: refs/heads/master
Commit: 482d4373facbf2e24bc76eb04b2a5550434c91b8
Parents: 506ce61
Author: Stephan Ewen <se...@apache.org>
Authored: Wed Sep 16 22:38:40 2015 +0200
Committer: Stephan Ewen <se...@apache.org>
Committed: Thu Sep 17 14:21:53 2015 +0200

----------------------------------------------------------------------
 .../files/StaticFileServerHandler.java          | 37 +++++++++++---------
 1 file changed, 20 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flink/blob/482d4373/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/files/StaticFileServerHandler.java
----------------------------------------------------------------------
diff --git a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/files/StaticFileServerHandler.java b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/files/StaticFileServerHandler.java
index b6642a2..e368ea9 100644
--- a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/files/StaticFileServerHandler.java
+++ b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/files/StaticFileServerHandler.java
@@ -165,26 +165,29 @@ public class StaticFileServerHandler extends SimpleChannelInboundHandler<Routed>
 			logger.debug("Responding with file '" + file.getAbsolutePath() + '\'');
 		}
 
-		try (RandomAccessFile raf = new RandomAccessFile(file, "r")) {
-			long fileLength = raf.length();
-
-			HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK);
-			setContentTypeHeader(response, file);
-			setDateAndCacheHeaders(response, file);
-			if (HttpHeaders.isKeepAlive(request)) {
-				response.headers().set(CONNECTION, HttpHeaders.Values.KEEP_ALIVE);
-			}
-			HttpHeaders.setContentLength(response, fileLength);
-
-			// write the initial line and the header.
-			ctx.write(response);
-
-			// write the content.
-			ctx.write(new DefaultFileRegion(raf.getChannel(), 0, fileLength), ctx.newProgressivePromise());
-		} catch (FileNotFoundException e) {
+		final RandomAccessFile raf;
+		try {
+			raf = new RandomAccessFile(file, "r");
+		}
+		catch (FileNotFoundException e) {
 			sendError(ctx, NOT_FOUND);
 			return;
 		}
+		long fileLength = raf.length();
+
+		HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK);
+		setContentTypeHeader(response, file);
+		setDateAndCacheHeaders(response, file);
+		if (HttpHeaders.isKeepAlive(request)) {
+			response.headers().set(CONNECTION, HttpHeaders.Values.KEEP_ALIVE);
+		}
+		HttpHeaders.setContentLength(response, fileLength);
+
+		// write the initial line and the header.
+		ctx.write(response);
+
+		// write the content.
+		ctx.write(new DefaultFileRegion(raf.getChannel(), 0, fileLength), ctx.newProgressivePromise());
 		ChannelFuture lastContentFuture = ctx.writeAndFlush(LastHttpContent.EMPTY_LAST_CONTENT);
 
 		// close the connection, if no keep-alive is needed