You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2011/03/13 00:22:26 UTC
svn commit: r1081017 - in
/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index: IndexReader.java
IndexWriter.java SegmentMerger.java SegmentReader.java
Author: mikemccand
Date: Sat Mar 12 23:22:26 2011
New Revision: 1081017
URL: http://svn.apache.org/viewvc?rev=1081017&view=rev
Log:
fix minor concurrency issue on SegmentReader; fix false test failure
Modified:
lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexReader.java
lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexWriter.java
lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/SegmentMerger.java
lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/SegmentReader.java
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexReader.java?rev=1081017&r1=1081016&r2=1081017&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexReader.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexReader.java Sat Mar 12 23:22:26 2011
@@ -996,7 +996,8 @@ public abstract class IndexReader implem
}
/** Returns the byte-encoded normalization factor for the named field of
- * every document. This is used by the search code to score documents.
+ * every document. This is used by the search code to score documents.
+ * Returns null if norms were not indexed for this field.
*
* @see org.apache.lucene.document.Field#setBoost(float)
*/
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexWriter.java?rev=1081017&r1=1081016&r2=1081017&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexWriter.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/IndexWriter.java Sat Mar 12 23:22:26 2011
@@ -3222,7 +3222,7 @@ public class IndexWriter implements Clos
message("merge segmentCodecs=" + merger.getSegmentCodecs());
message("merge store matchedCount=" + merger.getMatchedSubReaderCount() + " vs " + merge.readers.size());
}
- anyNonBulkMerges |= merger.getMatchedSubReaderCount() != merge.readers.size();
+ anyNonBulkMerges |= merger.getAnyNonBulkMerges();
assert mergedDocCount == totDocCount: "mergedDocCount=" + mergedDocCount + " vs " + totDocCount;
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/SegmentMerger.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/SegmentMerger.java?rev=1081017&r1=1081016&r2=1081017&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/SegmentMerger.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/SegmentMerger.java Sat Mar 12 23:22:26 2011
@@ -571,6 +571,11 @@ final class SegmentMerger {
return mergeState.delCounts;
}
+ public boolean getAnyNonBulkMerges() {
+ assert matchedCount <= readers.size();
+ return matchedCount != readers.size();
+ }
+
private void mergeNorms() throws IOException {
IndexOutput output = null;
try {
Modified: lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/SegmentReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/SegmentReader.java?rev=1081017&r1=1081016&r2=1081017&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/SegmentReader.java (original)
+++ lucene/dev/trunk/lucene/src/java/org/apache/lucene/index/SegmentReader.java Sat Mar 12 23:22:26 2011
@@ -702,7 +702,7 @@ public class SegmentReader extends Index
}
}
- private void commitChanges(Map<String,String> commitUserData) throws IOException {
+ private synchronized void commitChanges(Map<String,String> commitUserData) throws IOException {
if (deletedDocsDirty) { // re-write deleted
si.advanceDelGen();
@@ -923,26 +923,21 @@ public class SegmentReader extends Index
return fieldSet;
}
-
@Override
- public synchronized boolean hasNorms(String field) {
+ public boolean hasNorms(String field) {
ensureOpen();
return norms.containsKey(field);
}
- // can return null if norms aren't stored
- protected synchronized byte[] getNorms(String field) throws IOException {
- Norm norm = norms.get(field);
- if (norm == null) return null; // not indexed, or norms not stored
- return norm.bytes();
- }
-
- // returns fake norms if norms aren't available
@Override
- public synchronized byte[] norms(String field) throws IOException {
+ public byte[] norms(String field) throws IOException {
ensureOpen();
- byte[] bytes = getNorms(field);
- return bytes;
+ final Norm norm = norms.get(field);
+ if (norm == null) {
+ // not indexed, or norms not stored
+ return null;
+ }
+ return norm.bytes();
}
@Override