{"action":"created","issue":{"url":"https://api.github.com/repos/codehaus-plexus/plexus-archiver/issues/8","labels_url":"https://api.github.com/repos/codehaus-plexus/plexus-archiver/issues/8/labels{/name}","comments_url":"https://api.github.com/repos/codehaus-plexus/plexus-archiver/issues/8/comments","events_url":"https://api.github.com/repos/codehaus-plexus/plexus-archiver/issues/8/events","html_url":"https://github.com/codehaus-plexus/plexus-archiver/issues/8","id":94072372,"number":8,"title":"Performance drawback when archiving to BZ2","user":{"login":"rkrell","id":202983,"avatar_url":"https://avatars.githubusercontent.com/u/202983?v=3","gravatar_id":"","url":"https://api.github.com/users/rkrell","html_url":"https://github.com/rkrell","followers_url":"https://api.github.com/users/rkrell/followers","following_url":"https://api.github.com/users/rkrell/following{/other_user}","gists_url":"https://api.github.com/users/rkrell/gists{/gist_id}","starred_url":"https://api.github.com/users/rkrell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rkrell/subscriptions","organizations_url":"https://api.github.com/users/rkrell/orgs","repos_url":"https://api.github.com/users/rkrell/repos","events_url":"https://api.github.com/users/rkrell/events{/privacy}","received_events_url":"https://api.github.com/users/rkrell/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-07-09T15:03:05Z","updated_at":"2015-07-09T17:28:43Z","closed_at":"2015-07-09T17:28:43Z","body":"There is a huge performance leak on my system when assemblying a BZ2 file in Maven with a final packed size of about 290 MB. It takes several hours (2-4 hours to create the final archive, while packing the same files natively using 'tar cjf ...' is done in 46 seconds on the same computer).\r\n\r\nUsing maven-assembly-plugin 2.4, Maven 3.2.5 with JRE 1.6.0_45 (64 bit).\r\nOS: OpenSUSE Linux (Tumbleweed), kernel 4.0.5-3-desktop #1 SMP PREEMPT\r\n\r\nI made a stacktrace from this:\r\n```\r\nFull thread dump Java HotSpot(TM) 64-Bit Server VM (20.45-b01 mixed mode):\r\n\r\n\"Thread-47548\" daemon prio=10 tid=0x00007fb260ec8000 nid=0x5fd waiting on condition [0x00007fb2b81cc000]\r\n   java.lang.Thread.State: TIMED_WAITING (parking)\r\n        at sun.misc.Unsafe.park(Native Method)\r\n        - parking to wait for  <0x0000000798961b60> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)\r\n        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:196)\r\n        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2025)\r\n        at java.util.concurrent.DelayQueue.take(DelayQueue.java:164)\r\n        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:609)\r\n        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:602)\r\n        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:957)\r\n        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:917)\r\n        at java.lang.Thread.run(Thread.java:662)\r\n\r\n\"CachedJobThread-1\" daemon prio=10 tid=0x00007fb270006800 nid=0x6378 in Object.wait() [0x00007fb2b8ffb000]\r\n   java.lang.Thread.State: WAITING (on object monitor)\r\n        at java.lang.Object.wait(Native Method)\r\n        - waiting on <0x0000000794c65b80> (a gk.common.util.ThreadCache$JobThread)\r\n        at java.lang.Object.wait(Object.java:485)\r\n        at gk.common.util.ThreadCache$JobThread.run(ThreadCache.java:176)\r\n        - locked <0x0000000794c65b80> (a gk.common.util.ThreadCache$JobThread)\r\n\r\n\"CachedJobThread-0\" daemon prio=10 tid=0x00007fb263b0f800 nid=0x75dc in Object.wait() [0x00007fb2b90fc000]\r\n   java.lang.Thread.State: TIMED_WAITING (on object monitor)\r\n        at java.lang.Object.wait(Native Method)\r\n        - waiting on <0x000000078f5962d0> (a gk.common.util.PlanTable)\r\n        at gk.common.util.LoopThread$LoopJob.run(LoopThread.java:109)\r\n        - locked <0x000000078f5962d0> (a gk.common.util.PlanTable)\r\n        at gk.common.util.ThreadCache$JobThread.run(ThreadCache.java:171)\r\n\r\n\"CachedJobThread-1\" daemon prio=10 tid=0x00007fb2a0001000 nid=0x1c0b in Object.wait() [0x00007fb2b9a22000]\r\n   java.lang.Thread.State: WAITING (on object monitor)\r\n        at java.lang.Object.wait(Native Method)\r\n        - waiting on <0x0000000785a8a0e8> (a gk.common.util.ThreadCache$JobThread)\r\n        at java.lang.Object.wait(Object.java:485)\r\n        at gk.common.util.ThreadCache$JobThread.run(ThreadCache.java:190)\r\n        - locked <0x0000000785a8a0e8> (a gk.common.util.ThreadCache$JobThread)\r\n\r\n\"resolver-5\" daemon prio=10 tid=0x00007fb2f5ab0000 nid=0x1937 waiting on condition [0x00007fb2b9b23000]\r\n   java.lang.Thread.State: WAITING (parking)\r\n        at sun.misc.Unsafe.park(Native Method)\r\n        - parking to wait for  <0x000000078179be08> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)\r\n        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)\r\n        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)\r\n        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)\r\n        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:957)\r\n        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:917)\r\n        at java.lang.Thread.run(Thread.java:662)\r\n\r\n\"resolver-4\" daemon prio=10 tid=0x00007fb2f5aaf000 nid=0x1936 waiting on condition [0x00007fb2b9c24000]\r\n   java.lang.Thread.State: WAITING (parking)\r\n        at sun.misc.Unsafe.park(Native Method)\r\n        - parking to wait for  <0x000000078179be08> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)\r\n        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)\r\n        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)\r\n        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)\r\n        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:957)\r\n        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:917)\r\n        at java.lang.Thread.run(Thread.java:662)\r\n\r\n\"resolver-3\" daemon prio=10 tid=0x00007fb2f5b09800 nid=0x1935 waiting on condition [0x00007fb2ba0f4000]\r\n   java.lang.Thread.State: WAITING (parking)\r\n        at sun.misc.Unsafe.park(Native Method)\r\n        - parking to wait for  <0x000000078179be08> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)\r\n        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)\r\n        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)\r\n        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)\r\n        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:957)\r\n        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:917)\r\n        at java.lang.Thread.run(Thread.java:662)\r\n\r\n\"resolver-2\" daemon prio=10 tid=0x00007fb2f5b08800 nid=0x1934 waiting on condition [0x00007fb2b9e58000]\r\n   java.lang.Thread.State: WAITING (parking)\r\n        at sun.misc.Unsafe.park(Native Method)\r\n        - parking to wait for  <0x000000078179be08> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)\r\n        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)\r\n        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)\r\n        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)\r\n        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:957)\r\n        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:917)\r\n        at java.lang.Thread.run(Thread.java:662)\r\n\r\n\"resolver-1\" daemon prio=10 tid=0x00007fb2f5aa0800 nid=0x1933 waiting on condition [0x00007fb2b9ff3000]\r\n   java.lang.Thread.State: WAITING (parking)\r\n        at sun.misc.Unsafe.park(Native Method)\r\n        - parking to wait for  <0x000000078179be08> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)\r\n        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)\r\n        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)\r\n        at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)\r\n        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:957)\r\n        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:917)\r\n        at java.lang.Thread.run(Thread.java:662)\r\n\r\n\"CachedJobThread-0\" daemon prio=10 tid=0x00007fb2f4ef4800 nid=0x190f in Object.wait() [0x00007fb2ba280000]\r\n   java.lang.Thread.State: TIMED_WAITING (on object monitor)\r\n        at java.lang.Object.wait(Native Method)\r\n        - waiting on <0x00000007824840e0> (a gk.common.util.PlanTable)\r\n        at gk.common.util.LoopThread$LoopJob.run(LoopThread.java:109)\r\n        - locked <0x00000007824840e0> (a gk.common.util.PlanTable)\r\n        at gk.common.util.ThreadCache$JobThread.run(ThreadCache.java:181)\r\n\r\n\"Thread-1\" daemon prio=10 tid=0x00007fb2f4b9e000 nid=0x190a waiting on condition [0x00007fb2bb890000]\r\n   java.lang.Thread.State: TIMED_WAITING (parking)\r\n        at sun.misc.Unsafe.park(Native Method)\r\n        - parking to wait for  <0x0000000781515148> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)\r\n        at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:196)\r\n        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2025)\r\n        at java.util.concurrent.DelayQueue.take(DelayQueue.java:164)\r\n        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:609)\r\n        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:602)\r\n        at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:957)\r\n        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:917)\r\n        at java.lang.Thread.run(Thread.java:662)\r\n\r\n\"Low Memory Detector\" daemon prio=10 tid=0x00007fb2f4098800 nid=0x1902 runnable [0x0000000000000000]\r\n   java.lang.Thread.State: RUNNABLE\r\n\r\n\"C2 CompilerThread1\" daemon prio=10 tid=0x00007fb2f4096800 nid=0x1901 waiting on condition [0x0000000000000000]\r\n   java.lang.Thread.State: RUNNABLE\r\n\r\n\"C2 CompilerThread0\" daemon prio=10 tid=0x00007fb2f4093800 nid=0x1900 waiting on condition [0x0000000000000000]\r\n   java.lang.Thread.State: RUNNABLE\r\n\r\n\"Signal Dispatcher\" daemon prio=10 tid=0x00007fb2f4091800 nid=0x18ff waiting on condition [0x0000000000000000]\r\n   java.lang.Thread.State: RUNNABLE\r\n\r\n\"Finalizer\" daemon prio=10 tid=0x00007fb2f4074800 nid=0x18fe in Object.wait() [0x00007fb2f045b000]\r\n   java.lang.Thread.State: WAITING (on object monitor)\r\n        at java.lang.Object.wait(Native Method)\r\n        - waiting on <0x0000000780da1588> (a java.lang.ref.ReferenceQueue$Lock)\r\n        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)\r\n        - locked <0x0000000780da1588> (a java.lang.ref.ReferenceQueue$Lock)\r\n        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)\r\n        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:171)\r\n\r\n\"Reference Handler\" daemon prio=10 tid=0x00007fb2f4072800 nid=0x18fd in Object.wait() [0x00007fb2f055c000]\r\n   java.lang.Thread.State: WAITING (on object monitor)\r\n        at java.lang.Object.wait(Native Method)\r\n        - waiting on <0x0000000780da1548> (a java.lang.ref.Reference$Lock)\r\n        at java.lang.Object.wait(Object.java:485)\r\n        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)\r\n        - locked <0x0000000780da1548> (a java.lang.ref.Reference$Lock)\r\n\r\n\"main\" prio=10 tid=0x00007fb2f4006000 nid=0x18f3 runnable [0x00007fb2f9e2e000]\r\n   java.lang.Thread.State: RUNNABLE\r\n        at org.codehaus.plexus.archiver.bzip2.CBZip2OutputStream.qSort3(CBZip2OutputStream.java:1199)\r\n        at org.codehaus.plexus.archiver.bzip2.CBZip2OutputStream.mainSort(CBZip2OutputStream.java:1483)\r\n        at org.codehaus.plexus.archiver.bzip2.CBZip2OutputStream.doReversibleTransformation(CBZip2OutputStream.java:1598)\r\n        at org.codehaus.plexus.archiver.bzip2.CBZip2OutputStream.endBlock(CBZip2OutputStream.java:522)\r\n        at org.codehaus.plexus.archiver.bzip2.CBZip2OutputStream.writeRun(CBZip2OutputStream.java:437)\r\n        at org.codehaus.plexus.archiver.bzip2.CBZip2OutputStream.write(CBZip2OutputStream.java:378)\r\n        at java.io.OutputStream.write(OutputStream.java:99)\r\n        at org.codehaus.plexus.archiver.tar.TarBuffer.writeBlock(TarBuffer.java:419)\r\n        at org.codehaus.plexus.archiver.tar.TarBuffer.writeRecord(TarBuffer.java:395)\r\n        at org.codehaus.plexus.archiver.tar.TarOutputStream.write(TarOutputStream.java:340)\r\n        at org.codehaus.plexus.archiver.tar.TarArchiver.tarFile(TarArchiver.java:311)\r\n        at org.codehaus.plexus.archiver.tar.TarArchiver.execute(TarArchiver.java:208)\r\n        at org.codehaus.plexus.archiver.AbstractArchiver.createArchive(AbstractArchiver.java:910)\r\n        at org.apache.maven.plugin.assembly.archive.archiver.AssemblyProxyArchiver.createArchive(AssemblyProxyArchiver.java:512)\r\n        at org.apache.maven.plugin.assembly.archive.DefaultAssemblyArchiver.createArchive(DefaultAssemblyArchiver.java:186)\r\n        at org.apache.maven.plugin.assembly.mojos.AbstractAssemblyMojo.execute(AbstractAssemblyMojo.java:436)\r\n        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)\r\n        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)\r\n        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)\r\n        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)\r\n        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)\r\n        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)\r\n        at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)\r\n        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)\r\n        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)\r\n        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)\r\n        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)\r\n        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)\r\n        at org.apache.maven.cli.MavenCli.main(MavenCli.java:160)\r\n        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\r\n        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\r\n        at java.lang.reflect.Method.invoke(Method.java:597)\r\n        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)\r\n        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)\r\n        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)\r\n        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)\r\n\r\n\"VM Thread\" prio=10 tid=0x00007fb2f406b800 nid=0x18fc runnable \r\n\r\n\"GC task thread#0 (ParallelGC)\" prio=10 tid=0x00007fb2f4019000 nid=0x18f4 runnable \r\n\r\n\"GC task thread#1 (ParallelGC)\" prio=10 tid=0x00007fb2f401b000 nid=0x18f5 runnable \r\n\r\n\"GC task thread#2 (ParallelGC)\" prio=10 tid=0x00007fb2f401d000 nid=0x18f6 runnable \r\n\r\n\"GC task thread#3 (ParallelGC)\" prio=10 tid=0x00007fb2f401e800 nid=0x18f7 runnable \r\n\r\n\"GC task thread#4 (ParallelGC)\" prio=10 tid=0x00007fb2f4020800 nid=0x18f8 runnable \r\n\r\n\"GC task thread#5 (ParallelGC)\" prio=10 tid=0x00007fb2f4022800 nid=0x18f9 runnable \r\n\r\n\"GC task thread#6 (ParallelGC)\" prio=10 tid=0x00007fb2f4024000 nid=0x18fa runnable \r\n\r\n\"GC task thread#7 (ParallelGC)\" prio=10 tid=0x00007fb2f4026000 nid=0x18fb runnable \r\n\r\n\"VM Periodic Task Thread\" prio=10 tid=0x00007fb2f40ab800 nid=0x1903 waiting on condition \r\n\r\nJNI global references: 1120\r\n\r\nHeap\r\n PSYoungGen      total 261952K, used 174369K [0x00000007f0000000, 0x0000000800000000, 0x0000000800000000)\r\n  eden space 261760K, 66% used [0x00000007f0000000,0x00000007faa30630,0x00000007fffa0000)\r\n  from space 192K, 50% used [0x00000007fffa0000,0x00000007fffb8000,0x00000007fffd0000)\r\n  to   space 192K, 0% used [0x00000007fffd0000,0x00000007fffd0000,0x0000000800000000)\r\n PSOldGen        total 685056K, used 426347K [0x0000000780000000, 0x00000007a9d00000, 0x00000007f0000000)\r\n  object space 685056K, 62% used [0x0000000780000000,0x000000079a05ac80,0x00000007a9d00000)\r\n PSPermGen       total 524288K, used 307518K [0x0000000740000000, 0x0000000760000000, 0x0000000780000000)\r\n  object space 524288K, 58% used [0x0000000740000000,0x0000000752c4fad8,0x0000000760000000)\r\n```"},"comment":{"url":"https://api.github.com/repos/codehaus-plexus/plexus-archiver/issues/comments/120079732","html_url":"https://github.com/codehaus-plexus/plexus-archiver/issues/8#issuecomment-120079732","issue_url":"https://api.github.com/repos/codehaus-plexus/plexus-archiver/issues/8","id":120079732,"user":{"login":"krosenvold","id":67744,"avatar_url":"https://avatars.githubusercontent.com/u/67744?v=3","gravatar_id":"","url":"https://api.github.com/users/krosenvold","html_url":"https://github.com/krosenvold","followers_url":"https://api.github.com/users/krosenvold/followers","following_url":"https://api.github.com/users/krosenvold/following{/other_user}","gists_url":"https://api.github.com/users/krosenvold/gists{/gist_id}","starred_url":"https://api.github.com/users/krosenvold/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/krosenvold/subscriptions","organizations_url":"https://api.github.com/users/krosenvold/orgs","repos_url":"https://api.github.com/users/krosenvold/repos","events_url":"https://api.github.com/users/krosenvold/events{/privacy}","received_events_url":"https://api.github.com/users/krosenvold/received_events","type":"User","site_admin":false},"created_at":"2015-07-09T17:28:43Z","updated_at":"2015-07-09T17:28:43Z","body":"You are using a stone-age version of assembly-plugin. Everything has changed in 2.5.5, including the bzip2 implementation. This issue will never be fixed at the 2.4 level, and I'm closing it as invalid"}}