You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by yo...@apache.org on 2015/08/31 18:43:58 UTC

svn commit: r1700276 - in /lucene/dev/trunk: lucene/ lucene/core/src/java/org/apache/lucene/index/ solr/ solr/core/src/java/org/apache/solr/search/

Author: yonik
Date: Mon Aug 31 16:43:57 2015
New Revision: 1700276

URL: http://svn.apache.org/r1700276
Log:
SOLR-7876: exit ExitableDirectoryReader wrapper if timeout is not enabled

Modified:
    lucene/dev/trunk/lucene/CHANGES.txt
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/ExitableDirectoryReader.java
    lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/QueryTimeout.java
    lucene/dev/trunk/solr/CHANGES.txt
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrQueryTimeoutImpl.java

Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=1700276&r1=1700275&r2=1700276&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Mon Aug 31 16:43:57 2015
@@ -27,6 +27,10 @@ New Features
   length computations, to avoid skew from documents that don't have the field.
   (Ahmet Arslan via Robert Muir)
 
+* SOLR-7876: The QueryTimeout interface now has a isTimeoutEnabled method
+  that can return false to exit from ExitableDirectoryReader wrapping at
+  the point fields() is called. (yonik)
+
 API Changes
 
 * LUCENE-3312: The API of oal.document was restructured to

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/ExitableDirectoryReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/ExitableDirectoryReader.java?rev=1700276&r1=1700275&r2=1700276&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/ExitableDirectoryReader.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/ExitableDirectoryReader.java Mon Aug 31 16:43:57 2015
@@ -80,7 +80,13 @@ public class ExitableDirectoryReader ext
 
     @Override
     public Fields fields() throws IOException {
-      return new ExitableFields(super.fields(), queryTimeout);
+      Fields fields = super.fields();
+      if (queryTimeout.isTimeoutEnabled()) {
+        return new ExitableFields(fields, queryTimeout);
+      }
+      else {
+        return fields;  // break out of wrapper as soon as possible
+      }
     }
     
     @Override

Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/QueryTimeout.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/QueryTimeout.java?rev=1700276&r1=1700275&r2=1700276&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/QueryTimeout.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/QueryTimeout.java Mon Aug 31 16:43:57 2015
@@ -29,5 +29,10 @@ public interface QueryTimeout {
    */
   public abstract boolean shouldExit();
 
+  /** Returns true if timeouts are enabled for this query (i.e. if shouldExit would ever return true) */
+  public default boolean isTimeoutEnabled() {
+    return true;
+  }
+
 }
 

Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1700276&r1=1700275&r2=1700276&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Mon Aug 31 16:43:57 2015
@@ -65,6 +65,11 @@ New Features
 
 * SOLR-7707: Add StreamExpression Support to RollupStream (Dennis Gove, Joel Bernstein)
 
+Optimizations
+----------------------
+* SOLR-7876: Speed up queries and operations that use many terms when timeAllowed has not been
+  specified.  Speedups of up to 8% were observed.  (yonik)
+
 
 Other Changes
 ----------------------

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrQueryTimeoutImpl.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrQueryTimeoutImpl.java?rev=1700276&r1=1700275&r2=1700276&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrQueryTimeoutImpl.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/search/SolrQueryTimeoutImpl.java Mon Aug 31 16:43:57 2015
@@ -49,6 +49,11 @@ public class SolrQueryTimeoutImpl implem
     return timeoutAt.get();
   }
 
+  @Override
+  public boolean isTimeoutEnabled() {
+    return get() != null;
+  }
+
   /**
    * Return true if a timeoutAt value is set and the current time has exceeded the set timeOut.
    */