This is an automated email from the ASF dual-hosted git repository.

rfscholte pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/master by this push:
     new a89a3d3  [MNG-6999] prevent potential race condition
a89a3d3 is described below

commit a89a3d315d335a2ca670b3d0ec7eab41c5354ea3
Author: rfscholte <rfscho...@apache.org>
AuthorDate: Sun Nov 8 15:16:53 2020 +0100

    [MNG-6999] prevent potential race condition
---
 .../maven/model/building/AbstractModelSourceTransformer.java | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git 
a/maven-model-builder/src/main/java/org/apache/maven/model/building/AbstractModelSourceTransformer.java
 
b/maven-model-builder/src/main/java/org/apache/maven/model/building/AbstractModelSourceTransformer.java
index b4e8698..3bfd7e7 100644
--- 
a/maven-model-builder/src/main/java/org/apache/maven/model/building/AbstractModelSourceTransformer.java
+++ 
b/maven-model-builder/src/main/java/org/apache/maven/model/building/AbstractModelSourceTransformer.java
@@ -31,7 +31,6 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Consumer;
 
 import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerConfigurationException;
 import javax.xml.transform.TransformerException;
 import javax.xml.transform.TransformerFactory;
@@ -91,7 +90,6 @@ public abstract class AbstractModelSourceTransformer
         final TransformerHandler transformerHandler = getTransformerHandler( 
pomFile );
 
         final PipedOutputStream pout = new PipedOutputStream();
-        
         OutputStream out = filterOutputStream( pout, pomFile );
 
         final javax.xml.transform.Result result;
@@ -108,7 +106,6 @@ public abstract class AbstractModelSourceTransformer
             transformerHandler.setResult( new StreamResult( out ) );
         }
 
-        final Transformer transformer;
         final AbstractSAXFilter filter;
         try
         {
@@ -139,7 +136,6 @@ public abstract class AbstractModelSourceTransformer
                     throw exception;
                 }
             } );
-            transformer = transformerFactory.newTransformer();
         }
         catch ( TransformerConfigurationException | SAXException | 
ParserConfigurationException e )
         {
@@ -151,12 +147,14 @@ public abstract class AbstractModelSourceTransformer
 
         IOExceptionHandler eh = new IOExceptionHandler();
 
-        
+        // Ensure pipedStreams are connected before the transformThread 
starts!!
+        final PipedInputStream pipedInputStream = new PipedInputStream( pout );
+
         Thread transformThread = new Thread( () -> 
         {
             try ( PipedOutputStream pos = pout )
             {
-                transformer.transform( transformSource, result );
+                transformerFactory.newTransformer().transform( 
transformSource, result );
             }
             catch ( TransformerException | IOException e )
             {
@@ -167,7 +165,7 @@ public abstract class AbstractModelSourceTransformer
         transformThread.setDaemon( true );
         transformThread.start();
         
-        return new ThreadAwareInputStream( new PipedInputStream( pout ), eh );
+        return new ThreadAwareInputStream( pipedInputStream, eh );
     }
 
     private static class IOExceptionHandler

Reply via email to