You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2014/02/02 08:47:51 UTC

svn commit: r1563576 - in /lucene/dev/trunk/solr: ./ core/src/java/org/apache/solr/handler/component/ core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/ core/src/test/org/apache/solr/

Author: shalin
Date: Sun Feb  2 07:47:51 2014
New Revision: 1563576

URL: http://svn.apache.org/r1563576
Log:
SOLR-5535: Set partialResults header for shards that error out if shards.tolerant is specified

Modified:
    lucene/dev/trunk/solr/CHANGES.txt
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/SearchGroupShardResponseProcessor.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/TopGroupsShardResponseProcessor.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestDistributedSearch.java

Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1563576&r1=1563575&r2=1563576&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Sun Feb  2 07:47:51 2014
@@ -160,6 +160,8 @@ New Features
 
 * SOLR-5670: allow _version_ to use DocValues.  (Per Steffensen via yonik)
 
+* SOLR-5535: Set "partialResults" header for shards that error out if
+  shards.tolerant is specified. (Steve Davids via shalin)
 
 Bug Fixes
 ----------------------

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java?rev=1563576&r1=1563575&r2=1563576&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java Sun Feb  2 07:47:51 2014
@@ -848,6 +848,7 @@ public class QueryComponent extends Sear
         }
         // now that we've added the shard info, let's only proceed if we have no error.
         if (srsp.getException() != null) {
+          partialResults = true;
           continue;
         }
 

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java?rev=1563576&r1=1563575&r2=1563576&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java Sun Feb  2 07:47:51 2014
@@ -308,6 +308,10 @@ public class SearchHandler extends Reque
                 } else {
                   throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, srsp.getException());
                 }
+              } else {
+                if(rsp.getResponseHeader().get("partialResults") == null) {
+                  rsp.getResponseHeader().add("partialResults", Boolean.TRUE);
+                }
               }
             }
 

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/SearchGroupShardResponseProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/SearchGroupShardResponseProcessor.java?rev=1563576&r1=1563575&r2=1563576&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/SearchGroupShardResponseProcessor.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/SearchGroupShardResponseProcessor.java Sun Feb  2 07:47:51 2014
@@ -98,6 +98,9 @@ public class SearchGroupShardResponsePro
           shardInfo.add(srsp.getShard(), nl);
         }
         if (rb.req.getParams().getBool(ShardParams.SHARDS_TOLERANT, false) && srsp.getException() != null) {
+          if(rb.rsp.getResponseHeader().get("partialResults") == null) {
+            rb.rsp.getResponseHeader().add("partialResults", Boolean.TRUE);
+          }
           continue; // continue if there was an error and we're tolerant.  
         }
         maxElapsedTime = (int) Math.max(maxElapsedTime, srsp.getSolrResponse().getElapsedTime());

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/TopGroupsShardResponseProcessor.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/TopGroupsShardResponseProcessor.java?rev=1563576&r1=1563575&r2=1563576&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/TopGroupsShardResponseProcessor.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/grouping/distributed/responseprocessor/TopGroupsShardResponseProcessor.java Sun Feb  2 07:47:51 2014
@@ -114,6 +114,9 @@ public class TopGroupsShardResponseProce
         shardInfo.add(srsp.getShard(), individualShardInfo);
       }
       if (rb.req.getParams().getBool(ShardParams.SHARDS_TOLERANT, false) && srsp.getException() != null) {
+        if(rb.rsp.getResponseHeader().get("partialResults") == null) {
+          rb.rsp.getResponseHeader().add("partialResults", Boolean.TRUE);
+        }
         continue; // continue if there was an error and we're tolerant.  
       }
       NamedList<NamedList> secondPhaseResult = (NamedList<NamedList>) srsp.getSolrResponse().getResponse().get("secondPhase");

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestDistributedSearch.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestDistributedSearch.java?rev=1563576&r1=1563575&r2=1563576&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestDistributedSearch.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/TestDistributedSearch.java Sun Feb  2 07:47:51 2014
@@ -510,6 +510,7 @@ public class TestDistributedSearch exten
             assertTrue("Expected to find shardAddress in the up shard info",info.get("shardAddress") != null);
           }
           else {
+            assertEquals("Expected to find the partialResults header set if a shard is down", Boolean.TRUE, rsp.getHeader().get("partialResults"));
             assertTrue("Expected to find error in the down shard info",info.get("error") != null);
           }
         }
@@ -518,4 +519,9 @@ public class TestDistributedSearch exten
     }
   }
   
+  @Override
+  public void validateControlData(QueryResponse control) throws Exception {
+    super.validateControlData(control);
+    assertNull("Expected the partialResults header to be null", control.getHeader().get("partialResults"));
+  }
 }