Solr
  1. Solr
  2. SOLR-3131

"details" command fails when a replication is forced with a "fetchIndex" command on a non-slave server

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Minor Minor
    • Resolution: Fixed
    • Affects Version/s: 3.5
    • Fix Version/s: 4.0
    • Component/s: replication (java)
    • Labels:
      None

      Description

      Steps to reproduce the problem:
      1) Start a master Solr instance (called A)
      2) Start a Solr instance with replication handler configured, but with no "slave" configuration. (called B)
      3) Issue the request http://B:port/solr/replication?command=fetchindex&masterUrl=http://A:port/solr/replication
      4) While B is fetching the index, issue the request: http://B:port/solr/replication?command=details

      Expected behavior: See the replication details as usual.

      Getting an exception instead:

      java.lang.NullPointerException
      at org.apache.solr.handler.ReplicationHandler.isPollingDisabled(ReplicationHandler.java:447)
      at org.apache.solr.handler.ReplicationHandler.getReplicationDetails(ReplicationHandler.java:611)
      at org.apache.solr.handler.ReplicationHandler.handleRequestBody(ReplicationHandler.java:211)
      at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:129)
      at org.apache.solr.core.SolrCore.execute(SolrCore.java:1523)
      at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:339)
      at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:234)
      at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
      at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
      at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
      at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
      at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
      at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
      at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
      at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
      at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
      at org.mortbay.jetty.Server.handle(Server.java:326)
      at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
      at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
      at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
      at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
      at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
      at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)
      at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

        Activity

        Hide
        Mark Miller added a comment -

        This is because when not a slave we don't have a permanent SnapPuller, but instead create a tmp one on the fetch index cmd - but other status calls, like details, only look for the permanent SnapPuller (which is null in the above case).

        It's all somewhat by design it would seem, but of course could be improved (even if we don't support it, it shouldn't NPE, and supporting it would be nice).

        Show
        Mark Miller added a comment - This is because when not a slave we don't have a permanent SnapPuller, but instead create a tmp one on the fetch index cmd - but other status calls, like details, only look for the permanent SnapPuller (which is null in the above case). It's all somewhat by design it would seem, but of course could be improved (even if we don't support it, it shouldn't NPE, and supporting it would be nice).
        Hide
        Mark Miller added a comment -

        here is a test and probably decent enough work around - when there is no permanent snappuller (on a master), once a tempSnapPuller is made, it's kept around to get status from.

        Also, when asking if polling is disabled, we return true if snappuller is false.

        Show
        Mark Miller added a comment - here is a test and probably decent enough work around - when there is no permanent snappuller (on a master), once a tempSnapPuller is made, it's kept around to get status from. Also, when asking if polling is disabled, we return true if snappuller is false.
        Hide
        Tomás Fernández Löbbe added a comment -

        Thanks Mark, I tested the patch with my data and seems to work.

        Show
        Tomás Fernández Löbbe added a comment - Thanks Mark, I tested the patch with my data and seems to work.
        Hide
        Mark Miller added a comment -

        committed to trunk - I'll add changes and back port to 3.6 as well.

        Show
        Mark Miller added a comment - committed to trunk - I'll add changes and back port to 3.6 as well.
        Hide
        Hoss Man added a comment -

        bulk fixing the version info for 4.0-ALPHA and 4.0 all affected issues have "hoss20120711-bulk-40-change" in comment

        Show
        Hoss Man added a comment - bulk fixing the version info for 4.0-ALPHA and 4.0 all affected issues have "hoss20120711-bulk-40-change" in comment
        Hide
        Robert Muir added a comment -

        rmuir20120906-bulk-40-change

        Show
        Robert Muir added a comment - rmuir20120906-bulk-40-change
        Hide
        Robert Muir added a comment -

        moving all 4.0 issues not touched in a month to 4.1

        Show
        Robert Muir added a comment - moving all 4.0 issues not touched in a month to 4.1
        Hide
        Uwe Schindler added a comment -

        Closed after release.

        Show
        Uwe Schindler added a comment - Closed after release.

          People

          • Assignee:
            Mark Miller
            Reporter:
            Tomás Fernández Löbbe
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development