[
https://issues.apache.org/jira/browse/SOLR-16154?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17532383#comment-17532383
]
Kevin Risden commented on SOLR-16154:
-------------------------------------
So I looked a bit further to make sure I wasn't missing anything:
https://github.com/apache/solr/pull/805/files#diff-5b63503605ede4384429e74d1fa0c410adc5da8f3246e8c36e49feff2f3ea692R2767
{code:java}
cc.getCoreZkRegisterExecutorService().submit(work);
{code}
This change submits the listeners to an executor service. So its now a managed
thread. cc is the corecontainer that gets closed/shutdown as well somewhere (I
didn't track down exactly where).
Now I wanted to see where the executor was closed / shutdown:
*
https://github.com/apache/solr/blob/main/solr/core/src/java/org/apache/solr/core/CoreContainer.java#L306
* zksys is shutdown here:
https://github.com/apache/solr/blob/main/solr/core/src/java/org/apache/solr/core/CoreContainer.java#L1125
*
https://github.com/apache/solr/blob/main/solr/core/src/java/org/apache/solr/core/ZkContainer.java#L244
The 60s I referred to is in the executor shutdown specifically the await
termination:
https://github.com/apache/solr/blob/main/solr/solrj/src/java/org/apache/solr/common/util/ExecutorUtil.java#L86
So as far as I can tell this stuff gets all shutdown in the right order. By
putting the thread on the executor, it prevents new threads on shutdown
(shutdown on executor prevents new threads from being submitted) and waits 60s
(due to await termination) for those threads to finish. Then the rest of ZK
gets shutdown which means we shouldn't have ZK retries since those ZK threads
should have already terminated.
Hope that helps :D
> ZKEventListenerThread leaks from tests
> --------------------------------------
>
> Key: SOLR-16154
> URL: https://issues.apache.org/jira/browse/SOLR-16154
> Project: Solr
> Issue Type: Test
> Reporter: Mike Drob
> Assignee: Mike Drob
> Priority: Major
> Time Spent: 1h 20m
> Remaining Estimate: 0h
>
> Seen repeatedly on Jenkins.
> {noformat}
> com.carrotsearch.randomizedtesting.ThreadLeakError: 1 thread leaked from
> SUITE scope at
> org.apache.solr.handler.designer.TestSchemaDesignerSettingsDAO:
> 1) Thread[id=1089, name=ZKEventListenerThread, state=TIMED_WAITING,
> group=TGRP-TestSchemaDesignerSettingsDAO]
> at java.base@18/java.lang.Thread.sleep(Native Method)
> at
> app//org.apache.solr.common.cloud.ZkCmdExecutor.retryDelay(ZkCmdExecutor.java:161)
> at
> app//org.apache.solr.common.cloud.ZkCmdExecutor.retryOperation(ZkCmdExecutor.java:82)
> at
> app//org.apache.solr.common.cloud.SolrZkClient.getData(SolrZkClient.java:361)
> at
> app//org.apache.solr.cloud.ZkSolrResourceLoader.openResource(ZkSolrResourceLoader.java:75)
> at
> app//org.apache.lucene.analysis.AbstractAnalysisFactory.getLines(AbstractAnalysisFactory.java:302)
> at
> app//org.apache.lucene.analysis.AbstractAnalysisFactory.getWordSet(AbstractAnalysisFactory.java:293)
> at
> app//org.apache.lucene.analysis.en.AbstractWordsFileFilterFactory.inform(AbstractWordsFileFilterFactory.java:88)
> at
> app//org.apache.solr.core.SolrResourceLoader.informAware(SolrResourceLoader.java:762)
> at
> app//org.apache.solr.schema.ManagedIndexSchema.informResourceLoaderAwareObjectsInChain(ManagedIndexSchema.java:1470)
> at
> app//org.apache.solr.schema.ManagedIndexSchema.informResourceLoaderAwareObjectsForFieldType(ManagedIndexSchema.java:1319)
> at
> app//org.apache.solr.schema.ManagedIndexSchema.postReadInform(ManagedIndexSchema.java:1307)
> at
> app//org.apache.solr.schema.IndexSchema.readSchema(IndexSchema.java:654)
> at
> app//org.apache.solr.schema.IndexSchema.<init>(IndexSchema.java:188)
> at
> app//org.apache.solr.schema.ManagedIndexSchema.<init>(ManagedIndexSchema.java:119)
> at
> app//org.apache.solr.schema.ManagedIndexSchemaFactory.create(ManagedIndexSchemaFactory.java:279)
> at
> app//org.apache.solr.schema.ManagedIndexSchemaFactory.create(ManagedIndexSchemaFactory.java:51)
> at
> app//org.apache.solr.core.ConfigSetService.createIndexSchema(ConfigSetService.java:342)
> at
> app//org.apache.solr.core.ConfigSetService.lambda$loadConfigSet$0(ConfigSetService.java:253)
> at
> app//org.apache.solr.core.ConfigSetService$$Lambda$632/0x0000000801137758.get(Unknown
> Source)
> at app//org.apache.solr.core.ConfigSet.<init>(ConfigSet.java:49)
> at
> app//org.apache.solr.core.ConfigSetService.loadConfigSet(ConfigSetService.java:249)
> at
> app//org.apache.solr.core.CoreContainer.reload(CoreContainer.java:1850)
> at
> app//org.apache.solr.core.SolrCore.lambda$getConfListener$21(SolrCore.java:3394)
> at
> app//org.apache.solr.core.SolrCore$$Lambda$742/0x00000008011f2560.run(Unknown
> Source)
> at
> app//org.apache.solr.cloud.ZkController.lambda$fireEventListeners$18(ZkController.java:2761)
> at
> app//org.apache.solr.cloud.ZkController$$Lambda$1153/0x00000008014e8938.run(Unknown
> Source)
> at java.base@18/java.lang.Thread.run(Thread.java:833)
> at __randomizedtesting.SeedInfo.seed([DE9B93CA6D75B373]:0)
> {noformat}
--
This message was sent by Atlassian Jira
(v8.20.7#820007)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]