Viraj Jasani created PHOENIX-8041:
-------------------------------------

             Summary: Client thread pools stop working after ThreadGroup 
destruction
                 Key: PHOENIX-8041
                 URL: https://issues.apache.org/jira/browse/PHOENIX-8041
             Project: Phoenix
          Issue Type: Bug
            Reporter: Viraj Jasani


PhoenixDriver.INSTANCE has one QueryServicesImpl per JVM, and all connections 
made through this driver share its thread pool. The pool's thread factory comes 
from Executors.defaultThreadFactory(), which puts every new thread in the 
ThreadGroup of the thread that created the factory. The pool allows core thread 
timeout, so when it is idle, all its threads exit. If that ThreadGroup is 
destroyed after this, the pool can no longer create threads, and every task 
submitted to it fails with IllegalThreadStateException.

The pools in PhoenixHAExecutorServiceProvider have similar problem.

While this is real concern, it is surfaced by DropColumnIT intermittent 
failures.

 
{code:java}
org.apache.phoenix.exception.PhoenixIOException
  at 
org.apache.phoenix.iterate.BaseResultIterators.getIterators(BaseResultIterators.java:1641)
  ...
Caused by: java.lang.IllegalThreadStateException
  at java.lang.ThreadGroup.addUnstarted(ThreadGroup.java:865)
  at 
java.util.concurrent.Executors$DefaultThreadFactory.newThread(Executors.java:629)
  at 
org.apache.phoenix.job.JobManager$ContextClassLoaderThreadFactory.newThread(JobManager.java:230)
  at 
java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:912)
  at 
org.apache.phoenix.iterate.ParallelIterators.submitWork(ParallelIterators.java:130)
{code}
 

 



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to