You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2011/11/16 14:09:35 UTC
svn commit: r1202693 [2/2] - in /lucene/dev/branches/lucene2621: ./
dev-tools/idea/lucene/contrib/ lucene/
lucene/contrib/demo/src/java/org/apache/lucene/demo/
lucene/contrib/demo/src/java/org/apache/lucene/demo/xmlparser/
lucene/contrib/highlighter/sr...
Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/search/payloads/TestPayloadTermQuery.java Wed Nov 16 13:09:32 2011
@@ -232,7 +232,8 @@ public class TestPayloadTermQuery extend
PayloadTermQuery query = new PayloadTermQuery(new Term(PayloadHelper.MULTI_FIELD, "seventy"),
new MaxPayloadFunction(), false);
- IndexSearcher theSearcher = new IndexSearcher(directory, true);
+ IndexReader reader = IndexReader.open(directory);
+ IndexSearcher theSearcher = new IndexSearcher(reader);
theSearcher.setSimilarityProvider(new DefaultSimilarityProvider() {
@Override
public Similarity get(String field) {
@@ -271,6 +272,7 @@ public class TestPayloadTermQuery extend
count++;
}
theSearcher.close();
+ reader.close();
}
public void testNoMatch() throws Exception {
Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/store/TestLockFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/store/TestLockFactory.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/store/TestLockFactory.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/store/TestLockFactory.java Wed Nov 16 13:09:32 2011
@@ -26,6 +26,7 @@ import java.util.Map;
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.TextField;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.Term;
@@ -339,11 +340,13 @@ public class TestLockFactory extends Luc
}
@Override
public void run() {
+ IndexReader reader = null;
IndexSearcher searcher = null;
Query query = new TermQuery(new Term("content", "aaa"));
for(int i=0;i<this.numIteration;i++) {
try{
- searcher = new IndexSearcher(dir, false);
+ reader = IndexReader.open(dir, false);
+ searcher = new IndexSearcher(reader);
} catch (Exception e) {
hitException = true;
System.out.println("Stress Test Index Searcher: create hit unexpected exception: " + e.toString());
@@ -361,6 +364,7 @@ public class TestLockFactory extends Luc
// System.out.println(hits.length() + " total results");
try {
searcher.close();
+ reader.close();
} catch (IOException e) {
hitException = true;
System.out.println("Stress Test Index Searcher: close hit unexpected exception: " + e.toString());
Modified: lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/store/TestWindowsMMap.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/store/TestWindowsMMap.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/store/TestWindowsMMap.java (original)
+++ lucene/dev/branches/lucene2621/lucene/src/test/org/apache/lucene/store/TestWindowsMMap.java Wed Nov 16 13:09:32 2011
@@ -25,6 +25,7 @@ import org.apache.lucene.util._TestUtil;
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.TextField;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
@@ -78,7 +79,8 @@ public class TestWindowsMMap extends Luc
TEST_VERSION_CURRENT, analyzer)
.setOpenMode(OpenMode.CREATE));
writer.commit();
- IndexSearcher searcher = new IndexSearcher(dir, true);
+ IndexReader reader = IndexReader.open(dir);
+ IndexSearcher searcher = new IndexSearcher(reader);
int num = atLeast(1000);
for(int dx = 0; dx < num; dx ++) {
@@ -89,6 +91,7 @@ public class TestWindowsMMap extends Luc
}
searcher.close();
+ reader.close();
writer.close();
rmDir(dirPath);
}
Modified: lucene/dev/branches/lucene2621/modules/analysis/common/src/test/org/apache/lucene/analysis/core/TestKeywordAnalyzer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/modules/analysis/common/src/test/org/apache/lucene/analysis/core/TestKeywordAnalyzer.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/modules/analysis/common/src/test/org/apache/lucene/analysis/core/TestKeywordAnalyzer.java (original)
+++ lucene/dev/branches/lucene2621/modules/analysis/common/src/test/org/apache/lucene/analysis/core/TestKeywordAnalyzer.java Wed Nov 16 13:09:32 2011
@@ -32,18 +32,20 @@ import org.apache.lucene.index.IndexWrit
import org.apache.lucene.index.DocsEnum;
import org.apache.lucene.index.MultiFields;
import org.apache.lucene.search.IndexSearcher;
+import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
import org.apache.lucene.util.BytesRef;
public class TestKeywordAnalyzer extends BaseTokenStreamTestCase {
- private RAMDirectory directory;
+ private Directory directory;
private IndexSearcher searcher;
+ private IndexReader reader;
@Override
public void setUp() throws Exception {
super.setUp();
- directory = new RAMDirectory();
+ directory = newDirectory();
IndexWriter writer = new IndexWriter(directory, new IndexWriterConfig(
TEST_VERSION_CURRENT, new SimpleAnalyzer(TEST_VERSION_CURRENT)));
@@ -54,7 +56,16 @@ public class TestKeywordAnalyzer extends
writer.close();
- searcher = new IndexSearcher(directory, true);
+ reader = IndexReader.open(directory);
+ searcher = new IndexSearcher(reader);
+ }
+
+ @Override
+ public void tearDown() throws Exception {
+ searcher.close();
+ reader.close();
+ directory.close();
+ super.tearDown();
}
/*
Modified: lucene/dev/branches/lucene2621/modules/analysis/common/src/test/org/apache/lucene/analysis/shingle/ShingleAnalyzerWrapperTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/modules/analysis/common/src/test/org/apache/lucene/analysis/shingle/ShingleAnalyzerWrapperTest.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/modules/analysis/common/src/test/org/apache/lucene/analysis/shingle/ShingleAnalyzerWrapperTest.java (original)
+++ lucene/dev/branches/lucene2621/modules/analysis/common/src/test/org/apache/lucene/analysis/shingle/ShingleAnalyzerWrapperTest.java Wed Nov 16 13:09:32 2011
@@ -29,19 +29,21 @@ import org.apache.lucene.analysis.tokena
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.TextField;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.*;
import org.apache.lucene.store.Directory;
-import org.apache.lucene.store.RAMDirectory;
/**
* A test class for ShingleAnalyzerWrapper as regards queries and scoring.
*/
public class ShingleAnalyzerWrapperTest extends BaseTokenStreamTestCase {
-
- public IndexSearcher searcher;
+ private Analyzer analyzer;
+ private IndexSearcher searcher;
+ private IndexReader reader;
+ private Directory directory;
/**
* Set up a new index in RAM with three test phrases and the supplied Analyzer.
@@ -50,9 +52,12 @@ public class ShingleAnalyzerWrapperTest
* @return an indexSearcher on the test index.
* @throws Exception if an error occurs with index writer or searcher
*/
- public IndexSearcher setUpSearcher(Analyzer analyzer) throws Exception {
- Directory dir = new RAMDirectory();
- IndexWriter writer = new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, analyzer));
+ @Override
+ public void setUp() throws Exception {
+ super.setUp();
+ analyzer = new ShingleAnalyzerWrapper(new MockAnalyzer(random, MockTokenizer.WHITESPACE, false), 2);
+ directory = newDirectory();
+ IndexWriter writer = new IndexWriter(directory, new IndexWriterConfig(TEST_VERSION_CURRENT, analyzer));
Document doc;
doc = new Document();
@@ -69,7 +74,16 @@ public class ShingleAnalyzerWrapperTest
writer.close();
- return new IndexSearcher(dir, true);
+ reader = IndexReader.open(directory);
+ searcher = new IndexSearcher(reader);
+ }
+
+ @Override
+ public void tearDown() throws Exception {
+ searcher.close();
+ reader.close();
+ directory.close();
+ super.tearDown();
}
protected void compareRanks(ScoreDoc[] hits, int[] ranks) throws Exception {
@@ -83,9 +97,6 @@ public class ShingleAnalyzerWrapperTest
* This shows how to construct a phrase query containing shingles.
*/
public void testShingleAnalyzerWrapperPhraseQuery() throws Exception {
- Analyzer analyzer = new ShingleAnalyzerWrapper(new MockAnalyzer(random, MockTokenizer.WHITESPACE, false), 2);
- searcher = setUpSearcher(analyzer);
-
PhraseQuery q = new PhraseQuery();
TokenStream ts = analyzer.tokenStream("content", new StringReader("this sentence"));
@@ -112,9 +123,6 @@ public class ShingleAnalyzerWrapperTest
* in the right order and adjacent to each other.
*/
public void testShingleAnalyzerWrapperBooleanQuery() throws Exception {
- Analyzer analyzer = new ShingleAnalyzerWrapper(new MockAnalyzer(random, MockTokenizer.WHITESPACE, false), 2);
- searcher = setUpSearcher(analyzer);
-
BooleanQuery q = new BooleanQuery();
TokenStream ts = analyzer.tokenStream("content", new StringReader("test sentence"));
Modified: lucene/dev/branches/lucene2621/modules/benchmark/src/java/org/apache/lucene/benchmark/quality/trec/QueryDriver.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/modules/benchmark/src/java/org/apache/lucene/benchmark/quality/trec/QueryDriver.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/modules/benchmark/src/java/org/apache/lucene/benchmark/quality/trec/QueryDriver.java (original)
+++ lucene/dev/branches/lucene2621/modules/benchmark/src/java/org/apache/lucene/benchmark/quality/trec/QueryDriver.java Wed Nov 16 13:09:32 2011
@@ -20,6 +20,7 @@ package org.apache.lucene.benchmark.qual
import org.apache.lucene.benchmark.quality.utils.SimpleQQParser;
import org.apache.lucene.benchmark.quality.utils.SubmissionReport;
import org.apache.lucene.benchmark.quality.*;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.store.FSDirectory;
@@ -53,7 +54,8 @@ public class QueryDriver {
SubmissionReport submitLog = new SubmissionReport(new PrintWriter(args[2]), "lucene");
FSDirectory dir = FSDirectory.open(new File(args[3]));
String fieldSpec = args.length == 5 ? args[4] : "T"; // default to Title-only if not specified.
- IndexSearcher searcher = new IndexSearcher(dir, true);
+ IndexReader reader = IndexReader.open(dir);
+ IndexSearcher searcher = new IndexSearcher(reader);
int maxResults = 1000;
String docNameField = "docname";
@@ -86,5 +88,8 @@ public class QueryDriver {
// print an avarage sum of the results
QualityStats avg = QualityStats.average(stats);
avg.log("SUMMARY", 2, logger, " ");
+ searcher.close();
+ reader.close();
+ dir.close();
}
}
Modified: lucene/dev/branches/lucene2621/modules/benchmark/src/test/org/apache/lucene/benchmark/byTask/feeds/DocMakerTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/modules/benchmark/src/test/org/apache/lucene/benchmark/byTask/feeds/DocMakerTest.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/modules/benchmark/src/test/org/apache/lucene/benchmark/byTask/feeds/DocMakerTest.java (original)
+++ lucene/dev/branches/lucene2621/modules/benchmark/src/test/org/apache/lucene/benchmark/byTask/feeds/DocMakerTest.java Wed Nov 16 13:09:32 2011
@@ -29,6 +29,7 @@ import org.apache.lucene.benchmark.byTas
import org.apache.lucene.benchmark.byTask.tasks.TaskSequence;
import org.apache.lucene.benchmark.byTask.utils.Config;
import org.apache.lucene.document.Document;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.TermQuery;
@@ -87,10 +88,12 @@ public class DocMakerTest extends Benchm
tasks.addTask(new CloseIndexTask(runData));
tasks.doLogic();
- IndexSearcher searcher = new IndexSearcher(runData.getDirectory(), true);
+ IndexReader reader = IndexReader.open(runData.getDirectory());
+ IndexSearcher searcher = new IndexSearcher(reader);
TopDocs td = searcher.search(new TermQuery(new Term("key", "value")), 10);
assertEquals(numExpectedResults, td.totalHits);
searcher.close();
+ reader.close();
}
private Document createTestNormsDocument(boolean setNormsProp,
Modified: lucene/dev/branches/lucene2621/modules/benchmark/src/test/org/apache/lucene/benchmark/byTask/feeds/LineDocSourceTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/modules/benchmark/src/test/org/apache/lucene/benchmark/byTask/feeds/LineDocSourceTest.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/modules/benchmark/src/test/org/apache/lucene/benchmark/byTask/feeds/LineDocSourceTest.java (original)
+++ lucene/dev/branches/lucene2621/modules/benchmark/src/test/org/apache/lucene/benchmark/byTask/feeds/LineDocSourceTest.java Wed Nov 16 13:09:32 2011
@@ -38,6 +38,7 @@ import org.apache.lucene.benchmark.byTas
import org.apache.lucene.benchmark.byTask.tasks.TaskSequence;
import org.apache.lucene.benchmark.byTask.tasks.WriteLineDocTask;
import org.apache.lucene.benchmark.byTask.utils.Config;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.TermQuery;
@@ -140,7 +141,8 @@ public class LineDocSourceTest extends B
tasks.addTask(new CloseIndexTask(runData));
tasks.doLogic();
- IndexSearcher searcher = new IndexSearcher(runData.getDirectory(), true);
+ IndexReader reader = IndexReader.open(runData.getDirectory());
+ IndexSearcher searcher = new IndexSearcher(reader);
TopDocs td = searcher.search(new TermQuery(new Term("body", "body")), 10);
assertEquals(numAdds, td.totalHits);
assertNotNull(td.scoreDocs[0]);
@@ -151,6 +153,7 @@ public class LineDocSourceTest extends B
assertEquals("Wrong field value", storedField, searcher.doc(0).get(storedField));
searcher.close();
+ reader.close();
}
/* Tests LineDocSource with a bzip2 input stream. */
Modified: lucene/dev/branches/lucene2621/modules/benchmark/src/test/org/apache/lucene/benchmark/quality/TestQualityRun.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/modules/benchmark/src/test/org/apache/lucene/benchmark/quality/TestQualityRun.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/modules/benchmark/src/test/org/apache/lucene/benchmark/quality/TestQualityRun.java (original)
+++ lucene/dev/branches/lucene2621/modules/benchmark/src/test/org/apache/lucene/benchmark/quality/TestQualityRun.java Wed Nov 16 13:09:32 2011
@@ -22,6 +22,7 @@ import org.apache.lucene.benchmark.quali
import org.apache.lucene.benchmark.quality.trec.TrecTopicsReader;
import org.apache.lucene.benchmark.quality.utils.SimpleQQParser;
import org.apache.lucene.benchmark.quality.utils.SubmissionReport;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.store.Directory;
@@ -68,7 +69,8 @@ public class TestQualityRun extends Benc
judge.validateData(qqs, logger);
Directory dir = newFSDirectory(new File(getWorkDir(),"index"));
- IndexSearcher searcher = new IndexSearcher(dir, true);
+ IndexReader reader = IndexReader.open(dir);
+ IndexSearcher searcher = new IndexSearcher(reader);
QualityQueryParser qqParser = new SimpleQQParser("title","body");
QualityBenchmark qrun = new QualityBenchmark(qqs, qqParser, searcher, docNameField);
@@ -134,6 +136,7 @@ public class TestQualityRun extends Benc
}
searcher.close();
+ reader.close();
dir.close();
}
Modified: lucene/dev/branches/lucene2621/modules/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/modules/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyWriter.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/modules/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyWriter.java (original)
+++ lucene/dev/branches/lucene2621/modules/facet/src/java/org/apache/lucene/facet/taxonomy/directory/DirectoryTaxonomyWriter.java Wed Nov 16 13:09:32 2011
@@ -31,6 +31,7 @@ import org.apache.lucene.index.MultiFiel
import org.apache.lucene.index.Terms;
import org.apache.lucene.index.TermsEnum;
import org.apache.lucene.search.DocIdSetIterator;
+import org.apache.lucene.store.AlreadyClosedException;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.LockObtainFailedException;
import org.apache.lucene.store.NativeFSLockFactory;
@@ -117,6 +118,7 @@ public class DirectoryTaxonomyWriter imp
* objects you create for the same directory.
*/
public void setDelimiter(char delimiter) {
+ ensureOpen();
this.delimiter = delimiter;
}
@@ -290,6 +292,7 @@ public class DirectoryTaxonomyWriter imp
* @return Number of cache bytes in memory, for CL2O only; zero otherwise.
*/
public int getCacheMemoryUsage() {
+ ensureOpen();
if (this.cache == null || !(this.cache instanceof Cl2oTaxonomyWriterCache)) {
return 0;
}
@@ -403,8 +406,8 @@ public class DirectoryTaxonomyWriter imp
// calls - even those which could immediately return a cached value.
// We definitely need to fix this situation!
@Override
- public synchronized int addCategory(CategoryPath categoryPath)
- throws IOException {
+ public synchronized int addCategory(CategoryPath categoryPath) throws IOException {
+ ensureOpen();
// If the category is already in the cache and/or the taxonomy, we
// should return its existing ordinal:
int res = findCategory(categoryPath);
@@ -453,6 +456,16 @@ public class DirectoryTaxonomyWriter imp
return id;
}
+ /**
+ * Verifies that this instance wasn't closed, or throws
+ * {@link AlreadyClosedException} if it is.
+ */
+ protected final void ensureOpen() {
+ if (indexWriter == null) {
+ throw new AlreadyClosedException("The taxonomy writer has already been closed");
+ }
+ }
+
// Note that the methods calling addCategoryDocument() are synchornized,
// so this method is effectively synchronized as well, but we'll add
// synchronized to be on the safe side, and we can reuse class-local objects
@@ -570,6 +583,7 @@ public class DirectoryTaxonomyWriter imp
*/
@Override
public synchronized void commit() throws CorruptIndexException, IOException {
+ ensureOpen();
indexWriter.commit();
refreshReader();
}
@@ -581,6 +595,7 @@ public class DirectoryTaxonomyWriter imp
*/
@Override
public synchronized void commit(Map<String,String> commitUserData) throws CorruptIndexException, IOException {
+ ensureOpen();
indexWriter.commit(commitUserData);
refreshReader();
}
@@ -591,6 +606,7 @@ public class DirectoryTaxonomyWriter imp
*/
@Override
public synchronized void prepareCommit() throws CorruptIndexException, IOException {
+ ensureOpen();
indexWriter.prepareCommit();
}
@@ -600,6 +616,7 @@ public class DirectoryTaxonomyWriter imp
*/
@Override
public synchronized void prepareCommit(Map<String,String> commitUserData) throws CorruptIndexException, IOException {
+ ensureOpen();
indexWriter.prepareCommit(commitUserData);
}
@@ -616,6 +633,7 @@ public class DirectoryTaxonomyWriter imp
*/
@Override
synchronized public int getSize() {
+ ensureOpen();
return indexWriter.maxDoc();
}
@@ -643,8 +661,10 @@ public class DirectoryTaxonomyWriter imp
* method.
*/
public void setCacheMissesUntilFill(int i) {
+ ensureOpen();
cacheMissesUntilFill = i;
}
+
private int cacheMissesUntilFill = 11;
private boolean perhapsFillCache() throws IOException {
@@ -717,6 +737,7 @@ public class DirectoryTaxonomyWriter imp
}
@Override
public int getParent(int ordinal) throws IOException {
+ ensureOpen();
// Note: the following if() just enforces that a user can never ask
// for the parent of a nonexistant category - even if the parent array
// was allocated bigger than it really needs to be.
@@ -744,6 +765,7 @@ public class DirectoryTaxonomyWriter imp
* and does not need to be commit()ed before this call.
*/
public void addTaxonomies(Directory[] taxonomies, OrdinalMap[] ordinalMaps) throws IOException {
+ ensureOpen();
// To prevent us stepping on the rest of this class's decisions on when
// to open a reader, and when not, we'll be opening a new reader instead
// of using the existing "reader" object:
@@ -1009,10 +1031,16 @@ public class DirectoryTaxonomyWriter imp
return null;
}
+ /**
+ * Rollback changes to the taxonomy writer and closes the instance. Following
+ * this method the instance becomes unusable (calling any of its API methods
+ * will yield an {@link AlreadyClosedException}).
+ */
@Override
public void rollback() throws IOException {
+ ensureOpen();
indexWriter.rollback();
- refreshReader();
+ close();
}
}
Modified: lucene/dev/branches/lucene2621/modules/facet/src/test/org/apache/lucene/facet/taxonomy/directory/TestDirectoryTaxonomyWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/modules/facet/src/test/org/apache/lucene/facet/taxonomy/directory/TestDirectoryTaxonomyWriter.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/modules/facet/src/test/org/apache/lucene/facet/taxonomy/directory/TestDirectoryTaxonomyWriter.java (original)
+++ lucene/dev/branches/lucene2621/modules/facet/src/test/org/apache/lucene/facet/taxonomy/directory/TestDirectoryTaxonomyWriter.java Wed Nov 16 13:09:32 2011
@@ -5,6 +5,7 @@ import java.util.Map;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
+import org.apache.lucene.store.AlreadyClosedException;
import org.apache.lucene.store.Directory;
import org.junit.Test;
@@ -86,4 +87,35 @@ public class TestDirectoryTaxonomyWriter
dir.close();
}
+ @Test
+ public void testRollback() throws Exception {
+ // Verifies that if callback is called, DTW is closed.
+ Directory dir = newDirectory();
+ DirectoryTaxonomyWriter dtw = new DirectoryTaxonomyWriter(dir);
+ dtw.addCategory(new CategoryPath("a"));
+ dtw.rollback();
+ try {
+ dtw.addCategory(new CategoryPath("a"));
+ fail("should not have succeeded to add a category following rollback.");
+ } catch (AlreadyClosedException e) {
+ // expected
+ }
+ dir.close();
+ }
+
+ @Test
+ public void testEnsureOpen() throws Exception {
+ // verifies that an exception is thrown if DTW was closed
+ Directory dir = newDirectory();
+ DirectoryTaxonomyWriter dtw = new DirectoryTaxonomyWriter(dir);
+ dtw.close();
+ try {
+ dtw.addCategory(new CategoryPath("a"));
+ fail("should not have succeeded to add a category following close.");
+ } catch (AlreadyClosedException e) {
+ // expected
+ }
+ dir.close();
+ }
+
}
Modified: lucene/dev/branches/lucene2621/modules/queries/src/test/org/apache/lucene/queries/TestCustomScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/modules/queries/src/test/org/apache/lucene/queries/TestCustomScoreQuery.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/modules/queries/src/test/org/apache/lucene/queries/TestCustomScoreQuery.java (original)
+++ lucene/dev/branches/lucene2621/modules/queries/src/test/org/apache/lucene/queries/TestCustomScoreQuery.java Wed Nov 16 13:09:32 2011
@@ -29,6 +29,7 @@ import java.util.HashMap;
import java.util.Map;
import org.apache.lucene.index.IndexReader.AtomicReaderContext;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
/**
@@ -198,7 +199,8 @@ public class TestCustomScoreQuery extend
final Query q = new CustomExternalQuery(q1);
log(q);
- IndexSearcher s = new IndexSearcher(dir, true);
+ IndexReader r = IndexReader.open(dir);
+ IndexSearcher s = new IndexSearcher(r);
TopDocs hits = s.search(q, 1000);
assertEquals(N_DOCS, hits.totalHits);
for(int i=0;i<N_DOCS;i++) {
@@ -207,11 +209,13 @@ public class TestCustomScoreQuery extend
assertEquals("doc=" + doc, (float) 1+(4*doc) % N_DOCS, score, 0.0001);
}
s.close();
+ r.close();
}
@Test
public void testRewrite() throws Exception {
- final IndexSearcher s = new IndexSearcher(dir, true);
+ IndexReader r = IndexReader.open(dir);
+ final IndexSearcher s = new IndexSearcher(r);
Query q = new TermQuery(new Term(TEXT_FIELD, "first"));
CustomScoreQuery original = new CustomScoreQuery(q);
@@ -229,13 +233,15 @@ public class TestCustomScoreQuery extend
assertEquals(s.search(q,1).totalHits, s.search(rewritten,1).totalHits);
s.close();
+ r.close();
}
// Test that FieldScoreQuery returns docs with expected score.
private void doTestCustomScore(ValueSource valueSource, double dboost) throws Exception {
float boost = (float) dboost;
FunctionQuery functionQuery = new FunctionQuery(valueSource);
- IndexSearcher s = new IndexSearcher(dir, true);
+ IndexReader r = IndexReader.open(dir);
+ IndexSearcher s = new IndexSearcher(r);
// regular (boolean) query.
BooleanQuery q1 = new BooleanQuery();
@@ -285,6 +291,7 @@ public class TestCustomScoreQuery extend
h1, h2CustomNeutral, h3CustomMul, h4CustomAdd, h5CustomMulAdd,
q1, q2CustomNeutral, q3CustomMul, q4CustomAdd, q5CustomMulAdd);
s.close();
+ r.close();
}
// verify results are as expected.
Modified: lucene/dev/branches/lucene2621/modules/queries/src/test/org/apache/lucene/queries/function/TestFieldScoreQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/modules/queries/src/test/org/apache/lucene/queries/function/TestFieldScoreQuery.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/modules/queries/src/test/org/apache/lucene/queries/function/TestFieldScoreQuery.java (original)
+++ lucene/dev/branches/lucene2621/modules/queries/src/test/org/apache/lucene/queries/function/TestFieldScoreQuery.java Wed Nov 16 13:09:32 2011
@@ -17,6 +17,7 @@ package org.apache.lucene.queries.functi
* limitations under the License.
*/
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queries.function.FunctionQuery;
import org.apache.lucene.queries.function.ValueSource;
import org.apache.lucene.queries.function.valuesource.ByteFieldSource;
@@ -80,7 +81,8 @@ public class TestFieldScoreQuery extends
// Test that FieldScoreQuery returns docs in expected order.
private void doTestRank (ValueSource valueSource) throws Exception {
FunctionQuery functionQuery = new FunctionQuery(valueSource);
- IndexSearcher s = new IndexSearcher(dir, true);
+ IndexReader r = IndexReader.open(dir);
+ IndexSearcher s = new IndexSearcher(r);
log("test: "+ functionQuery);
QueryUtils.check(random, functionQuery,s);
ScoreDoc[] h = s.search(functionQuery, null, 1000).scoreDocs;
@@ -94,6 +96,7 @@ public class TestFieldScoreQuery extends
prevID = resID;
}
s.close();
+ r.close();
}
/** Test that FieldScoreQuery of Type.BYTE returns the expected scores. */
@@ -128,7 +131,8 @@ public class TestFieldScoreQuery extends
// Test that FieldScoreQuery returns docs with expected score.
private void doTestExactScore (ValueSource valueSource) throws Exception {
FunctionQuery functionQuery = new FunctionQuery(valueSource);
- IndexSearcher s = new IndexSearcher(dir, true);
+ IndexReader r = IndexReader.open(dir);
+ IndexSearcher s = new IndexSearcher(r);
TopDocs td = s.search(functionQuery,null,1000);
assertEquals("All docs should be matched!",N_DOCS,td.totalHits);
ScoreDoc sd[] = td.scoreDocs;
@@ -140,6 +144,7 @@ public class TestFieldScoreQuery extends
assertEquals("score of " + id + " shuould be " + expectedScore + " != " + score, expectedScore, score, TEST_SCORE_TOLERANCE_DELTA);
}
s.close();
+ r.close();
}
}
Modified: lucene/dev/branches/lucene2621/modules/queries/src/test/org/apache/lucene/queries/function/TestOrdValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/modules/queries/src/test/org/apache/lucene/queries/function/TestOrdValues.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/modules/queries/src/test/org/apache/lucene/queries/function/TestOrdValues.java (original)
+++ lucene/dev/branches/lucene2621/modules/queries/src/test/org/apache/lucene/queries/function/TestOrdValues.java Wed Nov 16 13:09:32 2011
@@ -18,6 +18,7 @@ package org.apache.lucene.queries.functi
*/
import org.apache.lucene.index.CorruptIndexException;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.queries.function.valuesource.OrdFieldSource;
import org.apache.lucene.queries.function.valuesource.ReverseOrdFieldSource;
@@ -62,7 +63,8 @@ public class TestOrdValues extends Funct
// Test that queries based on reverse/ordFieldScore scores correctly
private void doTestRank(String field, boolean inOrder) throws CorruptIndexException, Exception {
- IndexSearcher s = new IndexSearcher(dir, true);
+ IndexReader r = IndexReader.open(dir);
+ IndexSearcher s = new IndexSearcher(r);
ValueSource vs;
if (inOrder) {
vs = new OrdFieldSource(field);
@@ -91,6 +93,7 @@ public class TestOrdValues extends Funct
prevID = resID;
}
s.close();
+ r.close();
}
/**
@@ -112,7 +115,8 @@ public class TestOrdValues extends Funct
// Test that queries based on reverse/ordFieldScore returns docs with expected score.
private void doTestExactScore(String field, boolean inOrder) throws CorruptIndexException, Exception {
- IndexSearcher s = new IndexSearcher(dir, true);
+ IndexReader r = IndexReader.open(dir);
+ IndexSearcher s = new IndexSearcher(r);
ValueSource vs;
if (inOrder) {
vs = new OrdFieldSource(field);
@@ -136,6 +140,7 @@ public class TestOrdValues extends Funct
assertTrue("id of result " + i + " shuould be " + expectedId + " != " + score, expectedId.equals(id));
}
s.close();
+ r.close();
}
// LUCENE-1250
Modified: lucene/dev/branches/lucene2621/modules/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/modules/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/modules/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java (original)
+++ lucene/dev/branches/lucene2621/modules/queryparser/src/test/org/apache/lucene/queryparser/classic/TestMultiFieldQueryParser.java Wed Nov 16 13:09:32 2011
@@ -25,6 +25,7 @@ import java.util.Map;
import org.apache.lucene.analysis.*;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.TextField;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.IndexSearcher;
@@ -290,10 +291,12 @@ public class TestMultiFieldQueryParser e
new MultiFieldQueryParser(TEST_VERSION_CURRENT, new String[] {"body"}, analyzer);
mfqp.setDefaultOperator(QueryParser.Operator.AND);
Query q = mfqp.parse("the footest");
- IndexSearcher is = new IndexSearcher(ramDir, true);
+ IndexReader ir = IndexReader.open(ramDir);
+ IndexSearcher is = new IndexSearcher(ir);
ScoreDoc[] hits = is.search(q, null, 1000).scoreDocs;
assertEquals(1, hits.length);
is.close();
+ ir.close();
ramDir.close();
}
Modified: lucene/dev/branches/lucene2621/modules/queryparser/src/test/org/apache/lucene/queryparser/complexPhrase/TestComplexPhraseQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/modules/queryparser/src/test/org/apache/lucene/queryparser/complexPhrase/TestComplexPhraseQuery.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/modules/queryparser/src/test/org/apache/lucene/queryparser/complexPhrase/TestComplexPhraseQuery.java (original)
+++ lucene/dev/branches/lucene2621/modules/queryparser/src/test/org/apache/lucene/queryparser/complexPhrase/TestComplexPhraseQuery.java Wed Nov 16 13:09:32 2011
@@ -23,6 +23,7 @@ import org.apache.lucene.analysis.Analyz
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.TextField;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
@@ -42,6 +43,7 @@ public class TestComplexPhraseQuery exte
new DocData("jackson waits tom", "4") };
private IndexSearcher searcher;
+ private IndexReader reader;
String defaultFieldName = "name";
@@ -120,12 +122,14 @@ public class TestComplexPhraseQuery exte
w.addDocument(doc);
}
w.close();
- searcher = new IndexSearcher(rd, true);
+ reader = IndexReader.open(rd);
+ searcher = new IndexSearcher(reader);
}
@Override
public void tearDown() throws Exception {
searcher.close();
+ reader.close();
rd.close();
super.tearDown();
}
Modified: lucene/dev/branches/lucene2621/modules/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiFieldQPHelper.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/modules/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiFieldQPHelper.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/modules/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiFieldQPHelper.java (original)
+++ lucene/dev/branches/lucene2621/modules/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestMultiFieldQPHelper.java Wed Nov 16 13:09:32 2011
@@ -24,6 +24,7 @@ import java.util.Map;
import org.apache.lucene.analysis.*;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.TextField;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.queryparser.flexible.core.QueryNodeException;
import org.apache.lucene.queryparser.flexible.standard.config.StandardQueryConfigHandler;
@@ -328,10 +329,12 @@ public class TestMultiFieldQPHelper exte
mfqp.setAnalyzer(analyzer);
mfqp.setDefaultOperator(StandardQueryConfigHandler.Operator.AND);
Query q = mfqp.parse("the footest", null);
- IndexSearcher is = new IndexSearcher(ramDir, true);
+ IndexReader ir = IndexReader.open(ramDir);
+ IndexSearcher is = new IndexSearcher(ir);
ScoreDoc[] hits = is.search(q, null, 1000).scoreDocs;
assertEquals(1, hits.length);
is.close();
+ ir.close();
ramDir.close();
}
Modified: lucene/dev/branches/lucene2621/modules/queryparser/src/test/org/apache/lucene/queryparser/surround/query/BooleanQueryTst.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/modules/queryparser/src/test/org/apache/lucene/queryparser/surround/query/BooleanQueryTst.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/modules/queryparser/src/test/org/apache/lucene/queryparser/surround/query/BooleanQueryTst.java (original)
+++ lucene/dev/branches/lucene2621/modules/queryparser/src/test/org/apache/lucene/queryparser/surround/query/BooleanQueryTst.java Wed Nov 16 13:09:32 2011
@@ -19,6 +19,7 @@ package org.apache.lucene.queryparser.su
import java.io.IOException;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Collector;
@@ -121,11 +122,13 @@ public class BooleanQueryTst {
/* if (verbose) System.out.println("Lucene: " + query.toString()); */
TestCollector tc = new TestCollector();
- IndexSearcher searcher = new IndexSearcher(dBase.getDb(), true);
+ IndexReader reader = IndexReader.open(dBase.getDb());
+ IndexSearcher searcher = new IndexSearcher(reader);
try {
searcher.search(query, tc);
} finally {
searcher.close();
+ reader.close();
}
tc.checkNrHits();
}
Modified: lucene/dev/branches/lucene2621/modules/queryparser/src/test/org/apache/lucene/queryparser/xml/TestQueryTemplateManager.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/modules/queryparser/src/test/org/apache/lucene/queryparser/xml/TestQueryTemplateManager.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/modules/queryparser/src/test/org/apache/lucene/queryparser/xml/TestQueryTemplateManager.java (original)
+++ lucene/dev/branches/lucene2621/modules/queryparser/src/test/org/apache/lucene/queryparser/xml/TestQueryTemplateManager.java Wed Nov 16 13:09:32 2011
@@ -20,6 +20,7 @@ package org.apache.lucene.queryparser.xm
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.TextField;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
@@ -46,6 +47,7 @@ public class TestQueryTemplateManager ex
private CoreParser builder;
private final Analyzer analyzer = new MockAnalyzer(random);
private IndexSearcher searcher;
+ private IndexReader reader;
private Directory dir;
//A collection of documents' field values for use in our tests
@@ -147,7 +149,8 @@ public class TestQueryTemplateManager ex
}
w.forceMerge(1);
w.close();
- searcher = new IndexSearcher(dir, true);
+ reader = IndexReader.open(dir);
+ searcher = new IndexSearcher(reader);
//initialize the parser
builder = new CorePlusExtensionsParser("artist", analyzer);
@@ -157,6 +160,7 @@ public class TestQueryTemplateManager ex
@Override
public void tearDown() throws Exception {
searcher.close();
+ reader.close();
dir.close();
super.tearDown();
}
Modified: lucene/dev/branches/lucene2621/modules/suggest/src/java/org/apache/lucene/search/spell/SpellChecker.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/modules/suggest/src/java/org/apache/lucene/search/spell/SpellChecker.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/modules/suggest/src/java/org/apache/lucene/search/spell/SpellChecker.java (original)
+++ lucene/dev/branches/lucene2621/modules/suggest/src/java/org/apache/lucene/search/spell/SpellChecker.java Wed Nov 16 13:09:32 2011
@@ -638,6 +638,7 @@ public class SpellChecker implements jav
ensureOpen();
closed = true;
if (searcher != null) {
+ searcher.getIndexReader().close();
searcher.close();
}
searcher = null;
@@ -653,10 +654,12 @@ public class SpellChecker implements jav
final IndexSearcher indexSearcher = createSearcher(dir);
synchronized (searcherLock) {
if(closed){
+ indexSearcher.getIndexReader().close();
indexSearcher.close();
throw new AlreadyClosedException("Spellchecker has been closed");
}
if (searcher != null) {
+ searcher.getIndexReader().close();
searcher.close();
}
// set the spellindex in the sync block - ensure consistency.
@@ -673,7 +676,7 @@ public class SpellChecker implements jav
*/
// for testing purposes
IndexSearcher createSearcher(final Directory dir) throws IOException{
- return new IndexSearcher(dir, true);
+ return new IndexSearcher(IndexReader.open(dir));
}
/**
Modified: lucene/dev/branches/lucene2621/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/solr/CHANGES.txt?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/solr/CHANGES.txt (original)
+++ lucene/dev/branches/lucene2621/solr/CHANGES.txt Wed Nov 16 13:09:32 2011
@@ -428,6 +428,8 @@ Bug Fixes
* SOLR-2861: Fix extremely rare race condition on commit that can result
in a NPE (yonik)
+* SOLR-2813: Fix HTTP error codes returned when requests contain strings that
+ can not be parsed as numbers for Trie fields. (Jeff Crump and hossman)
Other Changes
----------------------
Modified: lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/analysis/TrieTokenizerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/analysis/TrieTokenizerFactory.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/analysis/TrieTokenizerFactory.java (original)
+++ lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/analysis/TrieTokenizerFactory.java Wed Nov 16 13:09:32 2011
@@ -89,24 +89,29 @@ final class TrieTokenizer extends Tokeni
this.startOfs = correctOffset(0);
this.endOfs = correctOffset(len);
String v = new String(buf, 0, len);
- switch (type) {
- case INTEGER:
- ts.setIntValue(Integer.parseInt(v));
- break;
- case FLOAT:
- ts.setFloatValue(Float.parseFloat(v));
- break;
- case LONG:
- ts.setLongValue(Long.parseLong(v));
- break;
- case DOUBLE:
- ts.setDoubleValue(Double.parseDouble(v));
- break;
- case DATE:
- ts.setLongValue(dateField.parseMath(null, v).getTime());
- break;
- default:
- throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Unknown type for trie field");
+ try {
+ switch (type) {
+ case INTEGER:
+ ts.setIntValue(Integer.parseInt(v));
+ break;
+ case FLOAT:
+ ts.setFloatValue(Float.parseFloat(v));
+ break;
+ case LONG:
+ ts.setLongValue(Long.parseLong(v));
+ break;
+ case DOUBLE:
+ ts.setDoubleValue(Double.parseDouble(v));
+ break;
+ case DATE:
+ ts.setLongValue(dateField.parseMath(null, v).getTime());
+ break;
+ default:
+ throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Unknown type for trie field");
+ }
+ } catch (NumberFormatException nfe) {
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
+ "Invalid Number: " + v);
}
} catch (IOException e) {
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Unable to create TrieIndexTokenizer", e);
Modified: lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java (original)
+++ lucene/dev/branches/lucene2621/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java Wed Nov 16 13:09:32 2011
@@ -143,7 +143,6 @@ public class DirectUpdateHandler2 extend
try {
- softCommitTracker.addedDocument( -1 ); // TODO: support commitWithin with soft update
if (cmd.overwrite) {
Term updateTerm;
@@ -171,13 +170,15 @@ public class DirectUpdateHandler2 extend
// allow duplicates
writer.addDocument(cmd.getLuceneDocument());
}
- commitTracker.addedDocument( cmd.commitWithin );
// Add to the transaction log *after* successfully adding to the index, if there was no error.
// This ordering ensures that if we log it, it's definitely been added to the the index.
// This also ensures that if a commit sneaks in-between, that we know everything in a particular
// log version was definitely committed.
ulog.add(cmd);
+ softCommitTracker.addedDocument( -1 ); // TODO: support commitWithin with soft update
+ commitTracker.addedDocument( cmd.commitWithin );
+
rc = 1;
} finally {
if (rc!=1) {
Modified: lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java (original)
+++ lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/BasicFunctionalityTest.java Wed Nov 16 13:09:32 2011
@@ -22,6 +22,8 @@ import java.io.IOException;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;
+import java.util.List;
+import java.util.LinkedList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -222,6 +224,43 @@ public class BasicFunctionalityTest exte
);
}
+
+ @Test
+ public void testClientErrorOnMalformedNumbers() throws Exception {
+
+ final String BAD_VALUE = "NOT_A_NUMBER";
+ ignoreException(BAD_VALUE);
+
+ final List<String> FIELDS = new LinkedList<String>();
+ for (String type : new String[] { "ti", "tf", "td", "tl" }) {
+ FIELDS.add("malformed_" + type);
+ }
+
+ // test that malformed numerics cause client error not server error
+ for (String field : FIELDS) {
+ try {
+ h.update(add( doc("id","100", field, BAD_VALUE)));
+ fail("Didn't encounter an error trying to add a non-number: " + field);
+ } catch (SolrException e) {
+ String msg = e.toString();
+ assertTrue("not an (update) client error on field: " + field +" : "+ msg,
+ 400 <= e.code() && e.code() < 500);
+ assertTrue("(update) client error does not mention bad value: " + msg,
+ msg.contains(BAD_VALUE));
+ }
+ try {
+ h.query(req("q",field + ":" + BAD_VALUE));
+ fail("Didn't encounter an error trying to query a non-number: " + field);
+ } catch (SolrException e) {
+ String msg = e.toString();
+ assertTrue("not a (search) client error on field: " + field +" : "+ msg,
+ 400 <= e.code() && e.code() < 500);
+ assertTrue("(search) client error does not mention bad value: " + msg,
+ msg.contains(BAD_VALUE));
+ }
+ }
+ }
+
@Test
public void testRequestHandlerBaseException() {
final String tmp = "BOO! ignore_exception";
Modified: lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java (original)
+++ lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java Wed Nov 16 13:09:32 2011
@@ -27,6 +27,7 @@ import java.io.Writer;
import java.net.URL;
import org.apache.commons.io.IOUtils;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.MatchAllDocsQuery;
import org.apache.lucene.search.TopDocs;
@@ -829,11 +830,13 @@ public class TestReplicationHandler exte
assertEquals(1, files.length);
File snapDir = files[0];
Directory dir = new SimpleFSDirectory(snapDir.getAbsoluteFile());
- IndexSearcher searcher = new IndexSearcher(dir, true);
+ IndexReader reader = IndexReader.open(dir);
+ IndexSearcher searcher = new IndexSearcher(reader);
TopDocs hits = searcher.search(new MatchAllDocsQuery(), 1);
assertEquals(nDocs, hits.totalHits);
searcher.close();
+ reader.close();
dir.close();
AbstractSolrTestCase.recurseDelete(snapDir); // clean up the snap dir
}
Modified: lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/search/TestSort.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/search/TestSort.java?rev=1202693&r1=1202692&r2=1202693&view=diff
==============================================================================
--- lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/search/TestSort.java (original)
+++ lucene/dev/branches/lucene2621/solr/core/src/test/org/apache/solr/search/TestSort.java Wed Nov 16 13:09:32 2011
@@ -25,6 +25,7 @@ import org.apache.lucene.document.Docume
import org.apache.lucene.document.Field;
import org.apache.lucene.document.StringField;
import org.apache.lucene.index.IndexReader.AtomicReaderContext;
+import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.search.*;
@@ -193,9 +194,10 @@ public class TestSort extends SolrTestCa
iw.close();
- IndexSearcher searcher = new IndexSearcher(dir, true);
+ IndexReader reader = IndexReader.open(dir);
+ IndexSearcher searcher = new IndexSearcher(reader);
// System.out.println("segments="+searcher.getIndexReader().getSequentialSubReaders().length);
- assertTrue(searcher.getIndexReader().getSequentialSubReaders().length > 1);
+ assertTrue(reader.getSequentialSubReaders().length > 1);
for (int i=0; i<qiter; i++) {
Filter filt = new Filter() {
@@ -301,6 +303,7 @@ public class TestSort extends SolrTestCa
}
}
searcher.close();
+ reader.close();
}
dir.close();