Guest

Untitled

By: a guest on Jan 28th, 2012  |  syntax: None  |  size: 4.11 KB  |  hits: 17  |  expires: Never
download  |  raw  |  embed  |  report abuse
Copied
  1. Index: lucene/src/java/org/apache/lucene/codecs/simpletext/SimpleTextLiveDocsFormat.java
  2. ===================================================================
  3. --- lucene/src/java/org/apache/lucene/codecs/simpletext/SimpleTextLiveDocsFormat.java   (revision 1237114)
  4. +++ lucene/src/java/org/apache/lucene/codecs/simpletext/SimpleTextLiveDocsFormat.java   (working copy)
  5. @@ -53,13 +53,13 @@
  6.    
  7.    @Override
  8.    public MutableBits newLiveDocs(int size) throws IOException {
  9. -    return new SimpleTextBits(size);
  10. +    return new SimpleTextMutableBits(size);
  11.    }
  12.  
  13.    @Override
  14.    public MutableBits newLiveDocs(Bits existing) throws IOException {
  15.      final SimpleTextBits bits = (SimpleTextBits) existing;
  16. -    return bits.clone();
  17. +    return new SimpleTextMutableBits(bits.bits, bits.size);
  18.    }
  19.  
  20.    @Override
  21. @@ -144,16 +144,11 @@
  22.      }
  23.    }
  24.    
  25. -  static class SimpleTextBits implements MutableBits {
  26. +  // read-only
  27. +  static class SimpleTextBits implements Bits {
  28.      final BitSet bits;
  29.      final int size;
  30.      
  31. -    SimpleTextBits(int size) {
  32. -      this.size = size;
  33. -      bits = new BitSet(size);
  34. -      bits.set(0, size);
  35. -    }
  36. -    
  37.      SimpleTextBits(BitSet bits, int size) {
  38.        this.bits = bits;
  39.        this.size = size;
  40. @@ -168,16 +163,23 @@
  41.      public int length() {
  42.        return size;
  43.      }
  44. +  }
  45. +  
  46. +  // read-write
  47. +  static class SimpleTextMutableBits extends SimpleTextBits implements MutableBits {
  48.  
  49. +    SimpleTextMutableBits(int size) {
  50. +      this(new BitSet(size), size);
  51. +      bits.set(0, size);
  52. +    }
  53. +    
  54. +    SimpleTextMutableBits(BitSet bits, int size) {
  55. +      super(bits, size);
  56. +    }
  57. +    
  58.      @Override
  59.      public void clear(int bit) {
  60.        bits.clear(bit);
  61.      }
  62. -
  63. -    @Override
  64. -    public SimpleTextBits clone() {
  65. -      BitSet clonedBits = (BitSet) bits.clone();
  66. -      return new SimpleTextBits(clonedBits, size);
  67. -    }
  68.    }
  69.  }
  70. Index: lucene/src/java/org/apache/lucene/index/IndexWriter.java
  71. ===================================================================
  72. --- lucene/src/java/org/apache/lucene/index/IndexWriter.java    (revision 1237114)
  73. +++ lucene/src/java/org/apache/lucene/index/IndexWriter.java    (working copy)
  74. @@ -417,7 +417,7 @@
  75.      // docs, and it's copy-on-write (cloned whenever we need
  76.      // to change it but it's been shared to an external NRT
  77.      // reader).
  78. -    public MutableBits liveDocs;
  79. +    public Bits liveDocs;
  80.  
  81.      // How many further deletions we've done against
  82.      // liveDocs vs when we loaded it or last wrote it:
  83. @@ -494,8 +494,7 @@
  84.        if (reader == null) {
  85.          reader = new SegmentReader(info, config.getReaderTermsIndexDivisor(), context);
  86.          if (liveDocs == null) {
  87. -          // nocommit: still don't like this cast, gotta be a cleaner way.
  88. -          liveDocs = (MutableBits) reader.getLiveDocs();
  89. +          liveDocs = reader.getLiveDocs();
  90.          }
  91.          //System.out.println("ADD seg=" + rld.info + " isMerge=" + isMerge + " " + readerMap.size() + " in pool");
  92.        }
  93. @@ -522,7 +521,7 @@
  94.          } else {
  95.            mergeReader = new SegmentReader(info, -1, context);
  96.            if (liveDocs == null) {
  97. -            liveDocs = (MutableBits) mergeReader.getLiveDocs();
  98. +            liveDocs = mergeReader.getLiveDocs();
  99.            }
  100.          }
  101.        }
  102. @@ -538,7 +537,7 @@
  103.        assert !shared;
  104.        final boolean didDelete = liveDocs.get(docID);
  105.        if (didDelete) {
  106. -        liveDocs.clear(docID);
  107. +       ((MutableBits) liveDocs).clear(docID);
  108.          pendingDeleteCount++;
  109.          //System.out.println("  new del seg=" + info + " docID=" + docID + " pendingDelCount=" + pendingDeleteCount + " totDelCount=" + (info.docCount-liveDocs.count()));
  110.        }
  111. @@ -627,7 +626,7 @@
  112.          // until segments file is written:
  113.          boolean success = false;
  114.          try {
  115. -          info.getCodec().liveDocsFormat().writeLiveDocs(liveDocs, dir, info, IOContext.DEFAULT);
  116. +          info.getCodec().liveDocsFormat().writeLiveDocs((MutableBits)liveDocs, dir, info, IOContext.DEFAULT);
  117.            success = true;
  118.          } finally {
  119.            if (!success) {