diff --git a/jps/jps-builders/src/org/jetbrains/jps/backwardRefs/index/CompilerReferenceIndex.java b/jps/jps-builders/src/org/jetbrains/jps/backwardRefs/index/CompilerReferenceIndex.java
index 0d6f75a35ddf..589fdea58b3e 100644
--- a/jps/jps-builders/src/org/jetbrains/jps/backwardRefs/index/CompilerReferenceIndex.java
+++ b/jps/jps-builders/src/org/jetbrains/jps/backwardRefs/index/CompilerReferenceIndex.java
@@ -12,6 +12,8 @@ import com.intellij.util.indexing.IndexExtension;
import com.intellij.util.indexing.IndexId;
import com.intellij.util.indexing.InvertedIndex;
import com.intellij.util.indexing.impl.*;
+import com.intellij.util.indexing.impl.forward.KeyCollectionForwardIndexAccessor;
+import com.intellij.util.indexing.impl.forward.PersistentMapBasedForwardIndex;
import com.intellij.util.io.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jps.backwardRefs.NameEnumerator;
@@ -198,6 +200,7 @@ public class CompilerReferenceIndex {
public void setRebuildRequestCause(Throwable e) {
myRebuildRequestCause = e;
+ LOG.error(e);
}
private static void close(InvertedIndex, ?, ?> index, CommonProcessors.FindFirstProcessor exceptionProcessor) {
@@ -231,17 +234,8 @@ public class CompilerReferenceIndex {
throws IOException {
super(extension,
createIndexStorage(extension.getKeyDescriptor(), extension.getValueExternalizer(), extension.getName(), indexDir, readOnly),
- readOnly ? null : new KeyCollectionBasedForwardIndex(extension) {
- @NotNull
- @Override
- public PersistentHashMap> createMap() throws IOException {
- IndexId id = getIndexExtension().getName();
- return new PersistentHashMap<>(new File(indexDir, id.getName() + ".inputs"),
- EnumeratorIntegerDescriptor.INSTANCE,
- new InputIndexDataExternalizer<>(extension.getKeyDescriptor(),
- id));
- }
- });
+ readOnly ? null : new PersistentMapBasedForwardIndex(new File(indexDir, extension.getName().getName() + ".inputs")),
+ readOnly ? null : new KeyCollectionForwardIndexAccessor<>(extension));
}
@Override
diff --git a/platform/util/src/com/intellij/util/indexing/impl/forward/AbstractForwardIndexAccessor.java b/platform/util/src/com/intellij/util/indexing/impl/forward/AbstractForwardIndexAccessor.java
index b362e630beb2..9a59d1b8224a 100644
--- a/platform/util/src/com/intellij/util/indexing/impl/forward/AbstractForwardIndexAccessor.java
+++ b/platform/util/src/com/intellij/util/indexing/impl/forward/AbstractForwardIndexAccessor.java
@@ -4,6 +4,7 @@ package com.intellij.util.indexing.impl.forward;
import com.intellij.openapi.util.ThreadLocalCachedByteArray;
import com.intellij.openapi.util.io.BufferExposingByteArrayOutputStream;
import com.intellij.openapi.util.io.ByteArraySequence;
+import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.indexing.impl.InputDataDiffBuilder;
import com.intellij.util.io.DataExternalizer;
import com.intellij.util.io.DataOutputStream;
@@ -38,7 +39,7 @@ public abstract class AbstractForwardIndexAccessor
@Nullable
@Override
public ByteArraySequence serializeIndexedData(@Nullable Map map, @Nullable Input content) throws IOException {
- if (map == null) return null;
+ if (ContainerUtil.isEmpty(map)) return null;
return serializeToByteSeq(convertToDataType(map, content), myDataTypeExternalizer, map.size());
}
diff --git a/platform/util/src/com/intellij/util/indexing/impl/forward/KeyCollectionForwardIndexAccessor.java b/platform/util/src/com/intellij/util/indexing/impl/forward/KeyCollectionForwardIndexAccessor.java
index b6623bcd05e1..4b29f8544a62 100644
--- a/platform/util/src/com/intellij/util/indexing/impl/forward/KeyCollectionForwardIndexAccessor.java
+++ b/platform/util/src/com/intellij/util/indexing/impl/forward/KeyCollectionForwardIndexAccessor.java
@@ -2,6 +2,7 @@
package com.intellij.util.indexing.impl.forward;
import com.intellij.util.containers.ContainerUtil;
+import com.intellij.util.indexing.IndexExtension;
import com.intellij.util.indexing.IndexId;
import com.intellij.util.indexing.impl.CollectionInputDataDiffBuilder;
import com.intellij.util.indexing.impl.InputDataDiffBuilder;
@@ -21,6 +22,10 @@ public class KeyCollectionForwardIndexAccessor extends Abstra
super(externalizer);
}
+ public KeyCollectionForwardIndexAccessor(@NotNull IndexExtension extension) {
+ this(extension.getKeyDescriptor(), extension.getName());
+ }
+
public KeyCollectionForwardIndexAccessor(@NotNull KeyDescriptor externalizer, @NotNull IndexId indexId) {
super(new InputIndexDataExternalizer<>(externalizer, indexId));
}