Index: src/test/org/apache/lucene/index/TestIndexWriterReader.java =================================================================== --- src/test/org/apache/lucene/index/TestIndexWriterReader.java (revision 892224) +++ src/test/org/apache/lucene/index/TestIndexWriterReader.java (working copy) @@ -232,7 +232,8 @@ String id10 = r1.document(10).getField("id").stringValue(); - // deleted IW docs should not show up in the next getReader + // deleted IW docs should not show up in the next + // getReader writer.deleteDocuments(new Term("id", id10)); IndexReader r2 = writer.getReader(); assertEquals(1, count(new Term("id", id10), r1)); Index: src/java/org/apache/lucene/index/SegmentInfo.java =================================================================== --- src/java/org/apache/lucene/index/SegmentInfo.java (revision 892224) +++ src/java/org/apache/lucene/index/SegmentInfo.java (working copy) @@ -681,7 +681,7 @@ /** {@inheritDoc} */ @Override public String toString() { - return toString(dir); + return toString(dir, 0); } /** Used for debugging. Format may suddenly change. @@ -695,7 +695,7 @@ * shared doc stores named _1 (this part is * left off if doc stores are private).

*/ - public String toString(Directory dir) { + public String toString(Directory dir, int pendingDelCount) { StringBuilder s = new StringBuilder(); s.append(name).append(':'); @@ -723,6 +723,9 @@ } catch (IOException ioe) { delCount = -1; } + if (delCount != -1) { + delCount += pendingDelCount; + } if (delCount != 0) { s.append('/'); if (delCount == -1) { Index: src/java/org/apache/lucene/index/SegmentReader.java =================================================================== --- src/java/org/apache/lucene/index/SegmentReader.java (revision 892224) +++ src/java/org/apache/lucene/index/SegmentReader.java (working copy) @@ -682,10 +682,10 @@ clone.readOnly = openReadOnly; clone.si = si; clone.readBufferSize = readBufferSize; + clone.pendingDeleteCount = pendingDeleteCount; if (!openReadOnly && hasChanges) { // My pending changes transfer to the new reader - clone.pendingDeleteCount = pendingDeleteCount; clone.deletedDocsDirty = deletedDocsDirty; clone.normsDirty = normsDirty; clone.hasChanges = hasChanges; @@ -1201,7 +1201,12 @@ /** {@inheritDoc} */ @Override public String toString() { - return si.toString(); + final StringBuilder buffer = new StringBuilder(); + if (hasChanges) { + buffer.append('*'); + } + buffer.append(si.toString(core.dir, pendingDeleteCount)); + return buffer.toString(); } /** Index: src/java/org/apache/lucene/index/MergePolicy.java =================================================================== --- src/java/org/apache/lucene/index/MergePolicy.java (revision 892224) +++ src/java/org/apache/lucene/index/MergePolicy.java (working copy) @@ -127,7 +127,7 @@ final int numSegments = segments.size(); for(int i=0;i 0) b.append(' '); - b.append(segments.info(i).toString(dir)); + b.append(segments.info(i).toString(dir, 0)); } if (info != null) b.append(" into ").append(info.name); Index: src/java/org/apache/lucene/index/SegmentInfos.java =================================================================== --- src/java/org/apache/lucene/index/SegmentInfos.java (revision 892224) +++ src/java/org/apache/lucene/index/SegmentInfos.java (working copy) @@ -876,7 +876,7 @@ buffer.append(' '); } final SegmentInfo info = info(i); - buffer.append(info.toString(directory)); + buffer.append(info.toString(directory, 0)); } return buffer.toString(); } Index: src/java/org/apache/lucene/index/DirectoryReader.java =================================================================== --- src/java/org/apache/lucene/index/DirectoryReader.java (revision 892224) +++ src/java/org/apache/lucene/index/DirectoryReader.java (working copy) @@ -303,7 +303,17 @@ @Override public String toString() { final SegmentInfos infos = writer != null ? segmentInfosStart : segmentInfos; - return "DirectoryReader(" + infos.toString(directory) + ")"; + final StringBuilder buffer = new StringBuilder(); + if (hasChanges) { + buffer.append("*"); + } + buffer.append(getClass().getSimpleName()); + buffer.append('('); + for(SegmentReader r : subReaders) { + buffer.append(r); + } + buffer.append(')'); + return buffer.toString(); } private void initialize(SegmentReader[] subReaders) { Index: src/java/org/apache/lucene/index/IndexReader.java =================================================================== --- src/java/org/apache/lucene/index/IndexReader.java (revision 892224) +++ src/java/org/apache/lucene/index/IndexReader.java (working copy) @@ -148,13 +148,17 @@ /** {@inheritDoc} */ @Override public String toString() { - final StringBuilder buffer = new StringBuilder(getClass().getSimpleName()); + final StringBuilder buffer = new StringBuilder(); + if (hasChanges) { + buffer.append('*'); + } + buffer.append(getClass().getSimpleName()); buffer.append('('); final IndexReader[] subReaders = getSequentialSubReaders(); if ((subReaders != null) && (subReaders.length > 0)) { buffer.append(subReaders[0]); for (int i = 1; i < subReaders.length; ++i) { - buffer.append(", ").append(subReaders[i]); + buffer.append(" ").append(subReaders[i]); } } buffer.append(')'); Index: src/java/org/apache/lucene/index/IndexWriter.java =================================================================== --- src/java/org/apache/lucene/index/IndexWriter.java (revision 892224) +++ src/java/org/apache/lucene/index/IndexWriter.java (working copy) @@ -4484,7 +4484,7 @@ buffer.append(' '); } final SegmentInfo info = infos.info(i); - buffer.append(info.toString(directory)); + buffer.append(info.toString(directory, 0)); if (info.dir != directory) buffer.append("**"); }