Repository: ranger Updated Branches: refs/heads/master f0cb6223d -> 9cdc1144f
RANGER-1814 : Move the reader into a local variable, and so it can be ensured by static code analysis, that it's closed properly. Change-Id: I942079f5b95cdd6a5f1131be1ed18d0f7e6b076e Signed-off-by: Colm O hEigeartaigh <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/ranger/commit/9cdc1144 Tree: http://git-wip-us.apache.org/repos/asf/ranger/tree/9cdc1144 Diff: http://git-wip-us.apache.org/repos/asf/ranger/diff/9cdc1144 Branch: refs/heads/master Commit: 9cdc1144f4938f666c80bd5cea6f2243492c71a3 Parents: f0cb622 Author: Zsombor Gegesy <[email protected]> Authored: Thu Sep 28 13:02:37 2017 +0200 Committer: Colm O hEigeartaigh <[email protected]> Committed: Mon Oct 2 12:33:01 2017 +0100 ---------------------------------------------------------------------- .../audit/provider/LocalFileLogBuffer.java | 59 ++++++++++---------- 1 file changed, 30 insertions(+), 29 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ranger/blob/9cdc1144/agents-audit/src/main/java/org/apache/ranger/audit/provider/LocalFileLogBuffer.java ---------------------------------------------------------------------- diff --git a/agents-audit/src/main/java/org/apache/ranger/audit/provider/LocalFileLogBuffer.java b/agents-audit/src/main/java/org/apache/ranger/audit/provider/LocalFileLogBuffer.java index 56a24ed..8a14394 100644 --- a/agents-audit/src/main/java/org/apache/ranger/audit/provider/LocalFileLogBuffer.java +++ b/agents-audit/src/main/java/org/apache/ranger/audit/provider/LocalFileLogBuffer.java @@ -367,7 +367,6 @@ class DestinationDispatcherThread<T> extends Thread { private DebugTracer mLogger = null; private String mCurrentLogfile = null; - private BufferedReader mReader = null; public DestinationDispatcherThread(LocalFileLogBuffer<T> fileLogBuffer, LogDestination<T> destination, DebugTracer tracer) { super(DestinationDispatcherThread.class.getSimpleName() + "-" + System.currentTimeMillis()); @@ -491,34 +490,35 @@ class DestinationDispatcherThread<T> extends Thread { long destinationPollIntervalInMs = 1000L; - openCurrentFile(); - - while(!mStopThread) { - String log = getNextStringifiedLog(); + BufferedReader reader = openCurrentFile(); + try { + while(!mStopThread) { + String log = getNextStringifiedLog(reader); - if(log == null) { // reached end-of-file - ret = true; + if(log == null) { // reached end-of-file + ret = true; - break; - } + break; + } - try { - // loop until log is sent successfully - while(!mStopThread && !mDestination.sendStringified(log)) { - try { - Thread.sleep(destinationPollIntervalInMs); - } catch(InterruptedException excp) { - throw new RuntimeException("LocalFileLogBuffer.sendCurrentFile(" + mCurrentLogfile + "): failed while waiting for destination to be available", excp); + try { + // loop until log is sent successfully + while(!mStopThread && !mDestination.sendStringified(log)) { + try { + Thread.sleep(destinationPollIntervalInMs); + } catch(InterruptedException excp) { + throw new RuntimeException("LocalFileLogBuffer.sendCurrentFile(" + mCurrentLogfile + "): failed while waiting for destination to be available", excp); + } } + } catch ( AuditMessageException msgError) { + mLogger.error("Error in log message:" + log); + //If there is error in log message, then it will be skipped } - } catch ( AuditMessageException msgError) { - mLogger.error("Error in log message:" + log); - //If there is error in log message, then it will be skipped } + } finally { + closeCurrentFile(reader); } - closeCurrentFile(); - if(!mStopThread) { mDestination.flush(); archiveCurrentFile(); @@ -529,7 +529,7 @@ class DestinationDispatcherThread<T> extends Thread { return ret; } - private String getNextStringifiedLog() { + private String getNextStringifiedLog(BufferedReader mReader) { String log = null; if(mReader != null) { @@ -569,15 +569,16 @@ class DestinationDispatcherThread<T> extends Thread { return log; } - private void openCurrentFile() { + private BufferedReader openCurrentFile() { mLogger.debug("==> openCurrentFile(" + mCurrentLogfile + ")"); + BufferedReader mReader = null; if(mCurrentLogfile != null) { try { FileInputStream inStr = new FileInputStream(mCurrentLogfile); - + InputStreamReader strReader = createReader(inStr); - + if(strReader != null) { mReader = new BufferedReader(strReader); } @@ -587,9 +588,10 @@ class DestinationDispatcherThread<T> extends Thread { } mLogger.debug("<== openCurrentFile(" + mCurrentLogfile + ")"); + return mReader; } - - private void closeCurrentFile() { + + private void closeCurrentFile(BufferedReader mReader) { mLogger.debug("==> closeCurrentFile(" + mCurrentLogfile + ")"); if(mReader != null) { @@ -599,7 +601,6 @@ class DestinationDispatcherThread<T> extends Thread { // ignore } } - mReader = null; mLogger.debug("<== closeCurrentFile(" + mCurrentLogfile + ")"); } @@ -653,7 +654,7 @@ class DestinationDispatcherThread<T> extends Thread { mCurrentLogfile = null; } - public InputStreamReader createReader(InputStream iStr) { + private InputStreamReader createReader(InputStream iStr) { InputStreamReader reader = null; if(iStr != null) {
