assign unsorted to module level to avoid concurrent access during parallel module loading

GitOrigin-RevId: 541b3f796568486415cce03eaf8b09bf85105242
This commit is contained in:
Vladimir Krivosheev
2020-05-06 11:19:10 +02:00
committed by intellij-monorepo-bot
parent eeeddb5052
commit 243bd79d6f

View File

@@ -550,11 +550,6 @@ public final class IdeaPluginDescriptorImpl implements IdeaPluginDescriptor {
// project container: rest of extensions wil be mostly project level
// module container: just use rest, area will not register unrelated extension anyway as no registered point
containerDescriptor.extensions = epNameToExtensionElements;
if (containerDescriptor == moduleContainerDescriptor) {
epNameToExtensionElements = null;
area.registerExtensions(containerDescriptor.extensions, rootDescriptor, listenerCallbacks);
return;
}
LinkedHashMap<String, List<Element>> other = null;
Iterator<Map.Entry<String, List<Element>>> iterator = containerDescriptor.extensions.entrySet().iterator();
@@ -569,11 +564,19 @@ public final class IdeaPluginDescriptorImpl implements IdeaPluginDescriptor {
}
}
isExtensionsCleared = true;
epNameToExtensionElements = other;
if (containerDescriptor.extensions.isEmpty()) {
containerDescriptor.extensions = Collections.emptyMap();
}
if (containerDescriptor == projectContainerDescriptor) {
// assign unsorted to module level to avoid concurrent access during parallel module loading
moduleContainerDescriptor.extensions = other;
epNameToExtensionElements = null;
}
else {
epNameToExtensionElements = other;
}
}
@Override