You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by tf...@apache.org on 2015/01/22 10:13:25 UTC

svn commit: r1653789 - in /lucene/dev/branches/branch_5x: ./ solr/ solr/CHANGES.txt solr/core/ solr/core/src/java/org/apache/solr/spelling/suggest/SolrSuggester.java solr/core/src/test/org/apache/solr/handler/component/SuggestComponentTest.java

Author: tflobbe
Date: Thu Jan 22 09:13:25 2015
New Revision: 1653789

URL: http://svn.apache.org/r1653789
Log:
SOLR-6845: Suggester tests start new cores instead of reloading

Modified:
    lucene/dev/branches/branch_5x/   (props changed)
    lucene/dev/branches/branch_5x/solr/   (props changed)
    lucene/dev/branches/branch_5x/solr/CHANGES.txt   (contents, props changed)
    lucene/dev/branches/branch_5x/solr/core/   (props changed)
    lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/spelling/suggest/SolrSuggester.java
    lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/component/SuggestComponentTest.java

Modified: lucene/dev/branches/branch_5x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/CHANGES.txt?rev=1653789&r1=1653788&r2=1653789&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_5x/solr/CHANGES.txt Thu Jan 22 09:13:25 2015
@@ -39,6 +39,8 @@ New Features
 * SOLR-6909: Extract atomic update handling logic into AtomicUpdateDocumentMerger class
   and enable subclassing. (Steve Davids, yonik)
 
+* SOLR-6845: Add a “buildOnStartup” option for suggesters. (Tomás Fernández Löbbe)
+
 Other Changes
 ----------------------
 * SOLR-7014: Collapse identical catch branches in try-catch statements. (shalin)
@@ -324,8 +326,6 @@ New Features
 
 * SOLR-5147: Support child documents in DIH
   (Vadim Kirilchuk, Shawn Heisey, Thomas Champagne, Mikhail Khludnev via Noble Paul)
