Hi,

Am getting the following messages while using EmbeddedSolr to retrieve the Term Vectors. I also happened to go through https://issues.apache.org/jira/browse/SOLR-914 . Should I ignore these messages and proceed or should I make any changes?

[#|2011-01-27T11:56:34.593-0500|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadId=33|_ThreadName=21687399 [Finalizer] Error org.apache.solr.core.CoreContainer - CoreContainer was not shutdown prior to finalize(), indicates a bug -- POSSIBLE RESOURCE LEAK!!!

[#|2011-01-27T11:56:34.609-0500|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadId=33|_ThreadName=21687415 [Finalizer] Error org.apache.solr.core.SolrCore - Too many close [count:-1] on org.apache.solr.core.SolrCore@1638e30. Please report this exception to solr-user@lucene.apache.org

[#|2011-01-27T11:56:34.611-0500|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadId=33|_ThreadName=21687417 [Finalizer] Error org.apache.solr.core.SolrCore - REFCOUNT ERROR: unreferenced org.apache.solr.core.SolrCore@1638e30 (UserIndexCore) has a reference count of -1

[#|2011-01-27T11:56:34.613-0500|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadId=33|_ThreadName=21687419 [Finalizer] Error org.apache.solr.common.util.ConcurrentLRUCache - ConcurrentLRUCache was not destroyed prior to finalize(), indicates a bug -- POSSIBLE RESOURCE LEAK!!!

[#|2011-01-27T11:56:34.613-0500|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadId=33|_ThreadName=21687420 [Finalizer] Error org.apache.solr.common.util.ConcurrentLRUCache - ConcurrentLRUCache was not destroyed prior to finalize(), indicates a bug -- POSSIBLE RESOURCE LEAK!!!


This is the code am using:
public static SolrCore USER_IDX_CORE;

public static Map<String, String> getTermsVector(String userId) throws ParserConfigurationException, IOException, SAXException {
Map<String, String> freqMap = new HashMap<String, String>();
        try {
SolrConfig USER_IDX_SOLR_CONFIG = new SolrConfig(USER_IDX_CONFIG_FILE); IndexSchema USER_IDX_SCHEMA = new IndexSchema(USER_IDX_SOLR_CONFIG, USER_IDX_SCHEMA_FILE, null); CoreContainer USER_IDX_CONTAINER = new CoreContainer(new SolrResourceLoader(SolrIndexer.USER_IDX_SOLR_HOME)); CoreDescriptor USER_IDX_CORE_DESCRIPTOR = new CoreDescriptor(USER_IDX_CONTAINER, USER_IDX_CORE_NAME, USER_IDX_SOLR_CONFIG.getResourceLoader()
                    .getInstanceDir());
USER_IDX_CORE_DESCRIPTOR.setConfigName(USER_IDX_SOLR_CONFIG.getResourceName()); USER_IDX_CORE_DESCRIPTOR.setSchemaName(USER_IDX_SCHEMA.getResourceName()); USER_IDX_CORE = new SolrCore(null, USER_IDX_DATA_DIR, USER_IDX_SOLR_CONFIG, USER_IDX_SCHEMA, USER_IDX_CORE_DESCRIPTOR); USER_IDX_CONTAINER.register(USER_IDX_CORE_NAME, USER_IDX_CORE, false); SearchComponent tvComp = USER_IDX_CORE.getSearchComponent("tvComponent");

            ModifiableSolrParams params = new ModifiableSolrParams();
            params.add(CommonParams.Q, FIELD_USER_ID + ":" + userId);
            params.add(CommonParams.QT, "tvrh");
            params.add(TermVectorParams.TF, "true");
            params.add(TermVectorComponent.COMPONENT_NAME, "true");
SolrRequestHandler handler = USER_IDX_CORE.getRequestHandler("tvrh");
            SolrQueryResponse rsp;
            rsp = new SolrQueryResponse();
            rsp.add("responseHeader", new SimpleOrderedMap());
handler.handleRequest(new LocalSolrQueryRequest(USER_IDX_CORE, params), rsp);

NamedList terms = (NamedList) ((NamedList) ((NamedList) rsp.getValues().get(TermVectorComponent.TERM_VECTORS)).getVal(0)).get(FIELD_USER_ALL);
            if (terms != null) {
                for (int i = 0; i < terms.size(); i++) {
                    NamedList freq = (NamedList) terms.getVal(i);
freqMap.put(terms.getName(i), freq.getVal(0).toString());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                USER_IDX_CORE.close();
                USER_IDX_CONTAINER.shutdown();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        return freqMap;
}

Also, USER_IDX_CONTAINER.shutdown(); throws a NullPointerException indicating the reference doesn't exist by the time the code execution reaches it.

If I don't use thie snippet
            try {
            USER_IDX_CORE.close();
            USER_IDX_CONTAINER.shutdown();
            } catch (Exception e) {
                e.printStackTrace();
            }
I get a similar POSSIBLE RESORUCE LEAK!!! message that says SolrCore wasn't closed.

Am calling this code via a message queue, and no concurrent calls happen.

Thanks,
Karthik.

Reply via email to