[ 
http://jira.codehaus.org/browse/MASSEMBLY-424?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=214127#action_214127
 ] 

Paul Smith commented on MASSEMBLY-424:
--------------------------------------

through a set of thread dumps taken during an assembly run, I notice frequent 
time spent in this state:

{noformat}
"main" prio=5 tid=0x0000000102800000 nid=0x100501000 runnable 
[0x00000001004fe000]
   java.lang.Thread.State: RUNNABLE
        at java.lang.UNIXProcess.forkAndExec(Native Method)
        at java.lang.UNIXProcess.<init>(UNIXProcess.java:53)
        at java.lang.ProcessImpl.start(ProcessImpl.java:91)
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:452)
        at java.lang.Runtime.exec(Runtime.java:593)
        at java.lang.Runtime.exec(Runtime.java:509)
        at 
org.codehaus.plexus.util.cli.Commandline.execute(Commandline.java:636)
        at 
org.codehaus.plexus.util.cli.CommandLineUtils.executeCommandLine(CommandLineUtils.java:140)
        at 
org.codehaus.plexus.util.cli.CommandLineUtils.executeCommandLine(CommandLineUtils.java:103)
        at 
org.codehaus.plexus.components.io.attributes.PlexusIoResourceAttributeUtils.executeLs(PlexusIoResourceAttributeUtils.java:277)
        at 
org.codehaus.plexus.components.io.attributes.PlexusIoResourceAttributeUtils.getFileAttributesByPath(PlexusIoResourceAttributeUtils.java:237)
        at 
org.codehaus.plexus.components.io.attributes.PlexusIoResourceAttributeUtils.getFileAttributes(PlexusIoResourceAttributeUtils.java:167)
        at 
org.codehaus.plexus.archiver.ArchiveEntry.createFileEntry(ArchiveEntry.java:157)
        at 
org.codehaus.plexus.archiver.AbstractArchiver.addFile(AbstractArchiver.java:374)
        at 
org.codehaus.plexus.archiver.AbstractArchiver.addFile(AbstractArchiver.java:290)
        at 
org.apache.maven.plugin.assembly.archive.archiver.AssemblyProxyArchiver.addFile(AssemblyProxyArchiver.java:474)
        at 
org.apache.maven.plugin.assembly.archive.task.AddArtifactTask.execute(AddArtifactTask.java:203)
        at 
org.apache.maven.plugin.assembly.archive.task.AddDependencySetsTask.addDependencySet(AddDependencySetsTask.java:195)
        at 
org.apache.maven.plugin.assembly.archive.task.AddDependencySetsTask.execute(AddDependencySetsTask.java:122)
        at 
org.apache.maven.plugin.assembly.archive.phase.ModuleSetAssemblyPhase.addModuleBinaries(ModuleSetAssemblyPhase.java:236)
        at 
org.apache.maven.plugin.assembly.archive.phase.ModuleSetAssemblyPhase.execute(ModuleSetAssemblyPhase.java:131)
        at 
org.apache.maven.plugin.assembly.archive.DefaultAssemblyArchiver.createArchive(DefaultAssemblyArchiver.java:190)
        at 
org.apache.maven.plugin.assembly.mojos.AbstractDirectoryMojo.createDirectory(AbstractDirectoryMojo.java:85)
        at 
org.apache.maven.plugin.assembly.mojos.AbstractDirectoryMojo.execute(AbstractDirectoryMojo.java:63)
        at 
org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:483)
        at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:678)
        at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:553)
        at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:523)
        at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:371)
        at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:268)
        at 
org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:181)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
        at 
org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:41)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
        at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
        at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
        at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
{noformat}

>From looking into the 
>PlexusIoResourceAttributeUtils.getFileAttributesByPath(..) method used by the 
>addFile method during the dependency archive, it is doing a Process Fork 
>per-Dependency to get the file attributes, which is a bit yucky.... that's not 
>going to scale very well at all.



> poor performance of dependencySet in assembly descriptor (compared to using 
> maven-dependency-plugin + fileSet)
> --------------------------------------------------------------------------------------------------------------
>
>                 Key: MASSEMBLY-424
>                 URL: http://jira.codehaus.org/browse/MASSEMBLY-424
>             Project: Maven 2.x Assembly Plugin
>          Issue Type: Bug
>    Affects Versions: 2.2-beta-4
>         Environment: maven 2.1.0, java 6u13, os x 10.5.6, macbook pro 5400rpm 
> disk
>            Reporter: Cameron Fieber
>            Priority: Critical
>
> The performance of the dependencySet element in the assembly descriptor is 
> significantly worse than achieving the equivalent result by doing an 
> execution of dependency:copy-dependencies and including the 
> target/dependencies folder as a fileSet in the assembly descriptor
> replacing:
> <assembly>
>    ...
>     <dependencySets>
>         <dependencySet>
>             <outputDirectory>lib</outputDirectory>
>         </dependencySet>
>     </dependencySets>
>    ...
> </assembly>
> with:
> <assembly>
>   ...
>    <fileSet>
>      <directory>${project.build.directory}/dependency</directory>
>      <outputDirectory>lib</outputDirectory>
>   </fileSet>
>   ...
> </assembly>
> and (in pom.xml):
> ...
>             <build>
>                 <plugins>
>                     <plugin>
>                         <groupId>org.apache.maven.plugins</groupId>
>                         <artifactId>maven-dependency-plugin</artifactId>
>                         <executions>
>                             <execution>
>                                 <phase>package</phase>
>                                 <goals>
>                                     <goal>copy-dependencies</goal>
>                                 </goals>
>                                 <configuration>
>                                     <includeScope>runtime</includeScope>
>                                 </configuration>
>                             </execution>
>                         </executions>
>                     </plugin>
>                     <plugin>
>                         <groupId>org.apache.maven.plugins</groupId>
>                         <artifactId>maven-assembly-plugin</artifactId>
> ...

-- 
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

        

Reply via email to