Uploaded image for project: 'Solr'
  1. Solr
  2. SOLR-5180

Core admin reload for an invalid core name returns 500 rather than 400 status code

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 4.4
    • Fix Version/s: None
    • Component/s: multicore
    • Labels:
      None

      Description

      A core admin request to reload a nonexistent core name returns a 500 Server Error rather than a 400 Invalid Request status code.

      The request:

      curl "http://localhost:8983/solr/admin/cores?action=reload&core=bogus&indent=true"
      

      The response:

      <?xml version="1.0" encoding="UTF-8"?>
      <response>
      
      <lst name="responseHeader">
        <int name="status">500</int>
        <int name="QTime">5</int>
      </lst>
      <lst name="error">
        <str name="msg">Error handling 'reload' action</str>
        <str name="trace">org.apache.solr.common.SolrException: Error handling 'reload' action
              at org.apache.solr.handler.admin.CoreAdminHandler.handleReloadAction(CoreAdminHandler.java:673)
              at org.apache.solr.handler.admin.CoreAdminHandler.handleRequestBody(CoreAdminHandler.java:172)
              at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:135)
              at org.apache.solr.servlet.SolrDispatchFilter.handleAdminRequest(SolrDispatchFilter.java:655)
              at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:246)
              at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:195)
              at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1419)
              at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:455)
              at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
              at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
              at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
              at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1075)
              at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:384)
              at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
              at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1009)
              at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
              at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:255)
              at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:154)
              at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
              at org.eclipse.jetty.server.Server.handle(Server.java:368)
              at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
              at org.eclipse.jetty.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:53)
              at org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:942)
              at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:1004)
              at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:640)
              at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)
              at org.eclipse.jetty.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:72)
              at org.eclipse.jetty.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:264)
              at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
              at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
              at java.lang.Thread.run(Unknown Source)
      Caused by: org.apache.solr.common.SolrException: Unable to reload core: bogus
              at org.apache.solr.core.CoreContainer.recordAndThrow(CoreContainer.java:930)
              at org.apache.solr.core.CoreContainer.reload(CoreContainer.java:685)
              at org.apache.solr.handler.admin.CoreAdminHandler.handleReloadAction(CoreAdminHandler.java:671)
              ... 30 more
      Caused by: org.apache.solr.common.SolrException: No such core: bogus
              at org.apache.solr.core.CoreContainer.reload(CoreContainer.java:636)
              ... 31 more
      </str>
        <int name="code">500</int>
      </lst>
      </response>
      

      The code at CoreContainer.reload(CoreContainer.java:636) correctly throws a Solr Bad Request Exception:

      
      

      if (core == null)
      throw new SolrException( SolrException.ErrorCode.BAD_REQUEST, "No such core: " + name );

      But then the code at CoreAdminHandler.handleReloadAction(CoreAdminHandler.java:673) catches it and throws the Server Error exception:
      
      

      try

      { coreContainer.reload(cname); }

      catch (Exception ex)

      { throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Error handling 'reload' action", ex); }
      
      

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                dragonsinth Scott Blum
                Reporter:
                jkrupan Jack Krupansky
              • Votes:
                1 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: