[
https://issues.apache.org/jira/browse/SOLR-12021?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16374721#comment-16374721
]
ASF subversion and git services commented on SOLR-12021:
--------------------------------------------------------
Commit 9e0e301f9fe4a1b5e33925ae4d2848ead71cca25 in lucene-solr's branch
refs/heads/master from Chris Hostetter
[ https://git-wip-us.apache.org/repos/asf?p=lucene-solr.git;h=9e0e301 ]
SOLR-12021: Fixed a bug in ApiSpec and other JSON resource loading that was
causing unclosed file handles
> Utils.fromJSONResource(...) and ValidatingJsonMap.parse(...) open (resourse)
> InputStreams they don't close
> ----------------------------------------------------------------------------------------------------------
>
> Key: SOLR-12021
> URL: https://issues.apache.org/jira/browse/SOLR-12021
> Project: Solr
> Issue Type: Bug
> Security Level: Public(Default Security Level. Issues are Public)
> Reporter: Hoss Man
> Assignee: Hoss Man
> Priority: Major
> Attachments: SOLR-12021.patch
>
>
> A recurring theme that pops up now and then in non-reproducible test failures
> is for an error like this to show up in the log files when a core/collection
> is being created...
> {noformat}
> [junit4] 2> 674805 ERROR (qtp1337497394-5597) [n:127.0.0.1:55380_np_zxw
> c:collection2 s:shard6 x:collection2_shard6_replica_n29]
> o.a.s.h.RequestHandlerBase org.apache.solr.common.SolrException: Error
> CREATEing SolrCore 'collection2_shard6_replica_n29': Unable to create core
> [collection2_shard6_replica_n29] Caused by: invalid API spec:
> apispec/core.config.Commands.json
> ...
> [junit4] 2> Caused by: java.lang.RuntimeException: invalid API spec:
> apispec/core.config.Commands.json
> [junit4] 2> at
> org.apache.solr.common.util.ValidatingJsonMap.parse(ValidatingJsonMap.java:318)
> [junit4] 2> at
> org.apache.solr.common.util.Utils.lambda$getSpec$0(Utils.java:427)
> [junit4] 2> at org.apache.solr.api.Api.getSpec(Api.java:65)
> [junit4] 2> at org.apache.solr.api.ApiBag.register(ApiBag.java:73)
> [junit4] 2> at
> org.apache.solr.core.PluginBag.put(PluginBag.java:217)
> [junit4] 2> at
> org.apache.solr.core.PluginBag.init(PluginBag.java:274)
> [junit4] 2> at
> org.apache.solr.core.RequestHandlers.initHandlersFromConfig(RequestHandlers.java:130)
> [junit4] 2> at
> org.apache.solr.core.SolrCore.<init>(SolrCore.java:966)
> {noformat}
> I _believe_ that the root cause of these types of failures is that these API
> spec files are being loaded with
> {{ValidatingJsonMap.class.getClassLoader().getResourceAsStream(resourceName)}}
> -- but nothing is ever closing the stream, so it can eventually (depending
> on what test classes run in each JVM and how many files they try to open like
> this) cause the JVM to hit the ulimit for open file handles -- but that
> specific cause of the failure is never reported, because
> {{ClassLoader.getResourseAsStream(...)}} is explicity designed to swallow any
> IOExceptions encountered and just returns "null" (which triggers the "invalid
> API spec: " thrown by ValidatingJsonMap)
> ----
> {{ValidatingJsonMap.parse(...)}} and the very similarly looking
> {{Utils.fromJSONResource(...)}} should be modified to:
> * ensure they always close the streams they open
> * use {{ClassLoader.getResource()}} + {{URL.openConnection()}} so that they
> can properly log if/when an underlying IOException occurs w/details
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]