IDEA IllegalStateException:使用Kotlin运行JUnit测试时,服务正在死亡

昨天我正在处理我的代码库,当我突然在IDEA日志中看到这个代码时,我正在对我的代码运行单元测试:

错误:Kotlin:[Internal Error] java.lang.IllegalStateException:服务在org.jetbrains.kotlin.daemon.common.CompileService $ CallResult $ Dying.get(CompileService.kt:60)处于org.jetbrains.kotlin.daemon .common.CompileService $ CallResult $ Dying.get(CompileService.kt:59)at org.jetbrains.kotlin.compilerRunner.JpsKotlinCompilerRunner.compileWithDaemon(JpsKotlinCompilerRunner.kt:127)at org.jetbrains.kotlin.compilerRunner.JpsKotlinCompilerRunner.compileWithDaemonOrFallback(JpsKotlinCompilerRunner .kt:100)at org.jetbrains.kotlin.compilerRunner.JpsKotlinCompilerRunner.compileWithDaemonOrFallback(JpsKotlinCompilerRunner.kt:35)at org.jetbrains.kotlin.compilerRunner.KotlinCompilerRunner.runCompiler(KotlinCompilerRunner.kt:115)at org.jetbrains.kotlin。在org.jetbrains.kotlin.jps.build.KotlinBuilder.doCompileModuleChunk(Kotli)上编译器运行程序.JpsKotlinCompilerRunner.runK2JvmCompiler(JpsKotlinCompilerRunner.kt:65)在org.jetbrains.kotlin.jps.build.KotlinBuilder.compileToJvm(KotlinBuilder.kt:740) org.jetbrains.kotlin.jps.build.KotlinBuilder.build(KotlinBuilder.kt:181)org.jetbrains.kotlin.jps.build.KotlinBuilder.doBuild(KotlinBuilder.kt:264)org.jetbrains.kotlin.jps.build.KotlinBuilder.build(KotlinBuilder.kt:181) .jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1282)at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:956)at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder .java:1028)org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:915)at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:741)at org.jetbrains.jps。 (org.jetbrains.jps.cmdline.BuildRunner.runBuild(BuildRunner.java:138))中的org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:195)中的incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:387) at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:295)at org.jetbrains.jp s.cmdline.BuildSession.run(BuildSession.java:125)at org.jetbrains.jps.cmdline.BuildMain $ MyMessageHandler $ 1.run(BuildMain.java:238)at org.jetbrains.jps.service.impl.SharedThreadPoolImpl $ 1。运行(SharedThreadPoolImpl.java:44)在java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511)在java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent .ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread.java:745)

这是四月份来自JetBrains的傻瓜笑话吗?

我从来没有见过这个。 killall java和IDEA重新启动解决了这个问题,我无法重现这一点。 在编译Kotlin代码时,是否有这样的记录(我没有在google上发现任何命中)或IDEA中的一次性故障? 这个错误是什么意思?

请注意,我运行的单元测试是一个简单的探索性测试,我认为这是不相关的:

 internal fun fetchAsListWithSiblings(): List<Message<T>> { val first = this var currentMsg = first val result = mutableListOf(currentMsg) while(currentMsg.next.isPresent) { val next = currentMsg.next.get() currentMsg = next result.add(next) } return result } @Test fun shouldFetchSiblingsWhenFetchSiblingsIsCalledWithMultipleSiblings() { val expected = listOf("foo", "bar", "baz") val messages = Message.createMultiple(expected) assertThat(messages.fetchAsListWithSiblings().map { it.payload }).isEqualTo(expected) } 

这是已知的问题 – 并行编译开始时的竞争条件。 通常重复构建解决它。 以下是YouTrack中的相关问题KT- 15562。 这个问题应该在Kotlin 1.1.2版本中得到解决。