Poor performance in DirectoryArchiver due to unnecessary native calls
---------------------------------------------------------------------
Key: MASSEMBLY-499
URL: http://jira.codehaus.org/browse/MASSEMBLY-499
Project: Maven 2.x Assembly Plugin
Issue Type: Bug
Affects Versions: 2.2-beta-5
Environment: Unix/Linux
Reporter: Altin Papa
1)
maven-assembly-plugin calls DirectoryArchiver.copyFile( ArchiveEntry entry,
String vPath ), which calls
ArchiveEntryUtils.chmod( outFile, entry.getMode(), getLogger() );
resulting in a native child Process being forked to do a chmod (on Unix only)
The performance impact on a large assembly is enormous: patching
DirectoryArchiver to not do this resulted in a performance improvement by more
than 5 times.
I've raised this with Plexus as http://jira.codehaus.org/browse/PLXCOMP-156
2)
AssemblyFormatUtils should cache the environment, as AssemblyInterpolator does.
Both, though, should use the latest *plexus* CommandLineUtils, as opposed to
maven-assembly-plugin's own version. The plexus class uses System.getenv()
(JDK5+) when available.
Generally, please see if you can review the use of native command calls, esp.
in light of JDK5/6 APIs. Forked native calls had a horrible performance impact
on our (large, highly modular) assembly; which has only been corrected by local
patches of maven-assembly/plexus-archiver.
Thanks!
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira