From 8ec0dfae40c7b06e01e57260d16d6256f885f4e6 Mon Sep 17 00:00:00 2001 From: Liwei Lin Date: Tue, 27 Sep 2016 20:49:52 +0800 Subject: [PATCH 1/2] [FLINK-4573] Fix potential resource leak due to unclosed RandomAccessFile in TaskManagerLogHandler --- .../webmonitor/handlers/TaskManagerLogHandler.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/handlers/TaskManagerLogHandler.java b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/handlers/TaskManagerLogHandler.java index 534304954847a..1ab5ed235debe 100644 --- a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/handlers/TaskManagerLogHandler.java +++ b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/handlers/TaskManagerLogHandler.java @@ -210,7 +210,17 @@ public void onSuccess(Object filePathOption) throws Throwable { LOG.error("Displaying TaskManager log failed.", e); return; } - long fileLength = raf.length(); + long fileLength; + try { + fileLength = raf.length(); + } catch (IOException ioe) { + display(ctx, request, "Displaying TaskManager log failed."); + LOG.error("Displaying TaskManager log failed.", ioe); + if (raf != null) { + raf.close(); + } + return; + } final FileChannel fc = raf.getChannel(); HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK); From 61250961533af997067300c0e4d36f952be3a158 Mon Sep 17 00:00:00 2001 From: Liwei Lin Date: Wed, 28 Sep 2016 23:34:36 +0800 Subject: [PATCH 2/2] Address comments --- .../runtime/webmonitor/handlers/TaskManagerLogHandler.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/handlers/TaskManagerLogHandler.java b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/handlers/TaskManagerLogHandler.java index 1ab5ed235debe..2f0d438786db8 100644 --- a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/handlers/TaskManagerLogHandler.java +++ b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/handlers/TaskManagerLogHandler.java @@ -216,10 +216,8 @@ public void onSuccess(Object filePathOption) throws Throwable { } catch (IOException ioe) { display(ctx, request, "Displaying TaskManager log failed."); LOG.error("Displaying TaskManager log failed.", ioe); - if (raf != null) { - raf.close(); - } - return; + raf.close(); + throw ioe; } final FileChannel fc = raf.getChannel();