Index: lucene/src/java/org/apache/lucene/index/IndexReader.java
===================================================================
--- lucene/src/java/org/apache/lucene/index/IndexReader.java	(revision 1050222)
+++ lucene/src/java/org/apache/lucene/index/IndexReader.java	(working copy)
@@ -1420,7 +1420,7 @@
   }
 
 
-  private Fields fields;
+  private volatile Fields fields;
 
   /** @lucene.internal */
   void storeFields(Fields fields) {
Index: lucene/src/java/org/apache/lucene/index/MultiFields.java
===================================================================
--- lucene/src/java/org/apache/lucene/index/MultiFields.java	(revision 1050175)
+++ lucene/src/java/org/apache/lucene/index/MultiFields.java	(working copy)
@@ -19,9 +19,10 @@
 
 import java.io.IOException;
 import java.util.Map;
-import java.util.HashMap;
 import java.util.List;
 import java.util.ArrayList;
+import java.util.concurrent.ConcurrentHashMap;
+
 import org.apache.lucene.util.ReaderUtil;
 import org.apache.lucene.util.ReaderUtil.Gather;  // for javadocs
 import org.apache.lucene.util.Bits;
@@ -45,7 +46,7 @@
 public final class MultiFields extends Fields {
   private final Fields[] subs;
   private final ReaderUtil.Slice[] subSlices;
-  private final Map<String,Terms> terms = new HashMap<String,Terms>();
+  private final Map<String,Terms> terms = new ConcurrentHashMap<String,Terms>();
 
   /** Returns a single {@link Fields} instance for this
    *  reader, merging fields/terms/docs/positions on the
