Synchronize access to lookup storage in JPS

Storage operations are synchronized already,
but BuildDataManager.getStorage is not synchronized,
so maybe it is possible to create multiple LookupStorage
instances.

    #KT-22535
    #KT-22995

Original commit: 8ab9366ae5
This commit is contained in:
Alexey Tsvetkov
2018-02-22 01:45:49 +03:00
parent 2454ee30bb
commit 773975e055
4 changed files with 28 additions and 21 deletions
@@ -47,9 +47,8 @@ import org.jetbrains.kotlin.config.IncrementalCompilation
import org.jetbrains.kotlin.incremental.CacheVersion
import org.jetbrains.kotlin.incremental.LookupSymbol
import org.jetbrains.kotlin.incremental.testingUtils.*
import org.jetbrains.kotlin.jps.incremental.JpsLookupStorageProvider
import org.jetbrains.kotlin.jps.incremental.KotlinDataContainerTarget
import org.jetbrains.kotlin.jps.incremental.getKotlinCache
import org.jetbrains.kotlin.jps.incremental.withLookupStorage
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.utils.Printer
import org.jetbrains.kotlin.utils.keysToMap
@@ -302,9 +301,10 @@ abstract class AbstractIncrementalJpsTest(
p.println("Begin of Lookup Maps")
p.println()
val lookupStorage = project.dataManager.getStorage(KotlinDataContainerTarget, JpsLookupStorageProvider)
lookupStorage.forceGC()
p.print(lookupStorage.dump(lookupsDuringTest))
project.dataManager.withLookupStorage { lookupStorage ->
lookupStorage.forceGC()
p.print(lookupStorage.dump(lookupsDuringTest))
}
p.println()
p.println("End of Lookup Maps")