Index: lucene/core/src/java/org/apache/lucene/index/FieldInfos.java =================================================================== --- lucene/core/src/java/org/apache/lucene/index/FieldInfos.java (revision 1518719) +++ lucene/core/src/java/org/apache/lucene/index/FieldInfos.java (working copy) @@ -228,6 +228,11 @@ nameToNumber.clear(); docValuesType.clear(); } + + synchronized void setDocValuesType(int number, String name, DocValuesType dvType) { + assert containsConsistent(number, name, dvType); + docValuesType.put(name, dvType); + } } static final class Builder { @@ -286,10 +291,13 @@ } else { fi.update(isIndexed, storeTermVector, omitNorms, storePayloads, indexOptions); - if (docValues != null) { + if (!fi.hasDocValues() && docValues != null) { + // First time we are seeing doc values type for + // this field: fi.setDocValuesType(docValues); - // must also update docValuesType map so it's aware of this field's DocValueType - globalFieldNumbers.docValuesType.put(name, docValues); + // must also update docValuesType map so it's + // aware of this field's DocValueType + globalFieldNumbers.setDocValuesType(fi.number, name, docValues); } if (!fi.omitsNorms() && normType != null) {