[ 
https://issues.apache.org/jira/browse/SOLR-922?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12657677#action_12657677
 ] 

Kay Kay commented on SOLR-922:
------------------------------

| But, the problem is that means defining an extra API and may be having an 
extra configuration in say solrconfig.xml

Selecting the number of threads in the thread pools / specifying the queuing 
policy for an even distribution of tasks , are some of the various 
customizations  that could be implemented for the ExecutorService 
implementation.  Since DIH and other parts of the solr application server live 
in the same jvm process - I am not sure why we would like to exclude the same 
since that would mean multiple resource managers ( thread pools ) in the same 
process - that would be hard to change / modify if we encounter an 
OutOfMemoryError (very much possible when there are multiple ExecutorService 
impls locally ) etc. 



> Solr WebApp wide Executor for better efficient management of threads , 
> separating the logic in the thread from the launch of the same. 
> ---------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: SOLR-922
>                 URL: https://issues.apache.org/jira/browse/SOLR-922
>             Project: Solr
>          Issue Type: Improvement
>          Components: clients - java
>         Environment: Tomcat 6, JRE 6
>            Reporter: Kay Kay
>            Priority: Minor
>
> For a different jira - when we were discussing bringing in parallelism 
> through threads and using Executors - encountered a case of using a webapp 
> wide Executor for reusing thread pools for better use of thread resources , 
> instead of thread.start() .  
> pros:  Custom Request Handlers and other plugins to the Solr App server can 
> use this Executor API to retrieve the executor and just submit the Runnable / 
> Callable impls to get the job done while getting the benefits of a thread 
> pool . This might be necessary as we continue to write plugins to the core 
> architecture and centralizing the threadpools might make it easy to control / 
> prevent global Executor objects across the codebase / recreating them locally 
> ( as they might be expensive ). 
> $ find . -name *.java | xargs grep -nr 'start()'  | grep "}"
> ./contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/XPathEntityProcessor.java:377:
>     }.start();
> ./contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java:368:
>     }.start();
> ./src/java/org/apache/solr/handler/SnapPuller.java:382:    }.start();
> ./src/java/org/apache/solr/handler/SnapShooter.java:52:    }.start();
> ./src/java/org/apache/solr/handler/ReplicationHandler.java:134:      
> }.start();
> ./src/common/org/apache/solr/common/util/ConcurrentLRUCache.java:112:        
> }.start();

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to