atlib77 commented on pull request #538:
URL: https://github.com/apache/maven-mvnd/pull/538#issuecomment-996360274


   Wow!  You... are... quick!! :)  Thank you so much for taking the time to 
test out the idea.
   
   So I gave it a shot and strangely, despite you spinning of a new thread, the 
task didn't finish until the thread completed.  I don't really understand why.  
I made some changes to it by using a ExecutorService:
   
   private static ExecutorService executorService = 
Executors.newSingleThreadExecutor();
   and then 
   executorService.submit(() -> deleteDir(delDir, retryOnError));
   
   and then it seem to finish the maven-goal right away (and process the delete 
in the background)
   
   To summarize the results a bit for my specific case (13 projects in build):
   
   **Time spent when using the fastclean plugin:**
   clean goal: 174 ms
   total build time: 01:51 min (Wall Clock)
   
   **Time spent when using the stock maven clean plugin:**
   clean goal: 62263 ms
   total build time:  02:15 min (Wall Clock)
   
   So approx. 20% reduction in clean&build time!  I think that's definitely 
worth something :)  Could possibly be sped up further by delaying the deletes 
(or lowering priority of it)
   
   (Using the fastclean plugin in mvn with -T1 it took 536 ms)
   
   So I'm really hopeful this could go somewhere.  However, it feels like this 
has to be run within the maven daemon, as opposed to just maven, in order to be 
able to run this properly.  Otherwise we'll take the hit during maven shutdown.
   
   Once again, thanks a lot!
   Atli
   
   
   ps.
   btw, I also skipped the tmpDir and renamed directly (instead of moving the 
delDir to the target folder). I did that because if you start a new build while 
the delete is still ongoing, you get into problems:
   
                   String name = directory.getFileName().toString() + "-" + 
random;
                   Path delDir = directory.resolveSibling(name);
                   try {
                       Files.move(directory, delDir);
                       Files.createDirectory(directory);
   
   
   
   ---
   
   Some additional numbers from my tests:
   
   [INFO] Plugins in lifecycle Phases:
   [INFO]
   [INFO] clean:
   [INFO]      206 ms: 
org.apache.maven.plugins:maven-clean-plugin:2.5:clean:default-clean
   [INFO]        2 ms: 
org.apache.maven.plugins:maven-clean-plugin:2.5:clean:default-clean
   [INFO]      470 ms: 
org.apache.maven.plugins:maven-clean-plugin:3.1.0:clean:default-clean
   [INFO]    11531 ms: 
org.apache.maven.plugins:maven-clean-plugin:2.5:clean:default-clean
   [INFO]     9513 ms: 
org.apache.maven.plugins:maven-clean-plugin:2.5:clean:default-clean
   [INFO]        2 ms: 
org.apache.maven.plugins:maven-clean-plugin:2.5:clean:default-clean
   [INFO]    12009 ms: 
org.apache.maven.plugins:maven-clean-plugin:2.5:clean:default-clean
   [INFO]     1926 ms: 
org.apache.maven.plugins:maven-clean-plugin:2.5:clean:default-clean
   [INFO]        2 ms: 
org.apache.maven.plugins:maven-clean-plugin:2.5:clean:default-clean
   [INFO]     2377 ms: 
org.apache.maven.plugins:maven-clean-plugin:2.5:clean:default-clean
   [INFO]     4097 ms: 
org.apache.maven.plugins:maven-clean-plugin:2.5:clean:default-clean
   [INFO]     2432 ms: 
org.apache.maven.plugins:maven-clean-plugin:2.5:clean:default-clean
   [INFO]    17696 ms: 
org.apache.maven.plugins:maven-clean-plugin:2.5:clean:default-clean
   
   
   **vs fastclean:**
   
   [INFO] Plugins in lifecycle Phases:
   [INFO]
   [INFO] clean:
   [INFO]       23 ms: 
org.mvndaemon.mvnd:mvnd-fastclean-maven-plugin:0.7.2-SNAPSHOT:clean:default-clean
   [INFO]       19 ms: 
org.mvndaemon.mvnd:mvnd-fastclean-maven-plugin:0.7.2-SNAPSHOT:clean:default-clean
   [INFO]        2 ms: 
org.mvndaemon.mvnd:mvnd-fastclean-maven-plugin:0.7.2-SNAPSHOT:clean:default-clean
   [INFO]       12 ms: 
org.mvndaemon.mvnd:mvnd-fastclean-maven-plugin:0.7.2-SNAPSHOT:clean:default-clean
   [INFO]       20 ms: 
org.mvndaemon.mvnd:mvnd-fastclean-maven-plugin:0.7.2-SNAPSHOT:clean:default-clean
   [INFO]       10 ms: 
org.mvndaemon.mvnd:mvnd-fastclean-maven-plugin:0.7.2-SNAPSHOT:clean:default-clean
   [INFO]       15 ms: 
org.mvndaemon.mvnd:mvnd-fastclean-maven-plugin:0.7.2-SNAPSHOT:clean:default-clean
   [INFO]       13 ms: 
org.mvndaemon.mvnd:mvnd-fastclean-maven-plugin:0.7.2-SNAPSHOT:clean:default-clean
   [INFO]       16 ms: 
org.mvndaemon.mvnd:mvnd-fastclean-maven-plugin:0.7.2-SNAPSHOT:clean:default-clean
   [INFO]        9 ms: 
org.mvndaemon.mvnd:mvnd-fastclean-maven-plugin:0.7.2-SNAPSHOT:clean:default-clean
   [INFO]        2 ms: 
org.mvndaemon.mvnd:mvnd-fastclean-maven-plugin:0.7.2-SNAPSHOT:clean:default-clean
   [INFO]       16 ms: 
org.mvndaemon.mvnd:mvnd-fastclean-maven-plugin:0.7.2-SNAPSHOT:clean:default-clean
   [INFO]       17 ms: 
org.mvndaemon.mvnd:mvnd-fastclean-maven-plugin:0.7.2-SNAPSHOT:clean:default-clean
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to