[SUREFIRE] refactoring TestProvidingInputStream
Project: http://git-wip-us.apache.org/repos/asf/maven-surefire/repo Commit: http://git-wip-us.apache.org/repos/asf/maven-surefire/commit/d4b495f7 Tree: http://git-wip-us.apache.org/repos/asf/maven-surefire/tree/d4b495f7 Diff: http://git-wip-us.apache.org/repos/asf/maven-surefire/diff/d4b495f7 Branch: refs/heads/master Commit: d4b495f73c9aadf2e168eae1c64c95d3977e8b18 Parents: a83675e Author: Tibor17 <tibo...@lycos.com> Authored: Mon Jul 13 23:48:23 2015 +0200 Committer: Tibor17 <tibo...@lycos.com> Committed: Thu Jul 23 23:28:10 2015 +0200 ---------------------------------------------------------------------- .../lazytestprovider/TestProvidingInputStream.java | 8 ++++++++ 1 file changed, 8 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/maven-surefire/blob/d4b495f7/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/TestProvidingInputStream.java ---------------------------------------------------------------------- diff --git a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/TestProvidingInputStream.java b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/TestProvidingInputStream.java index fd7d162..c82f554 100644 --- a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/TestProvidingInputStream.java +++ b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/lazytestprovider/TestProvidingInputStream.java @@ -86,10 +86,13 @@ public class TestProvidingInputStream { if ( closed.get() ) { + // help GC to free this object because StreamFeeder Thread cannot read it after IOE + currentBuffer = null; throw new EOFException( "closed unexpectedly" ); } else { + // isolation of instance variable in Thread stack byte[] buffer = currentBuffer; if ( buffer == null ) @@ -107,6 +110,8 @@ public class TestProvidingInputStream if ( closed.get() ) { + // help GC to free this object because StreamFeeder Thread cannot read it after IOE + currentBuffer = null; throw new EOFException( "closed unexpectedly" ); } @@ -114,6 +119,7 @@ public class TestProvidingInputStream if ( currentElement != null ) { buffer = encodeStringForForkCommunication( currentElement ); + // may override NULL from close(), therefore setting explicitly to NULL if IOE elsewhere currentBuffer = buffer; currentPos = 0; } @@ -144,6 +150,8 @@ public class TestProvidingInputStream } catch ( InterruptedException e ) { + // help GC to free this object because StreamFeeder Thread cannot read it after IOE + currentBuffer = null; throw new IOException( e.getLocalizedMessage() ); } }