Taking a thread dump of the agent shows we have 10 Content.discovery threads waiting around for something to happen. They seem pretty harmless, but do we really need 10? I don't see any of our other threadpools initialized to such a high number. Thread: Content.discovery-1 : priority:5, demon:true, threadId:80, threadState:WAITING sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.park(LockSupport.java:118) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1841) java.util.concurrent.DelayQueue.take(DelayQueue.java:131) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:504) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:497) java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:470) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674) java.lang.Thread.run(Thread.java:595) Thread: Content.discovery-2 : priority:5, demon:true, threadId:82, threadState:WAITING sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.park(LockSupport.java:118) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1841) java.util.concurrent.DelayQueue.take(DelayQueue.java:131) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:504) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:497) java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:470) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674) java.lang.Thread.run(Thread.java:595) Thread: Content.discovery-3 : priority:5, demon:true, threadId:83, threadState:WAITING sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.park(LockSupport.java:118) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1841) java.util.concurrent.DelayQueue.take(DelayQueue.java:131) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:504) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:497) java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:470) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674) java.lang.Thread.run(Thread.java:595) Thread: Content.discovery-4 : priority:5, demon:true, threadId:84, threadState:WAITING sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.park(LockSupport.java:118) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1841) java.util.concurrent.DelayQueue.take(DelayQueue.java:131) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:504) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:497) java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:470) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674) java.lang.Thread.run(Thread.java:595) Thread: Content.discovery-5 : priority:5, demon:true, threadId:85, threadState:WAITING sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.park(LockSupport.java:118) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1841) java.util.concurrent.DelayQueue.take(DelayQueue.java:131) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:504) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:497) java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:470) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674) java.lang.Thread.run(Thread.java:595) Thread: Content.discovery-6 : priority:5, demon:true, threadId:86, threadState:WAITING sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.park(LockSupport.java:118) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1841) java.util.concurrent.DelayQueue.take(DelayQueue.java:131) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:504) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:497) java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:470) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674) java.lang.Thread.run(Thread.java:595) Thread: Content.discovery-7 : priority:5, demon:true, threadId:87, threadState:WAITING sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.park(LockSupport.java:118) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1841) java.util.concurrent.DelayQueue.take(DelayQueue.java:131) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:504) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:497) java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:470) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674) java.lang.Thread.run(Thread.java:595) Thread: Content.discovery-8 : priority:5, demon:true, threadId:88, threadState:WAITING sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.park(LockSupport.java:118) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1841) java.util.concurrent.DelayQueue.take(DelayQueue.java:131) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:504) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:497) java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:470) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674) java.lang.Thread.run(Thread.java:595) Thread: Content.discovery-9 : priority:5, demon:true, threadId:89, threadState:WAITING sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.park(LockSupport.java:118) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1841) java.util.concurrent.DelayQueue.take(DelayQueue.java:131) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:504) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:497) java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:470) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674) java.lang.Thread.run(Thread.java:595) Thread: Content.discovery-10 : priority:5, demon:true, threadId:90, threadState:WAITING sun.misc.Unsafe.park(Native Method) java.util.concurrent.locks.LockSupport.park(LockSupport.java:118) java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1841) java.util.concurrent.DelayQueue.take(DelayQueue.java:131) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:504) java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:497) java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:470) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:674) java.lang.Thread.run(Thread.java:595)
not critical for 1.2, pushing out.
Push to 1.4
This bug was previously known as http://jira.rhq-project.org/browse/RHQ-1724
Temporarily adding the keyword "SubBug" so we can be sure we have accounted for all the bugs. keyword: new = Tracking + FutureFeature + SubBug
making sure we're not missing any bugs in rhq_triage