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 2013/01/08 04:40:37 UTC

svn commit: r1430130 [6/27] - in /lucene/dev/branches/lucene4547: ./ dev-tools/ dev-tools/eclipse/ dev-tools/idea/.idea/libraries/ dev-tools/maven/ dev-tools/maven/solr/ dev-tools/maven/solr/contrib/analysis-extras/ dev-tools/maven/solr/contrib/cluster...

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocTermOrds.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocTermOrds.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocTermOrds.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocTermOrds.java Tue Jan  8 03:40:16 2013
@@ -363,7 +363,7 @@ public class DocTermOrds {
       final int df = te.docFreq();
       if (df <= maxTermDocFreq) {
 
-        docsEnum = te.docs(liveDocs, docsEnum, 0);
+        docsEnum = te.docs(liveDocs, docsEnum, DocsEnum.FLAG_NONE);
 
         // dF, but takes deletions into account
         int actualDF = 0;

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocValues.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocValues.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocValues.java Tue Jan  8 03:40:16 2013
@@ -163,6 +163,7 @@ public abstract class DocValues implemen
    * by the creator of this {@link DocValues} instance. API users should not
    * close {@link DocValues} instances.
    */
+  @Override
   public void close() throws IOException {
     cache.close(this);
   }
@@ -833,6 +834,7 @@ public abstract class DocValues implemen
       public DirectSourceCache() {
       }
 
+      @Override
       public synchronized Source load(DocValues values) throws IOException {
         if (ref == null) {
           ref = values.loadSource();
@@ -840,6 +842,7 @@ public abstract class DocValues implemen
         return ref;
       }
 
+      @Override
       public synchronized void invalidate(DocValues values) {
         ref = null;
         directSourceCache.close();

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocsAndPositionsEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocsAndPositionsEnum.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocsAndPositionsEnum.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocsAndPositionsEnum.java Tue Jan  8 03:40:16 2013
@@ -24,6 +24,7 @@ import org.apache.lucene.util.BytesRef;
 
 /** Also iterates through positions. */
 public abstract class DocsAndPositionsEnum extends DocsEnum {
+  
   /** Flag to pass to {@link TermsEnum#docsAndPositions(Bits,DocsAndPositionsEnum,int)}
    *  if you require offsets in the returned enum. */
   public static final int FLAG_OFFSETS = 0x1;

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocsEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocsEnum.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocsEnum.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocsEnum.java Tue Jan  8 03:40:16 2013
@@ -19,6 +19,7 @@ package org.apache.lucene.index;
 
 import java.io.IOException;
 
+import org.apache.lucene.index.FieldInfo.IndexOptions;
 import org.apache.lucene.search.DocIdSetIterator;
 import org.apache.lucene.util.AttributeSource;
 import org.apache.lucene.util.Bits; // javadocs
@@ -27,6 +28,14 @@ import org.apache.lucene.util.Bits; // j
  *  NOTE: you must first call {@link #nextDoc} before using
  *  any of the per-doc methods. */
 public abstract class DocsEnum extends DocIdSetIterator {
+  
+  /**
+   * Flag to pass to {@link TermsEnum#docs(Bits,DocsEnum,int)} if you don't
+   * require term frequencies in the returned enum. When passed to
+   * {@link TermsEnum#docsAndPositions(Bits,DocsAndPositionsEnum,int)} means
+   * that no offsets and payloads will be returned.
+   */
+  public static final int FLAG_NONE = 0x0;
 
   /** Flag to pass to {@link TermsEnum#docs(Bits,DocsEnum,int)}
    *  if you require term frequencies in the returned enum. */
@@ -39,10 +48,16 @@ public abstract class DocsEnum extends D
   protected DocsEnum() {
   }
 
-  /** Returns term frequency in the current document.  Do
-   *  not call this before {@link #nextDoc} is first called,
-   *  nor after {@link #nextDoc} returns NO_MORE_DOCS. 
-   **/
+  /**
+   * Returns term frequency in the current document, or 1 if the field was
+   * indexed with {@link IndexOptions#DOCS_ONLY}. Do not call this before
+   * {@link #nextDoc} is first called, nor after {@link #nextDoc} returns
+   * {@link DocIdSetIterator#NO_MORE_DOCS}.
+   * 
+   * <p>
+   * <b>NOTE:</b> if the {@link DocsEnum} was obtain with {@link #FLAG_NONE},
+   * the result of this method is undefined.
+   */
   public abstract int freq() throws IOException;
   
   /** Returns the related attributes. */

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterFlushControl.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterFlushControl.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterFlushControl.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterFlushControl.java Tue Jan  8 03:40:16 2013
@@ -384,14 +384,17 @@ final class DocumentsWriterFlushControl 
     return new Iterator<ThreadState>() {
       int i = 0;
 
+      @Override
       public boolean hasNext() {
         return i < upto;
       }
 
+      @Override
       public ThreadState next() {
         return perThreadPool.getThreadState(i++);
       }
 
+      @Override
       public void remove() {
         throw new UnsupportedOperationException("remove() not supported.");
       }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterFlushQueue.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterFlushQueue.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterFlushQueue.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterFlushQueue.java Tue Jan  8 03:40:16 2013
@@ -178,6 +178,7 @@ class DocumentsWriterFlushQueue {
     protected GlobalDeletesTicket(FrozenBufferedDeletes frozenDeletes) {
       super(frozenDeletes);
     }
+    @Override
     protected void publish(DocumentsWriter writer) throws IOException {
       assert !published : "ticket was already publised - can not publish twice";
       published = true;
@@ -185,6 +186,7 @@ class DocumentsWriterFlushQueue {
       writer.finishFlush(null, frozenDeletes);
     }
 
+    @Override
     protected boolean canPublish() {
       return true;
     }
@@ -198,6 +200,7 @@ class DocumentsWriterFlushQueue {
       super(frozenDeletes);
     }
     
+    @Override
     protected void publish(DocumentsWriter writer) throws IOException {
       assert !published : "ticket was already publised - can not publish twice";
       published = true;
@@ -214,6 +217,7 @@ class DocumentsWriterFlushQueue {
       failed = true;
     }
 
+    @Override
     protected boolean canPublish() {
       return segment != null || failed;
     }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java Tue Jan  8 03:40:16 2013
@@ -302,7 +302,9 @@ class DocumentsWriterPerThread {
       infoStream.message("DWPT", Thread.currentThread().getName() + " update delTerm=" + delTerm + " docID=" + docState.docID + " seg=" + segmentInfo.name);
     }
     int docCount = 0;
+    boolean allDocsIndexed = false;
     try {
+      
       for(IndexDocument doc : docs) {
         docState.doc = doc;
         docState.docID = numDocsInRAM;
@@ -315,20 +317,7 @@ class DocumentsWriterPerThread {
         } finally {
           if (!success) {
             // An exc is being thrown...
-
             if (!aborting) {
-              // One of the documents hit a non-aborting
-              // exception (eg something happened during
-              // analysis).  We now go and mark any docs
-              // from this batch that we had already indexed
-              // as deleted:
-              int docID = docState.docID;
-              final int endDocID = docID - docCount;
-              while (docID > endDocID) {
-                deleteDocID(docID);
-                docID--;
-              }
-
               // Incr here because finishDocument will not
               // be called (because an exc is being thrown):
               numDocsInRAM++;
@@ -349,6 +338,7 @@ class DocumentsWriterPerThread {
 
         finishDocument(null);
       }
+      allDocsIndexed = true;
 
       // Apply delTerm only after all indexing has
       // succeeded, but apply it only to docs prior to when
@@ -360,6 +350,16 @@ class DocumentsWriterPerThread {
       }
 
     } finally {
+      if (!allDocsIndexed && !aborting) {
+        // the iterator threw an exception that is not aborting 
+        // go and mark all docs from this block as deleted
+        int docID = numDocsInRAM-1;
+        final int endDocID = docID - docCount;
+        while (docID > endDocID) {
+          deleteDocID(docID);
+          docID--;
+        }
+      }
       docState.clear();
     }
 
@@ -643,6 +643,7 @@ class DocumentsWriterPerThread {
     }
     
     /* Allocate another int[] from the shared pool */
+    @Override
     public int[] getIntBlock() {
       int[] b = new int[IntBlockPool.INT_BLOCK_SIZE];
       bytesUsed.addAndGet(IntBlockPool.INT_BLOCK_SIZE
@@ -650,6 +651,7 @@ class DocumentsWriterPerThread {
       return b;
     }
     
+    @Override
     public void recycleIntBlocks(int[][] blocks, int offset, int length) {
       bytesUsed.addAndGet(-(length * (IntBlockPool.INT_BLOCK_SIZE * RamUsageEstimator.NUM_BYTES_INT)));
     }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/FieldInfos.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/FieldInfos.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/FieldInfos.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/FieldInfos.java Tue Jan  8 03:40:16 2013
@@ -131,6 +131,7 @@ public class FieldInfos implements Itera
    * ordered by ascending field number
    */
   // TODO: what happens if in fact a different order is used?
+  @Override
   public Iterator<FieldInfo> iterator() {
     return values.iterator();
   }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/Fields.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/Fields.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/Fields.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/Fields.java Tue Jan  8 03:40:16 2013
@@ -32,6 +32,7 @@ public abstract class Fields implements 
 
   /** Returns an iterator that will step through all fields
    *  names.  This will not return null.  */
+  @Override
   public abstract Iterator<String> iterator();
 
   /** Get the {@link Terms} for this field.  This will return

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriterPerField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriterPerField.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriterPerField.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/FreqProxTermsWriterPerField.java Tue Jan  8 03:40:16 2013
@@ -78,6 +78,7 @@ final class FreqProxTermsWriterPerField 
   @Override
   void skippingLongTerm() {}
 
+  @Override
   public int compareTo(FreqProxTermsWriterPerField other) {
     return fieldInfo.name.compareTo(other.fieldInfo.name);
   }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/IndexCommit.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/IndexCommit.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/IndexCommit.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/IndexCommit.java Tue Jan  8 03:40:16 2013
@@ -111,6 +111,7 @@ public abstract class IndexCommit implem
    *  String -> String. */
   public abstract Map<String,String> getUserData() throws IOException;
   
+  @Override
   public int compareTo(IndexCommit commit) {
     if (getDirectory() != commit.getDirectory()) {
       throw new UnsupportedOperationException("cannot compare IndexCommits from different Directory instances");

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/IndexFileDeleter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/IndexFileDeleter.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/IndexFileDeleter.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/IndexFileDeleter.java Tue Jan  8 03:40:16 2013
@@ -17,6 +17,7 @@ package org.apache.lucene.index;
  * limitations under the License.
  */
 
+import java.io.Closeable;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -69,7 +70,7 @@ import org.apache.lucene.util.InfoStream
  * directly with no retry logic.
  */
 
-final class IndexFileDeleter {
+final class IndexFileDeleter implements Closeable {
 
   /* Files that we tried to delete but failed (likely
    * because they are open and we are running on Windows),
@@ -435,8 +436,9 @@ final class IndexFileDeleter {
     assert locked();
 
     assert Thread.holdsLock(writer);
-
+    long t0 = 0;
     if (infoStream.isEnabled("IFD")) {
+      t0 = System.nanoTime();
       infoStream.message("IFD", "now checkpoint \"" + writer.segString(writer.toLiveInfos(segmentInfos)) + "\" [" + segmentInfos.size() + " segments " + "; isCommit = " + isCommit + "]");
     }
 
@@ -466,6 +468,10 @@ final class IndexFileDeleter {
       // Save files so we can decr on next checkpoint/commit:
       lastFiles.add(segmentInfos.files(directory, false));
     }
+    if (infoStream.isEnabled("IFD")) {
+      long t1 = System.nanoTime();
+      infoStream.message("IFD", ((t1-t0)/1000000) + " msec to checkpoint");
+    }
   }
 
   void incRef(SegmentInfos segmentInfos, boolean isCommit) throws IOException {

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/IndexReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/IndexReader.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/IndexReader.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/IndexReader.java Tue Jan  8 03:40:16 2013
@@ -370,6 +370,7 @@ public abstract class IndexReader implem
    * No other methods should be called after this has been called.
    * @throws IOException if there is a low-level IO error
    */
+  @Override
   public final synchronized void close() throws IOException {
     if (!closed) {
       decRef();

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java Tue Jan  8 03:40:16 2013
@@ -336,7 +336,7 @@ public class IndexWriter implements Clos
     // obtained during this flush are pooled, the first time
     // this method is called:
     poolReaders = true;
-    final DirectoryReader r;
+    DirectoryReader r = null;
     doBeforeFlush();
     boolean anySegmentFlushed = false;
     /*
@@ -346,46 +346,54 @@ public class IndexWriter implements Clos
      * We release the two stage full flush after we are done opening the
      * directory reader!
      */
-    synchronized (fullFlushLock) {
-      boolean success = false;
-      try {
-        anySegmentFlushed = docWriter.flushAllThreads();
-        if (!anySegmentFlushed) {
-          // prevent double increment since docWriter#doFlush increments the flushcount
-          // if we flushed anything.
-          flushCount.incrementAndGet();
-        }
-        success = true;
-        // Prevent segmentInfos from changing while opening the
-        // reader; in theory we could do similar retry logic,
-        // just like we do when loading segments_N
-        synchronized(this) {
-          maybeApplyDeletes(applyAllDeletes);
-          r = StandardDirectoryReader.open(this, segmentInfos, applyAllDeletes);
-          if (infoStream.isEnabled("IW")) {
-            infoStream.message("IW", "return reader version=" + r.getVersion() + " reader=" + r);
+    boolean success2 = false;
+    try {
+      synchronized (fullFlushLock) {
+        boolean success = false;
+        try {
+          anySegmentFlushed = docWriter.flushAllThreads();
+          if (!anySegmentFlushed) {
+            // prevent double increment since docWriter#doFlush increments the flushcount
+            // if we flushed anything.
+            flushCount.incrementAndGet();
           }
-        }
-      } catch (OutOfMemoryError oom) {
-        handleOOM(oom, "getReader");
-        // never reached but javac disagrees:
-        return null;
-      } finally {
-        if (!success) {
-          if (infoStream.isEnabled("IW")) {
-            infoStream.message("IW", "hit exception during NRT reader");
+          success = true;
+          // Prevent segmentInfos from changing while opening the
+          // reader; in theory we could do similar retry logic,
+          // just like we do when loading segments_N
+          synchronized(this) {
+            maybeApplyDeletes(applyAllDeletes);
+            r = StandardDirectoryReader.open(this, segmentInfos, applyAllDeletes);
+            if (infoStream.isEnabled("IW")) {
+              infoStream.message("IW", "return reader version=" + r.getVersion() + " reader=" + r);
+            }
           }
+        } catch (OutOfMemoryError oom) {
+          handleOOM(oom, "getReader");
+          // never reached but javac disagrees:
+          return null;
+        } finally {
+          if (!success) {
+            if (infoStream.isEnabled("IW")) {
+              infoStream.message("IW", "hit exception during NRT reader");
+            }
+          }
+          // Done: finish the full flush!
+          docWriter.finishFullFlush(success);
+          doAfterFlush();
         }
-        // Done: finish the full flush!
-        docWriter.finishFullFlush(success);
-        doAfterFlush();
       }
-    }
-    if (anySegmentFlushed) {
-      maybeMerge(MergeTrigger.FULL_FLUSH, UNBOUNDED_MAX_MERGE_SEGMENTS);
-    }
-    if (infoStream.isEnabled("IW")) {
-      infoStream.message("IW", "getReader took " + (System.currentTimeMillis() - tStart) + " msec");
+      if (anySegmentFlushed) {
+        maybeMerge(MergeTrigger.FULL_FLUSH, UNBOUNDED_MAX_MERGE_SEGMENTS);
+      }
+      if (infoStream.isEnabled("IW")) {
+        infoStream.message("IW", "getReader took " + (System.currentTimeMillis() - tStart) + " msec");
+      }
+      success2 = true;
+    } finally {
+      if (!success2) {
+        IOUtils.closeWhileHandlingException(r);
+      }
     }
     return r;
   }
@@ -445,15 +453,23 @@ public class IndexWriter implements Clos
     /** Remove all our references to readers, and commits
      *  any pending changes. */
     synchronized void dropAll(boolean doSave) throws IOException {
+      Throwable priorE = null;
       final Iterator<Map.Entry<SegmentInfoPerCommit,ReadersAndLiveDocs>> it = readerMap.entrySet().iterator();
       while(it.hasNext()) {
         final ReadersAndLiveDocs rld = it.next().getValue();
-        if (doSave && rld.writeLiveDocs(directory)) {
-          // Make sure we only write del docs for a live segment:
-          assert infoIsLive(rld.info);
-          // Must checkpoint w/ deleter, because we just
-          // created created new _X_N.del file.
-          deleter.checkpoint(segmentInfos, false);
+
+        try {
+          if (doSave && rld.writeLiveDocs(directory)) {
+            // Make sure we only write del docs for a live segment:
+            assert infoIsLive(rld.info);
+            // Must checkpoint w/ deleter, because we just
+            // created created new _X_N.del file.
+            deleter.checkpoint(segmentInfos, false);
+          }
+        } catch (Throwable t) {
+          if (priorE != null) {
+            priorE = t;
+          }
         }
 
         // Important to remove as-we-go, not with .clear()
@@ -466,9 +482,18 @@ public class IndexWriter implements Clos
         // actually close the SRs; this happens when a
         // near real-time reader is kept open after the
         // IndexWriter instance is closed:
-        rld.dropReaders();
+        try {
+          rld.dropReaders();
+        } catch (Throwable t) {
+          if (priorE != null) {
+            priorE = t;
+          }
+        }
       }
       assert readerMap.size() == 0;
+      if (priorE != null) {
+        throw new RuntimeException(priorE);
+      }
     }
 
     /**
@@ -812,6 +837,7 @@ public class IndexWriter implements Clos
    *
    * @throws IOException if there is a low-level IO error
    */
+  @Override
   public void close() throws IOException {
     close(true);
   }
@@ -1905,6 +1931,7 @@ public class IndexWriter implements Clos
    * call to {@link #prepareCommit}.
    * @throws IOException if there is a low-level IO error
    */
+  @Override
   public void rollback() throws IOException {
     ensureOpen();
 
@@ -2570,6 +2597,7 @@ public class IndexWriter implements Clos
    *  you should immediately close the writer.  See <a
    *  href="#OOME">above</a> for details.</p>
    */
+  @Override
   public final void prepareCommit() throws IOException {
     ensureOpen();
     prepareCommitInternal();
@@ -2727,6 +2755,7 @@ public class IndexWriter implements Clos
    *
    * @see #prepareCommit
    */
+  @Override
   public final void commit() throws IOException {
     ensureOpen();
     commitInternal();
@@ -3046,13 +3075,6 @@ public class IndexWriter implements Clos
       }
     }
 
-    // If new deletes were applied while we were merging
-    // (which happens if eg commit() or getReader() is
-    // called during our merge), then it better be the case
-    // that the delGen has increased for all our merged
-    // segments:
-    assert mergedDeletes == null || minGen > merge.info.getBufferedDeletesGen();
-
     merge.info.setBufferedDeletesGen(minGen);
 
     return mergedDeletes;

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/KeepOnlyLastCommitDeletionPolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/KeepOnlyLastCommitDeletionPolicy.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/KeepOnlyLastCommitDeletionPolicy.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/KeepOnlyLastCommitDeletionPolicy.java Tue Jan  8 03:40:16 2013
@@ -35,6 +35,7 @@ public final class KeepOnlyLastCommitDel
   /**
    * Deletes all commits except the most recent one.
    */
+  @Override
   public void onInit(List<? extends IndexCommit> commits) {
     // Note that commits.size() should normally be 1:
     onCommit(commits);
@@ -43,6 +44,7 @@ public final class KeepOnlyLastCommitDel
   /**
    * Deletes all commits except the most recent one.
    */
+  @Override
   public void onCommit(List<? extends IndexCommit> commits) {
     // Note that commits.size() should normally be 2 (if not
     // called by onInit above):

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/LogMergePolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/LogMergePolicy.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/LogMergePolicy.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/LogMergePolicy.java Tue Jan  8 03:40:16 2013
@@ -543,6 +543,7 @@ public abstract class LogMergePolicy ext
     }
 
     // Sorts largest to smallest
+    @Override
     public int compareTo(SegmentInfoAndLevel other) {
       if (level < other.level) {
         return 1;

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MergePolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MergePolicy.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MergePolicy.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MergePolicy.java Tue Jan  8 03:40:16 2013
@@ -379,6 +379,7 @@ public abstract class MergePolicy implem
   /**
    * Release all resources for the policy.
    */
+  @Override
   public abstract void close();
   
   

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MergeScheduler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MergeScheduler.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MergeScheduler.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MergeScheduler.java Tue Jan  8 03:40:16 2013
@@ -38,5 +38,6 @@ public abstract class MergeScheduler imp
   public abstract void merge(IndexWriter writer) throws IOException;
 
   /** Close this MergeScheduler. */
+  @Override
   public abstract void close() throws IOException;
 }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiBits.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiBits.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiBits.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiBits.java Tue Jan  8 03:40:16 2013
@@ -48,6 +48,7 @@ final class MultiBits implements Bits {
     return true;
   }
 
+  @Override
   public boolean get(int doc) {
     final int reader = ReaderUtil.subIndex(doc, starts);
     assert reader != -1;
@@ -109,6 +110,7 @@ final class MultiBits implements Bits {
     return subResult;
   }
 
+  @Override
   public int length() {
     return starts[starts.length-1];
   }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiDocValues.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiDocValues.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiDocValues.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiDocValues.java Tue Jan  8 03:40:16 2013
@@ -49,10 +49,12 @@ class MultiDocValues extends DocValues {
   
   private static DocValuesPuller DEFAULT_PULLER = new DocValuesPuller();
   private static final DocValuesPuller NORMS_PULLER = new DocValuesPuller() {
+    @Override
     public DocValues pull(AtomicReader reader, String field) throws IOException {
       return reader.normValues(field);
     }
     
+    @Override
     public boolean stopLoadingOnNull(AtomicReader reader, String field) {
       // for norms we drop all norms if one leaf reader has no norms and the field is present
       FieldInfos fieldInfos = reader.getFieldInfos();
@@ -265,6 +267,7 @@ class MultiDocValues extends DocValues {
       this.direct = direct;
     }
 
+    @Override
     public long getInt(int docID) {
       final int doc = ensureSource(docID);
       return current.getInt(doc);
@@ -295,11 +298,13 @@ class MultiDocValues extends DocValues {
       }
     }
 
+    @Override
     public double getFloat(int docID) {
       final int doc = ensureSource(docID);
       return current.getFloat(doc);
     }
 
+    @Override
     public BytesRef getBytes(int docID, BytesRef bytesRef) {
       final int doc = ensureSource(docID);
       return current.getBytes(doc, bytesRef);
@@ -359,6 +364,7 @@ class MultiDocValues extends DocValues {
       return docBases;
     }
     
+    @Override
     public boolean hasArray() {
       boolean oneRealSource = false;
       for (DocValuesSlice slice : slices) {

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiTermsEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiTermsEnum.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiTermsEnum.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/MultiTermsEnum.java Tue Jan  8 03:40:16 2013
@@ -479,7 +479,7 @@ public final class MultiTermsEnum extend
         subDocsAndPositions[upto].slice = entry.subSlice;
         upto++;
       } else {
-        if (entry.terms.docs(b, null, 0) != null) {
+        if (entry.terms.docs(b, null, DocsEnum.FLAG_NONE) != null) {
           // At least one of our subs does not store
           // offsets or positions -- we can't correctly
           // produce a MultiDocsAndPositions enum

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/NoDeletionPolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/NoDeletionPolicy.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/NoDeletionPolicy.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/NoDeletionPolicy.java Tue Jan  8 03:40:16 2013
@@ -33,8 +33,10 @@ public final class NoDeletionPolicy impl
     // keep private to avoid instantiation
   }
   
+  @Override
   public void onCommit(List<? extends IndexCommit> commits) {}
 
+  @Override
   public void onInit(List<? extends IndexCommit> commits) {}
   
 }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/PrefixCodedTerms.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/PrefixCodedTerms.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/PrefixCodedTerms.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/PrefixCodedTerms.java Tue Jan  8 03:40:16 2013
@@ -43,6 +43,7 @@ class PrefixCodedTerms implements Iterab
   }
   
   /** @return iterator over the bytes */
+  @Override
   public Iterator<Term> iterator() {
     return new PrefixCodedTermsIterator();
   }
@@ -61,10 +62,12 @@ class PrefixCodedTerms implements Iterab
       }
     }
 
+    @Override
     public boolean hasNext() {
       return input.getFilePointer() < input.length();
     }
     
+    @Override
     public Term next() {
       assert hasNext();
       try {
@@ -85,6 +88,7 @@ class PrefixCodedTerms implements Iterab
       }
     }
     
+    @Override
     public void remove() {
       throw new UnsupportedOperationException();
     }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/ReadersAndLiveDocs.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/ReadersAndLiveDocs.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/ReadersAndLiveDocs.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/ReadersAndLiveDocs.java Tue Jan  8 03:40:16 2013
@@ -23,6 +23,7 @@ import java.util.concurrent.atomic.Atomi
 import org.apache.lucene.codecs.LiveDocsFormat;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.store.IOContext;
+import org.apache.lucene.store.TrackingDirectoryWrapper;
 import org.apache.lucene.util.Bits;
 import org.apache.lucene.util.MutableBits;
 
@@ -182,16 +183,28 @@ class ReadersAndLiveDocs {
 
   // NOTE: removes callers ref
   public synchronized void dropReaders() throws IOException {
-    if (reader != null) {
-      //System.out.println("  pool.drop info=" + info + " rc=" + reader.getRefCount());
-      reader.decRef();
-      reader = null;
-    }
-    if (mergeReader != null) {
-      //System.out.println("  pool.drop info=" + info + " merge rc=" + mergeReader.getRefCount());
-      mergeReader.decRef();
-      mergeReader = null;
+    // TODO: can we somehow use IOUtils here...?  problem is
+    // we are calling .decRef not .close)...
+    try {
+      if (reader != null) {
+        //System.out.println("  pool.drop info=" + info + " rc=" + reader.getRefCount());
+        try {
+          reader.decRef();
+        } finally {
+          reader = null;
+        }
+      }
+    } finally {
+      if (mergeReader != null) {
+        //System.out.println("  pool.drop info=" + info + " merge rc=" + mergeReader.getRefCount());
+        try {
+          mergeReader.decRef();
+        } finally {
+          mergeReader = null;
+        }
+      }
     }
+
     decRef();
   }
 
@@ -272,13 +285,37 @@ class ReadersAndLiveDocs {
       // We have new deletes
       assert liveDocs.length() == info.info.getDocCount();
 
+      // Do this so we can delete any created files on
+      // exception; this saves all codecs from having to do
+      // it:
+      TrackingDirectoryWrapper trackingDir = new TrackingDirectoryWrapper(dir);
+
       // We can write directly to the actual name (vs to a
       // .tmp & renaming it) because the file is not live
       // until segments file is written:
-      info.info.getCodec().liveDocsFormat().writeLiveDocs((MutableBits)liveDocs, dir, info, pendingDeleteCount, IOContext.DEFAULT);
+      boolean success = false;
+      try {
+        info.info.getCodec().liveDocsFormat().writeLiveDocs((MutableBits)liveDocs, trackingDir, info, pendingDeleteCount, IOContext.DEFAULT);
+        success = true;
+      } finally {
+        if (!success) {
+          // Advance only the nextWriteDelGen so that a 2nd
+          // attempt to write will write to a new file
+          info.advanceNextWriteDelGen();
+
+          // Delete any partially created file(s):
+          for(String fileName : trackingDir.getCreatedFiles()) {
+            try {
+              dir.deleteFile(fileName);
+            } catch (Throwable t) {
+              // Ignore so we throw only the first exc
+            }
+          }
+        }
+      }
 
       // If we hit an exc in the line above (eg disk full)
-      // then info remains pointing to the previous
+      // then info's delGen remains pointing to the previous
       // (successfully written) del docs:
       info.advanceDelGen();
       info.setDelCount(info.getDelCount() + pendingDeleteCount);

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SegmentInfoPerCommit.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SegmentInfoPerCommit.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SegmentInfoPerCommit.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SegmentInfoPerCommit.java Tue Jan  8 03:40:16 2013
@@ -40,6 +40,10 @@ public class SegmentInfoPerCommit {
   // are no deletes yet):
   private long delGen;
 
+  // Normally 1+delGen, unless an exception was hit on last
+  // attempt to write:
+  private long nextWriteDelGen;
+
   private volatile long sizeInBytes = -1;
 
   /** Sole constructor.
@@ -52,17 +56,27 @@ public class SegmentInfoPerCommit {
     this.info = info;
     this.delCount = delCount;
     this.delGen = delGen;
-  }
-
-  void advanceDelGen() {
     if (delGen == -1) {
-      delGen = 1;
+      nextWriteDelGen = 1;
     } else {
-      delGen++;
+      nextWriteDelGen = delGen+1;
     }
+  }
+
+  /** Called when we succeed in writing deletes */
+  void advanceDelGen() {
+    delGen = nextWriteDelGen;
+    nextWriteDelGen = delGen+1;
     sizeInBytes = -1;
   }
 
+  /** Called if there was an exception while writing
+   *  deletes, so that we don't try to write to the same
+   *  file more than once. */
+  void advanceNextWriteDelGen() {
+    nextWriteDelGen++;
+  }
+
   /** Returns total size in bytes of all files for this
    *  segment. */
   public long sizeInBytes() throws IOException {
@@ -126,11 +140,7 @@ public class SegmentInfoPerCommit {
    * of the live docs file.
    */
   public long getNextDelGen() {
-    if (delGen == -1) {
-      return 1;
-    } else {
-      return delGen + 1;
-    }
+    return nextWriteDelGen;
   }
 
   /**
@@ -169,6 +179,12 @@ public class SegmentInfoPerCommit {
 
   @Override
   public SegmentInfoPerCommit clone() {
-    return new SegmentInfoPerCommit(info, delCount, delGen);
+    SegmentInfoPerCommit other = new SegmentInfoPerCommit(info, delCount, delGen);
+    // Not clear that we need to carry over nextWriteDelGen
+    // (i.e. do we ever clone after a failed write and
+    // before the next successful write?), but just do it to
+    // be safe:
+    other.nextWriteDelGen = nextWriteDelGen;
+    return other;
   }
 }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java Tue Jan  8 03:40:16 2013
@@ -868,9 +868,6 @@ public final class SegmentInfos implemen
         // Ignore; this file is only used in a retry
         // fallback on init.
       }
-      if (t instanceof ThreadInterruptedException) {
-        throw (ThreadInterruptedException) t;
-      }
     }
   }
 
@@ -991,6 +988,7 @@ public final class SegmentInfos implemen
   
   /** Returns an <b>unmodifiable</b> {@link Iterator} of contained segments in order. */
   // @Override (comment out until Java 6)
+  @Override
   public Iterator<SegmentInfoPerCommit> iterator() {
     return asList().iterator();
   }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java Tue Jan  8 03:40:16 2013
@@ -99,17 +99,47 @@ final class SegmentMerger {
     mergeState.segmentInfo.setDocCount(setDocMaps());
     mergeDocValuesAndNormsFieldInfos();
     setMatchingSegmentReaders();
+    long t0 = 0;
+    if (mergeState.infoStream.isEnabled("SM")) {
+      t0 = System.nanoTime();
+    }
     int numMerged = mergeFields();
+    if (mergeState.infoStream.isEnabled("SM")) {
+      long t1 = System.nanoTime();
+      mergeState.infoStream.message("SM", ((t1-t0)/1000000) + " msec to merge stored fields [" + numMerged + " docs]");
+    }
     assert numMerged == mergeState.segmentInfo.getDocCount();
 
     final SegmentWriteState segmentWriteState = new SegmentWriteState(mergeState.infoStream, directory, mergeState.segmentInfo,
                                                                       mergeState.fieldInfos, termIndexInterval, null, context);
+    if (mergeState.infoStream.isEnabled("SM")) {
+      t0 = System.nanoTime();
+    }
     mergeTerms(segmentWriteState);
+    if (mergeState.infoStream.isEnabled("SM")) {
+      long t1 = System.nanoTime();
+      mergeState.infoStream.message("SM", ((t1-t0)/1000000) + " msec to merge postings [" + numMerged + " docs]");
+    }
+
+    if (mergeState.infoStream.isEnabled("SM")) {
+      t0 = System.nanoTime();
+    }
     mergePerDoc(segmentWriteState);
+    if (mergeState.infoStream.isEnabled("SM")) {
+      long t1 = System.nanoTime();
+      mergeState.infoStream.message("SM", ((t1-t0)/1000000) + " msec to merge doc values [" + numMerged + " docs]");
+    }
     
     if (mergeState.fieldInfos.hasNorms()) {
+      if (mergeState.infoStream.isEnabled("SM")) {
+        t0 = System.nanoTime();
+      }
       mergeNorms(segmentWriteState);
       mergeSimpleNorms(segmentWriteState);
+      if (mergeState.infoStream.isEnabled("SM")) {
+        long t1 = System.nanoTime();
+        mergeState.infoStream.message("SM", ((t1-t0)/1000000) + " msec to merge norms [" + numMerged + " docs]");
+      }
     }
 
     // Merge simple doc values:
@@ -119,7 +149,14 @@ final class SegmentMerger {
     }
 
     if (mergeState.fieldInfos.hasVectors()) {
+      if (mergeState.infoStream.isEnabled("SM")) {
+        t0 = System.nanoTime();
+      }
       numMerged = mergeVectors();
+      if (mergeState.infoStream.isEnabled("SM")) {
+        long t1 = System.nanoTime();
+        mergeState.infoStream.message("SM", ((t1-t0)/1000000) + " msec to merge vectors [" + numMerged + " docs]");
+      }
       assert numMerged == mergeState.segmentInfo.getDocCount();
     }
     

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SnapshotDeletionPolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SnapshotDeletionPolicy.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SnapshotDeletionPolicy.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/SnapshotDeletionPolicy.java Tue Jan  8 03:40:16 2013
@@ -261,12 +261,14 @@ public class SnapshotDeletionPolicy impl
     return idToSnapshot.containsKey(id);
   }
 
+  @Override
   public synchronized void onCommit(List<? extends IndexCommit> commits)
       throws IOException {
     primary.onCommit(wrapCommits(commits));
     lastCommit = commits.get(commits.size() - 1);
   }
 
+  @Override
   public synchronized void onInit(List<? extends IndexCommit> commits)
       throws IOException {
     primary.onInit(wrapCommits(commits));

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/Term.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/Term.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/Term.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/Term.java Tue Jan  8 03:40:16 2013
@@ -110,6 +110,7 @@ public final class Term implements Compa
     argument, and a positive integer if this term belongs after the argument.
 
     The ordering of terms is first by field, then by text.*/
+  @Override
   public final int compareTo(Term other) {
     if (field.equals(other.field)) {
       return bytes.compareTo(other.bytes);

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/TieredMergePolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/TieredMergePolicy.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/TieredMergePolicy.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/index/TieredMergePolicy.java Tue Jan  8 03:40:16 2013
@@ -269,6 +269,7 @@ public class TieredMergePolicy extends M
   }
 
   private class SegmentByteSizeDescending implements Comparator<SegmentInfoPerCommit> {
+    @Override
     public int compare(SegmentInfoPerCommit o1, SegmentInfoPerCommit o2) {
       try {
         final long sz1 = size(o1);

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/BooleanQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/BooleanQuery.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/BooleanQuery.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/BooleanQuery.java Tue Jan  8 03:40:16 2013
@@ -158,6 +158,7 @@ public class BooleanQuery extends Query 
    * make it possible to do:
    * <pre class="prettyprint">for (BooleanClause clause : booleanQuery) {}</pre>
    */
+  @Override
   public final Iterator<BooleanClause> iterator() { return clauses().iterator(); }
 
   /**

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/BoostAttributeImpl.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/BoostAttributeImpl.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/BoostAttributeImpl.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/BoostAttributeImpl.java Tue Jan  8 03:40:16 2013
@@ -25,10 +25,12 @@ import org.apache.lucene.util.AttributeI
 public final class BoostAttributeImpl extends AttributeImpl implements BoostAttribute {
   private float boost = 1.0f;
 
+  @Override
   public void setBoost(float boost) {
     this.boost = boost;
   }
   
+  @Override
   public float getBoost() {
     return boost;
   }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/ConjunctionScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/ConjunctionScorer.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/ConjunctionScorer.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/ConjunctionScorer.java Tue Jan  8 03:40:16 2013
@@ -54,6 +54,7 @@ class ConjunctionScorer extends Scorer {
     // Also we use mergeSort here to be stable (so order of Scoreres that
     // match on first document keeps preserved):
     ArrayUtil.mergeSort(scorers, new Comparator<Scorer>() { // sort the array
+      @Override
       public int compare(Scorer o1, Scorer o2) {
         return o1.docID() - o2.docID();
       }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/ConjunctionTermScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/ConjunctionTermScorer.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/ConjunctionTermScorer.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/ConjunctionTermScorer.java Tue Jan  8 03:40:16 2013
@@ -40,6 +40,7 @@ class ConjunctionTermScorer extends Scor
     // Sort the array the first time to allow the least frequent DocsEnum to
     // lead the matching.
     ArrayUtil.mergeSort(docsAndFreqs, new Comparator<DocsAndFreqs>() {
+      @Override
       public int compare(DocsAndFreqs o1, DocsAndFreqs o2) {
         return o1.docFreq - o2.docFreq;
       }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/DisjunctionMaxQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/DisjunctionMaxQuery.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/DisjunctionMaxQuery.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/DisjunctionMaxQuery.java Tue Jan  8 03:40:16 2013
@@ -85,6 +85,7 @@ public class DisjunctionMaxQuery extends
   }
 
   /** @return An {@code Iterator<Query>} over the disjuncts */
+  @Override
   public Iterator<Query> iterator() {
     return disjuncts.iterator();
   }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FieldCache.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FieldCache.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FieldCache.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FieldCache.java Tue Jan  8 03:40:16 2013
@@ -147,6 +147,7 @@ public interface FieldCache {
 
   /** The default parser for byte values, which are encoded by {@link Byte#toString(byte)} */
   public static final ByteParser DEFAULT_BYTE_PARSER = new ByteParser() {
+    @Override
     public byte parseByte(BytesRef term) {
       // TODO: would be far better to directly parse from
       // UTF8 bytes... but really users should use
@@ -162,6 +163,7 @@ public interface FieldCache {
 
   /** The default parser for short values, which are encoded by {@link Short#toString(short)} */
   public static final ShortParser DEFAULT_SHORT_PARSER = new ShortParser() {
+    @Override
     public short parseShort(BytesRef term) {
       // TODO: would be far better to directly parse from
       // UTF8 bytes... but really users should use
@@ -177,6 +179,7 @@ public interface FieldCache {
 
   /** The default parser for int values, which are encoded by {@link Integer#toString(int)} */
   public static final IntParser DEFAULT_INT_PARSER = new IntParser() {
+    @Override
     public int parseInt(BytesRef term) {
       // TODO: would be far better to directly parse from
       // UTF8 bytes... but really users should use
@@ -192,6 +195,7 @@ public interface FieldCache {
 
   /** The default parser for float values, which are encoded by {@link Float#toString(float)} */
   public static final FloatParser DEFAULT_FLOAT_PARSER = new FloatParser() {
+    @Override
     public float parseFloat(BytesRef term) {
       // TODO: would be far better to directly parse from
       // UTF8 bytes... but really users should use
@@ -207,6 +211,7 @@ public interface FieldCache {
 
   /** The default parser for long values, which are encoded by {@link Long#toString(long)} */
   public static final LongParser DEFAULT_LONG_PARSER = new LongParser() {
+    @Override
     public long parseLong(BytesRef term) {
       // TODO: would be far better to directly parse from
       // UTF8 bytes... but really users should use
@@ -222,6 +227,7 @@ public interface FieldCache {
 
   /** The default parser for double values, which are encoded by {@link Double#toString(double)} */
   public static final DoubleParser DEFAULT_DOUBLE_PARSER = new DoubleParser() {
+    @Override
     public double parseDouble(BytesRef term) {
       // TODO: would be far better to directly parse from
       // UTF8 bytes... but really users should use
@@ -240,6 +246,7 @@ public interface FieldCache {
    * via {@link IntField}/{@link NumericTokenStream}.
    */
   public static final IntParser NUMERIC_UTILS_INT_PARSER=new IntParser(){
+    @Override
     public int parseInt(BytesRef term) {
       if (NumericUtils.getPrefixCodedIntShift(term) > 0)
         throw new StopFillCacheException();
@@ -256,6 +263,7 @@ public interface FieldCache {
    * via {@link FloatField}/{@link NumericTokenStream}.
    */
   public static final FloatParser NUMERIC_UTILS_FLOAT_PARSER=new FloatParser(){
+    @Override
     public float parseFloat(BytesRef term) {
       if (NumericUtils.getPrefixCodedIntShift(term) > 0)
         throw new StopFillCacheException();
@@ -272,6 +280,7 @@ public interface FieldCache {
    * via {@link LongField}/{@link NumericTokenStream}.
    */
   public static final LongParser NUMERIC_UTILS_LONG_PARSER = new LongParser(){
+    @Override
     public long parseLong(BytesRef term) {
       if (NumericUtils.getPrefixCodedLongShift(term) > 0)
         throw new StopFillCacheException();
@@ -288,6 +297,7 @@ public interface FieldCache {
    * via {@link DoubleField}/{@link NumericTokenStream}.
    */
   public static final DoubleParser NUMERIC_UTILS_DOUBLE_PARSER = new DoubleParser(){
+    @Override
     public double parseDouble(BytesRef term) {
       if (NumericUtils.getPrefixCodedLongShift(term) > 0)
         throw new StopFillCacheException();

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FieldCacheDocIdSet.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FieldCacheDocIdSet.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FieldCacheDocIdSet.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FieldCacheDocIdSet.java Tue Jan  8 03:40:16 2013
@@ -57,18 +57,22 @@ public abstract class FieldCacheDocIdSet
   @Override
   public final Bits bits() {
     return (acceptDocs == null) ? new Bits() {
+      @Override
       public boolean get(int docid) {
         return matchDoc(docid);
       }
 
+      @Override
       public int length() {
         return maxDoc;
       }
     } : new Bits() {
+      @Override
       public boolean get(int docid) {
         return matchDoc(docid) && acceptDocs.get(docid);
       }
 
+      @Override
       public int length() {
         return maxDoc;
       }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FieldCacheImpl.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FieldCacheImpl.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FieldCacheImpl.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FieldCacheImpl.java Tue Jan  8 03:40:16 2013
@@ -318,7 +318,7 @@ class FieldCacheImpl implements FieldCac
           } catch (StopFillCacheException stop) {
             break;
           }
-          docs = termsEnum.docs(null, docs, 0);
+          docs = termsEnum.docs(null, docs, DocsEnum.FLAG_NONE);
           while (true) {
             final int docID = docs.nextDoc();
             if (docID == DocIdSetIterator.NO_MORE_DOCS) {
@@ -647,7 +647,7 @@ class FieldCacheImpl implements FieldCac
             res = new FixedBitSet(maxDoc);
           }
 
-          docs = termsEnum.docs(null, docs, 0);
+          docs = termsEnum.docs(null, docs, DocsEnum.FLAG_NONE);
           // TODO: use bulk API
           while (true) {
             final int docID = docs.nextDoc();
@@ -1215,7 +1215,7 @@ class FieldCacheImpl implements FieldCac
               termOrdToBytesOffset = termOrdToBytesOffset.resize(ArrayUtil.oversize(1+termOrd, 1));
             }
             termOrdToBytesOffset.set(termOrd, bytes.copyUsingLengthPrefix(term));
-            docs = termsEnum.docs(null, docs, 0);
+            docs = termsEnum.docs(null, docs, DocsEnum.FLAG_NONE);
             while (true) {
               final int docID = docs.nextDoc();
               if (docID == DocIdSetIterator.NO_MORE_DOCS) {
@@ -1343,7 +1343,7 @@ class FieldCacheImpl implements FieldCac
               break;
             }
             final long pointer = bytes.copyUsingLengthPrefix(term);
-            docs = termsEnum.docs(null, docs, 0);
+            docs = termsEnum.docs(null, docs, DocsEnum.FLAG_NONE);
             while (true) {
               final int docID = docs.nextDoc();
               if (docID == DocIdSetIterator.NO_MORE_DOCS) {

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FilteredDocIdSet.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FilteredDocIdSet.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FilteredDocIdSet.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FilteredDocIdSet.java Tue Jan  8 03:40:16 2013
@@ -60,10 +60,12 @@ public abstract class FilteredDocIdSet e
   public Bits bits() throws IOException {
     final Bits bits = _innerSet.bits();
     return (bits == null) ? null : new Bits() {
+      @Override
       public boolean get(int docid) {
         return bits.get(docid) && FilteredDocIdSet.this.match(docid);
       }
 
+      @Override
       public int length() {
         return bits.length();
       }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FuzzyTermsEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FuzzyTermsEnum.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FuzzyTermsEnum.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/FuzzyTermsEnum.java Tue Jan  8 03:40:16 2013
@@ -412,6 +412,7 @@ public class FuzzyTermsEnum extends Term
   public static final class LevenshteinAutomataAttributeImpl extends AttributeImpl implements LevenshteinAutomataAttribute {
     private final List<CompiledAutomaton> automata = new ArrayList<CompiledAutomaton>();
       
+    @Override
     public List<CompiledAutomaton> automata() {
       return automata;
     }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java Tue Jan  8 03:40:16 2013
@@ -181,18 +181,27 @@ public class IndexSearcher {
     return reader;
   }
 
-  /** Sugar for <code>.getIndexReader().document(docID)</code> */
+  /** 
+   * Sugar for <code>.getIndexReader().document(docID)</code> 
+   * @see IndexReader#document(int) 
+   */
   public StoredDocument doc(int docID) throws IOException {
     return reader.document(docID);
   }
 
-  /** Sugar for <code>.getIndexReader().document(docID, fieldVisitor)</code> */
+  /** 
+   * Sugar for <code>.getIndexReader().document(docID, fieldVisitor)</code>
+   * @see IndexReader#document(int, StoredFieldVisitor) 
+   */
   public void doc(int docID, StoredFieldVisitor fieldVisitor) throws IOException {
     reader.document(docID, fieldVisitor);
   }
 
-  /** Sugar for <code>.getIndexReader().document(docID, fieldsToLoad)</code> */
-  public final StoredDocument document(int docID, Set<String> fieldsToLoad) throws IOException {
+  /** 
+   * Sugar for <code>.getIndexReader().document(docID, fieldsToLoad)</code>
+   * @see IndexReader#document(int, Set) 
+   */
+  public StoredDocument doc(int docID, Set<String> fieldsToLoad) throws IOException {
     return reader.document(docID, fieldsToLoad);
   }
 
@@ -688,6 +697,7 @@ public class IndexSearcher {
       this.slice = slice;
     }
 
+    @Override
     public TopDocs call() throws IOException {
       final TopDocs docs = searcher.search(Arrays.asList(slice.leaves), weight, after, nDocs);
       final ScoreDoc[] scoreDocs = docs.scoreDocs;
@@ -775,6 +785,7 @@ public class IndexSearcher {
 
     private final FakeScorer fakeScorer = new FakeScorer();
 
+    @Override
     public TopFieldDocs call() throws IOException {
       assert slice.leaves.length == 1;
       final TopFieldDocs docs = searcher.search(Arrays.asList(slice.leaves),
@@ -817,6 +828,7 @@ public class IndexSearcher {
       this.service = new ExecutorCompletionService<T>(executor);
     }
 
+    @Override
     public boolean hasNext() {
       return numTasks > 0;
     }
@@ -826,6 +838,7 @@ public class IndexSearcher {
       ++numTasks;
     }
 
+    @Override
     public T next() {
       if(!this.hasNext()) 
         throw new NoSuchElementException("next() is called but hasNext() returned false");
@@ -840,10 +853,12 @@ public class IndexSearcher {
       }
     }
 
+    @Override
     public void remove() {
       throw new UnsupportedOperationException();
     }
 
+    @Override
     public Iterator<T> iterator() {
       // use the shortcut here - this is only used in a private context
       return this;

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/MaxNonCompetitiveBoostAttributeImpl.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/MaxNonCompetitiveBoostAttributeImpl.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/MaxNonCompetitiveBoostAttributeImpl.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/MaxNonCompetitiveBoostAttributeImpl.java Tue Jan  8 03:40:16 2013
@@ -27,18 +27,22 @@ public final class MaxNonCompetitiveBoos
   private float maxNonCompetitiveBoost = Float.NEGATIVE_INFINITY;
   private BytesRef competitiveTerm = null;
 
+  @Override
   public void setMaxNonCompetitiveBoost(final float maxNonCompetitiveBoost) {
     this.maxNonCompetitiveBoost = maxNonCompetitiveBoost;
   }
   
+  @Override
   public float getMaxNonCompetitiveBoost() {
     return maxNonCompetitiveBoost;
   }
 
+  @Override
   public void setCompetitiveTerm(final BytesRef competitiveTerm) {
     this.competitiveTerm = competitiveTerm;
   }
   
+  @Override
   public BytesRef getCompetitiveTerm() {
     return competitiveTerm;
   }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/MultiPhraseQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/MultiPhraseQuery.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/MultiPhraseQuery.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/MultiPhraseQuery.java Tue Jan  8 03:40:16 2013
@@ -23,6 +23,7 @@ import java.util.*;
 import org.apache.lucene.index.AtomicReaderContext;
 import org.apache.lucene.index.DocsAndPositionsEnum;
 import org.apache.lucene.index.AtomicReader;
+import org.apache.lucene.index.DocsEnum;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.IndexReaderContext;
 import org.apache.lucene.index.Term;
@@ -224,11 +225,11 @@ public class MultiPhraseQuery extends Qu
             return null;
           }
           termsEnum.seekExact(term.bytes(), termState);
-          postingsEnum = termsEnum.docsAndPositions(liveDocs, null, 0);
+          postingsEnum = termsEnum.docsAndPositions(liveDocs, null, DocsEnum.FLAG_NONE);
 
           if (postingsEnum == null) {
             // term does exist, but has no positions
-            assert termsEnum.docs(liveDocs, null, 0) != null: "termstate found but no term exists in reader";
+            assert termsEnum.docs(liveDocs, null, DocsEnum.FLAG_NONE) != null: "termstate found but no term exists in reader";
             throw new IllegalStateException("field \"" + term.field() + "\" was indexed without position data; cannot run PhraseQuery (term=" + term.text() + ")");
           }
 
@@ -482,7 +483,7 @@ class UnionDocsAndPositionsEnum extends 
         continue;
       }
       termsEnum.seekExact(term.bytes(), termState);
-      DocsAndPositionsEnum postings = termsEnum.docsAndPositions(liveDocs, null, 0);
+      DocsAndPositionsEnum postings = termsEnum.docsAndPositions(liveDocs, null, DocsEnum.FLAG_NONE);
       if (postings == null) {
         // term does exist, but has no positions
         throw new IllegalStateException("field \"" + term.field() + "\" was indexed without position data; cannot run PhraseQuery (term=" + term.text() + ")");

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java Tue Jan  8 03:40:16 2013
@@ -106,7 +106,7 @@ public class MultiTermQueryWrapperFilter
       do {
         // System.out.println("  iter termCount=" + termCount + " term=" +
         // enumerator.term().toBytesString());
-        docsEnum = termsEnum.docs(acceptDocs, docsEnum, 0);
+        docsEnum = termsEnum.docs(acceptDocs, docsEnum, DocsEnum.FLAG_NONE);
         int docid;
         while ((docid = docsEnum.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) {
           bitSet.set(docid);

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/NRTManagerReopenThread.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/NRTManagerReopenThread.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/NRTManagerReopenThread.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/NRTManagerReopenThread.java Tue Jan  8 03:40:16 2013
@@ -113,6 +113,7 @@ public class NRTManagerReopenThread exte
     manager.addWaitingListener(this);
   }
 
+  @Override
   public synchronized void close() {
     //System.out.println("NRT: set finish");
     manager.removeWaitingListener(this);
@@ -125,6 +126,7 @@ public class NRTManagerReopenThread exte
     }
   }
 
+  @Override
   public synchronized void waiting(long targetGen) {
     waitingGen = Math.max(waitingGen, targetGen);
     notify();

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/PhraseQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/PhraseQuery.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/PhraseQuery.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/PhraseQuery.java Tue Jan  8 03:40:16 2013
@@ -24,6 +24,7 @@ import java.util.Set;
 
 import org.apache.lucene.index.AtomicReaderContext;
 import org.apache.lucene.index.DocsAndPositionsEnum;
+import org.apache.lucene.index.DocsEnum;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.AtomicReader;
 import org.apache.lucene.index.IndexReaderContext;
@@ -158,6 +159,7 @@ public class PhraseQuery extends Query {
       }
     }
 
+    @Override
     public int compareTo(PostingsAndFreq other) {
       if (docFreq != other.docFreq) {
         return docFreq - other.docFreq;
@@ -262,7 +264,7 @@ public class PhraseQuery extends Query {
           return null;
         }
         te.seekExact(t.bytes(), state);
-        DocsAndPositionsEnum postingsEnum = te.docsAndPositions(liveDocs, null, 0);
+        DocsAndPositionsEnum postingsEnum = te.docsAndPositions(liveDocs, null, DocsEnum.FLAG_NONE);
 
         // PhraseQuery on a field that did not index
         // positions.

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/ReferenceManager.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/ReferenceManager.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/ReferenceManager.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/ReferenceManager.java Tue Jan  8 03:40:16 2013
@@ -121,6 +121,7 @@ public abstract class ReferenceManager<G
     * @throws IOException
     *           if the underlying reader of the current reference could not be closed
    */
+  @Override
   public final synchronized void close() throws IOException {
     if (current != null) {
       // make sure we can call this more than once

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/RegexpQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/RegexpQuery.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/RegexpQuery.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/RegexpQuery.java Tue Jan  8 03:40:16 2013
@@ -51,6 +51,7 @@ public class RegexpQuery extends Automat
    * A provider that provides no named automata
    */
   private static AutomatonProvider defaultProvider = new AutomatonProvider() {
+    @Override
     public Automaton getAutomaton(String name) {
       return null;
     }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/SloppyPhraseScorer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/SloppyPhraseScorer.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/SloppyPhraseScorer.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/SloppyPhraseScorer.java Tue Jan  8 03:40:16 2013
@@ -353,6 +353,7 @@ final class SloppyPhraseScorer extends S
   private void sortRptGroups(ArrayList<ArrayList<PhrasePositions>> rgs) {
     rptGroups = new PhrasePositions[rgs.size()][];
     Comparator<PhrasePositions> cmprtr = new Comparator<PhrasePositions>() {
+      @Override
       public int compare(PhrasePositions pp1, PhrasePositions pp2) {
         return pp1.offset - pp2.offset;
       }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/TopDocs.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/TopDocs.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/TopDocs.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/TopDocs.java Tue Jan  8 03:40:16 2013
@@ -91,6 +91,7 @@ public class TopDocs {
     }
 
     // Returns true if first is < second
+    @Override
     public boolean lessThan(ShardRef first, ShardRef second) {
       assert first != second;
       final float firstScore = shardHits[first.shardIndex][first.hitIndex].score;
@@ -156,6 +157,7 @@ public class TopDocs {
     }
 
     // Returns true if first is < second
+    @Override
     @SuppressWarnings({"unchecked","rawtypes"})
     public boolean lessThan(ShardRef first, ShardRef second) {
       assert first != second;

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/TopTermsRewrite.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/TopTermsRewrite.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/TopTermsRewrite.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/TopTermsRewrite.java Tue Jan  8 03:40:16 2013
@@ -183,6 +183,7 @@ public abstract class TopTermsRewrite<Q 
   
   private static final Comparator<ScoreTerm> scoreTermSortByTermComp = 
     new Comparator<ScoreTerm>() {
+      @Override
       public int compare(ScoreTerm st1, ScoreTerm st2) {
         assert st1.termComp == st2.termComp :
           "term comparator should not change between segments";
@@ -200,6 +201,7 @@ public abstract class TopTermsRewrite<Q 
       this.termState = termState;
     }
     
+    @Override
     public int compareTo(ScoreTerm other) {
       if (this.boost == other.boost)
         return termComp.compare(other.bytes, this.bytes);

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/similarities/DefaultSimilarity.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/similarities/DefaultSimilarity.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/similarities/DefaultSimilarity.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/similarities/DefaultSimilarity.java Tue Jan  8 03:40:16 2013
@@ -28,11 +28,13 @@ public class DefaultSimilarity extends T
   public DefaultSimilarity() {}
   
   /** Implemented as <code>overlap / maxOverlap</code>. */
+  @Override
   public float coord(int overlap, int maxOverlap) {
     return overlap / (float)maxOverlap;
   }
 
   /** Implemented as <code>1/sqrt(sumOfSquaredWeights)</code>. */
+  @Override
   public float queryNorm(float sumOfSquaredWeights) {
     return (float)(1.0 / Math.sqrt(sumOfSquaredWeights));
   }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/spans/NearSpansOrdered.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/spans/NearSpansOrdered.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/spans/NearSpansOrdered.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/search/spans/NearSpansOrdered.java Tue Jan  8 03:40:16 2013
@@ -73,6 +73,7 @@ public class NearSpansOrdered extends Sp
 
   private final Spans[] subSpansByDoc;
   private final Comparator<Spans> spanDocComparator = new Comparator<Spans>() {
+    @Override
     public int compare(Spans o1, Spans o2) {
       return o1.doc() - o2.doc();
     }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/CompoundFileWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/CompoundFileWriter.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/CompoundFileWriter.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/CompoundFileWriter.java Tue Jan  8 03:40:16 2013
@@ -123,6 +123,7 @@ final class CompoundFileWriter implement
    *           if close() had been called before or if no file has been added to
    *           this object
    */
+  @Override
   public void close() throws IOException {
     if (closed) {
       return;

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/Directory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/Directory.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/Directory.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/Directory.java Tue Jan  8 03:40:16 2013
@@ -128,6 +128,7 @@ public abstract class Directory implemen
   }
 
   /** Closes the store. */
+  @Override
   public abstract void close()
        throws IOException;
 

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/FSDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/FSDirectory.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/FSDirectory.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/FSDirectory.java Tue Jan  8 03:40:16 2013
@@ -220,6 +220,7 @@ public abstract class FSDirectory extend
 
     // Exclude subdirs
     String[] result = dir.list(new FilenameFilter() {
+        @Override
         public boolean accept(File dir, String file) {
           return !new File(dir, file).isDirectory();
         }

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/IndexInput.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/IndexInput.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/IndexInput.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/IndexInput.java Tue Jan  8 03:40:16 2013
@@ -50,6 +50,7 @@ public abstract class IndexInput extends
   }
 
   /** Closes the stream to further operations. */
+  @Override
   public abstract void close() throws IOException;
 
   /** Returns the current position in this file, where the next read will

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/IndexOutput.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/IndexOutput.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/IndexOutput.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/IndexOutput.java Tue Jan  8 03:40:16 2013
@@ -35,6 +35,7 @@ public abstract class IndexOutput extend
   public abstract void flush() throws IOException;
 
   /** Closes this stream to further operations. */
+  @Override
   public abstract void close() throws IOException;
 
   /** Returns the current position in this file, where the next write will

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/MMapDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/MMapDirectory.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/MMapDirectory.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/MMapDirectory.java Tue Jan  8 03:40:16 2013
@@ -186,6 +186,7 @@ public class MMapDirectory extends FSDir
     if (useUnmapHack) {
       try {
         AccessController.doPrivileged(new PrivilegedExceptionAction<Object>() {
+          @Override
           public Object run() throws Exception {
             final Method getCleanerMethod = buffer.getClass()
               .getMethod("cleaner");

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/NIOFSDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/NIOFSDirectory.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/NIOFSDirectory.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/NIOFSDirectory.java Tue Jan  8 03:40:16 2013
@@ -80,6 +80,7 @@ public class NIOFSDirectory extends FSDi
     return new NIOFSIndexInput(new File(getDirectory(), name), context, getReadChunkSize());
   }
   
+  @Override
   public IndexInputSlicer createSlicer(final String name,
       final IOContext context) throws IOException {
     ensureOpen();

Modified: lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/NRTCachingDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/NRTCachingDirectory.java?rev=1430130&r1=1430129&r2=1430130&view=diff
==============================================================================
--- lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/NRTCachingDirectory.java (original)
+++ lucene/dev/branches/lucene4547/lucene/core/src/java/org/apache/lucene/store/NRTCachingDirectory.java Tue Jan  8 03:40:16 2013
@@ -233,6 +233,7 @@ public class NRTCachingDirectory extends
     }
   }
 
+  @Override
   public synchronized IndexInputSlicer createSlicer(final String name, final IOContext context) throws IOException {
     ensureOpen();
     if (VERBOSE) {