-
-* SOLR-6845: Add a “buildOnStartup” option for suggesters. (Tomás Fernández Löbbe)
   
 
 Bug Fixes

Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/spelling/suggest/SolrSuggester.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/spelling/suggest/SolrSuggester.java?rev=1653789&r1=1653788&r2=1653789&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/spelling/suggest/SolrSuggester.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/spelling/suggest/SolrSuggester.java Thu Jan 22 09:13:25 2015
@@ -129,8 +129,10 @@ public class SolrSuggester implements Ac
       }
       if (!storeDir.exists()) {
         storeDir.mkdirs();
-      } else {
-        // attempt reload of the stored lookup
+      } else if (getStoreFile().exists()) {
+        if (LOG.isDebugEnabled()) {
+          LOG.debug("attempt reload of the stored lookup from file " + getStoreFile());
+        }
         try {
           lookup.load(new FileInputStream(getStoreFile()));
         } catch (IOException e) {
@@ -155,7 +157,7 @@ public class SolrSuggester implements Ac
 
   /** Build the underlying Lucene Suggester */
   public void build(SolrCore core, SolrIndexSearcher searcher) throws IOException {
-    LOG.info("build()");
+    LOG.info("build(" + name + ")");
 
     dictionary = dictionaryFactory.create(core, searcher);
     lookup.build(dictionary);
@@ -171,7 +173,7 @@ public class SolrSuggester implements Ac
 
   /** Reloads the underlying Lucene Suggester */
   public void reload(SolrCore core, SolrIndexSearcher searcher) throws IOException {
-    LOG.info("reload()");
+    LOG.info("reload(" + name + ")");
     if (dictionary == null && storeDir != null) {
       File lookupFile = getStoreFile();
       if (lookupFile.exists()) {

Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/component/SuggestComponentTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/component/SuggestComponentTest.java?rev=1653789&r1=1653788&r2=1653789&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/component/SuggestComponentTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/component/SuggestComponentTest.java Thu Jan 22 09:13:25 2015
@@ -42,6 +42,11 @@ public class SuggestComponentTest extend
   public void setUp() throws Exception {
     super.setUp();
     
+    assertQ(req("qt", "standard", 
+        "q", "*:*"), 
+        "//*[@numFound='0']"
+        );
+    
     // id, cat, price, weight
     assertU(adoc("id", "0", "cat", "This is a title", "price", "5", "weight", "10"));
     assertU(adoc("id", "1", "cat", "This is another title", "price", "10", "weight", "10"));
@@ -55,13 +60,13 @@ public class SuggestComponentTest extend
     assertU(adoc("id", "9", "cat", "blah in blah", "price", "50", "weight", "40"));
     assertU(adoc("id", "10", "cat", "another blah in blah", "price", "55", "weight", "40"));
     assertU((commit()));
+    waitForWarming();
   }
   
   @Override
   public void tearDown() throws Exception {
     super.tearDown();
     assertU(delQ("*:*"));
-    optimize();
     assertU((commit()));
     // rebuild suggesters with empty index
     assertQ(req("qt", rh, 
@@ -223,7 +228,7 @@ public class SuggestComponentTest extend
         "//lst[@name='suggest']/lst[@name='" + suggester + "']/lst[@name='example']/int[@name='numFound'][.='2']"
         );
     
-    // add one more doc, this should not be seen after a core reload (not until the suggester is manually rebuilt)
+    // add one more doc, should be visible after core reload
     assertU(adoc("id", "10", "cat", "example data extra ", "price", "40", "weight", "35"));
     assertU((commit()));
     
@@ -450,7 +455,7 @@ public class SuggestComponentTest extend
   }
   
   private void reloadCore(boolean createNewCore) throws Exception {
-    if (createNewCore) {
+//    if (createNewCore) {
       CoreContainer cores = h.getCoreContainer();
       SolrCore core = h.getCore();
       String dataDir1 = core.getDataDir();
@@ -459,26 +464,32 @@ public class SuggestComponentTest extend
       SolrCore createdCore = cores.create(cd);
       assertEquals(dataDir1, createdCore.getDataDir());
       assertEquals(createdCore, h.getCore());
-    } else {
-      h.reload();
-      // On regular reloading, wait until the new searcher is registered
-      RefCounted<SolrIndexSearcher> registeredSearcher = h.getCore().getRegisteredSearcher();
-      RefCounted<SolrIndexSearcher> newestSearcher = h.getCore().getNewestSearcher(false);;
-      while (registeredSearcher.get() != newestSearcher.get()) {
-        registeredSearcher.decref();
-        newestSearcher.decref();
-        Thread.sleep(50);
-        registeredSearcher = h.getCore().getRegisteredSearcher();
-        newestSearcher = h.getCore().getNewestSearcher(false);
-      }
-      registeredSearcher.decref();
-      newestSearcher.decref();
-    }
+//    } else {
+//      h.reload();
+//      // On regular reloading, wait until the new searcher is registered
+//      waitForWarming();
+//    }
     
     assertQ(req("qt", "standard", 
         "q", "*:*"), 
         "//*[@numFound='11']"
         );
   }
+
+  private void waitForWarming() throws InterruptedException {
+    RefCounted<SolrIndexSearcher> registeredSearcher = h.getCore().getRegisteredSearcher();
+    RefCounted<SolrIndexSearcher> newestSearcher = h.getCore().getNewestSearcher(false);;
+    while (registeredSearcher == null || registeredSearcher.get() != newestSearcher.get()) {
+      if (registeredSearcher != null) {
+        registeredSearcher.decref();
+      }
+      newestSearcher.decref();
+      Thread.sleep(50);
+      registeredSearcher = h.getCore().getRegisteredSearcher();
+      newestSearcher = h.getCore().getNewestSearcher(false);
+    }
+    registeredSearcher.decref();
+    newestSearcher.decref();
+  }
   
 }