diff --git a/platform/configuration-store-impl/intellij.platform.configurationStore.impl.iml b/platform/configuration-store-impl/intellij.platform.configurationStore.impl.iml index dff8522ccef4..dcd0f841392f 100644 --- a/platform/configuration-store-impl/intellij.platform.configurationStore.impl.iml +++ b/platform/configuration-store-impl/intellij.platform.configurationStore.impl.iml @@ -20,5 +20,6 @@ + \ No newline at end of file diff --git a/platform/configuration-store-impl/src/StateMap.kt b/platform/configuration-store-impl/src/StateMap.kt index 64ee82d9ad5d..93fbbde43d20 100644 --- a/platform/configuration-store-impl/src/StateMap.kt +++ b/platform/configuration-store-impl/src/StateMap.kt @@ -9,8 +9,8 @@ import com.intellij.util.ArrayUtil import com.intellij.util.SystemProperties import com.intellij.util.isEmpty import gnu.trove.THashMap -import org.iq80.snappy.SnappyFramedInputStream -import org.iq80.snappy.SnappyFramedOutputStream +import net.jpountz.lz4.LZ4BlockInputStream +import net.jpountz.lz4.LZ4BlockOutputStream import org.jdom.Element import java.io.ByteArrayInputStream import java.util.* @@ -18,13 +18,13 @@ import java.util.concurrent.atomic.AtomicReferenceArray fun archiveState(state: Element): BufferExposingByteArrayOutputStream { val byteOut = BufferExposingByteArrayOutputStream() - SnappyFramedOutputStream(byteOut).use { + LZ4BlockOutputStream(byteOut).use { serializeElementToBinary(state, it) } return byteOut } -private fun unarchiveState(state: ByteArray) = SnappyFramedInputStream(ByteArrayInputStream(state), false).use { deserializeElementFromBinary(it) } +private fun unarchiveState(state: ByteArray) = LZ4BlockInputStream(ByteArrayInputStream(state)).use { deserializeElementFromBinary(it) } fun getNewByteIfDiffers(key: String, newState: Any, oldState: ByteArray): ByteArray? { val newBytes: ByteArray diff --git a/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt b/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt index 0daf8d806268..a420da42879b 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt +++ b/platform/lang-impl/src/com/intellij/execution/impl/RunManagerImpl.kt @@ -924,14 +924,20 @@ open class RunManagerImpl(internal val project: Project) : RunManagerEx(), Persi } else { val templateConfiguration = getConfigurationTemplate(configuration.factory).configuration - val templateTasks = if (templateConfiguration === configuration) { + val isTemplate = templateConfiguration === configuration + val templateTasks = if (isTemplate) { getHardcodedBeforeRunTasks(configuration) } else { getTemplateBeforeRunTasks(templateConfiguration) } - if (templateConfiguration === configuration) { + if (isTemplate) { + if (tasks == templateTasks) { + // nothing is changed + return + } + // we must update all existing configuration tasks to ensure that effective tasks (own + template) are the same as before template configuration change // see testTemplates test lock.read { diff --git a/platform/util/src/com/intellij/openapi/util/DeprecatedDuplicatesIconPathPatcher.java b/platform/util/src/com/intellij/openapi/util/DeprecatedDuplicatesIconPathPatcher.java index 27951508ece1..cbee05be539f 100644 --- a/platform/util/src/com/intellij/openapi/util/DeprecatedDuplicatesIconPathPatcher.java +++ b/platform/util/src/com/intellij/openapi/util/DeprecatedDuplicatesIconPathPatcher.java @@ -59,4 +59,10 @@ public class DeprecatedDuplicatesIconPathPatcher extends IconPathPatcher { public String patchPath(String path) { return ourDeprecatedIconsReplacements.get(path); } + + @Nullable + @Override + public Class getContextClass(String path) { + return DeprecatedDuplicatesIconPathPatcher.class; + } } diff --git a/platform/util/src/com/intellij/openapi/util/registry/RegistryValue.java b/platform/util/src/com/intellij/openapi/util/registry/RegistryValue.java index 69b6c93abbf8..930a68ff4f2e 100644 --- a/platform/util/src/com/intellij/openapi/util/registry/RegistryValue.java +++ b/platform/util/src/com/intellij/openapi/util/registry/RegistryValue.java @@ -267,6 +267,7 @@ public class RegistryValue { void resetCache() { myStringCachedValue = null; myIntCachedValue = null; + myDoubleCachedValue = null; myBooleanCachedValue = null; }