diff --git a/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xCodec.java b/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xCodec.java index 888c1b8..de98a51 100644 --- a/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xCodec.java +++ b/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xCodec.java @@ -76,12 +76,12 @@ public class Lucene3xCodec extends Codec { private final DocValuesFormat docValuesFormat = new DocValuesFormat() { @Override public PerDocConsumer docsConsumer(PerDocWriteState state) throws IOException { - return null; + throw new UnsupportedOperationException("this codec doesn't support DocValues"); } @Override public PerDocProducer docsProducer(SegmentReadState state) throws IOException { - return null; + return null; // that if fine since null means simply no DocValues available } @Override diff --git a/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java b/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java index da7db93..a0bca20 100644 --- a/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java +++ b/lucene/core/src/java/org/apache/lucene/index/SegmentMerger.java @@ -367,24 +367,26 @@ final class SegmentMerger { } private void mergePerDoc(SegmentWriteState segmentWriteState) throws IOException { - final PerDocConsumer docsConsumer = codec.docValuesFormat() + final PerDocConsumer docsConsumer; + try { + docsConsumer = codec.docValuesFormat() .docsConsumer(new PerDocWriteState(segmentWriteState)); + } catch (UnsupportedOperationException ex) { // TODO: remove this check when 3.x indexes are no longer supported // (3.x indexes don't have docvalues) - if (docsConsumer == null) { - return; - } - boolean success = false; - try { - docsConsumer.merge(mergeState); - success = true; - } finally { - if (success) { - IOUtils.close(docsConsumer); - } else { - IOUtils.closeWhileHandlingException(docsConsumer); - } + return; + } + boolean success = false; + try { + docsConsumer.merge(mergeState); + success = true; + } finally { + if (success) { + IOUtils.close(docsConsumer); + } else { + IOUtils.closeWhileHandlingException(docsConsumer); } + } } private void mergeNorms(SegmentWriteState segmentWriteState) throws IOException {