You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Mark Miller (JIRA)" <ji...@apache.org> on 2016/12/30 23:08:58 UTC

[jira] [Comment Edited] (SOLR-9867) The schemaless example can not be started after being stopped.

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

Mark Miller edited comment on SOLR-9867 at 12/30/16 11:07 PM:
--------------------------------------------------------------

Thanks for looking into this Varun.

I think this behavior was built into CoreContainer previously and must have been removed in a refactoring. Now I see no code that actually waits for a core to load, just the methods on CoreContainer for it.

So we can restore the expected behavior here and wait for the core to load rather than throw an exception:

{noformat}
        if (core != null) {
          path = path.substring(idx);
        } else if (cores.isCoreLoading(corename)) { // extra mem barriers, so don't look at this before trying to get core
          throw new SolrException(ErrorCode.SERVICE_UNAVAILABLE, "SolrCore is loading");
        } else {
          // the core may have just finished loading
          core = cores.getCore(corename);
          if (core != null) {
            path = path.substring(idx);
          } 
        }
{noformat}



was (Author: markrmiller@gmail.com):
Thanks for looking into this Varun.

I think this behavior was built into CoreContainer previously and must have been removed in a refactoring. Now I see no code that actually waits for a core to load, just the methods on CoreContainer for it.

So we can restore the expected behavior here and wait for the core to load rather than throw an exception:

{noformat}
        if (core != null) {
          path = path.substring(idx);
        } else if (cores.isCoreLoading(corename)) { // extra mem barriers, so don't look at this before trying to get core
          throw new SolrException(ErrorCode.SERVICE_UNAVAILABLE, "SolrCore is loading");
        } else {
          // the core may have just finished loading
          core = cores.getCore(corename);
          if (core != null) {
            path = path.substring(idx);
          } 
        }
{noformat}

I think it now causes a loading exception to be thrown rather than waiting for the core to load though.

> The schemaless example can not be started after being stopped.
> --------------------------------------------------------------
>
>                 Key: SOLR-9867
>                 URL: https://issues.apache.org/jira/browse/SOLR-9867
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>            Reporter: Mark Miller
>             Fix For: master (7.0), 6.4
>
>
> I'm having trouble when I start up the schemaless example after shutting down.
> I first tracked this down to the fact that the run example tool is getting an error when it tries to create the SolrCore (again, it already exists) and so it deletes the cores instance dir which leads to tlog and index lock errors in Solr.
> The reason it seems to be trying to create the core when it already exists is that the run example tool uses a core status call to check existence and because the core is loading, we don't consider it as existing. I added a check to look for core.properties.
> That seemed to let me start up, but my first requests failed because the core was still loading. It appears CoreContainer#getCore  is supposed to be blocking so you don't have this problem, but there must be an issue, because it is not blocking.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org