Skip to content

A StackOverFlow error for serializable Kotlin data class for autocompletion in the Eclipse IDE #693

Closed
@Daogreen

Description

@Daogreen

Describe the bug
I have a Spring Maven application based on the Eclipse IDE. The application contains several plug-in fragments. These fragments use properties files (see below). I use STS 4 of version 4.21.

I have a Kotlin file for configuration properties:
file FoobarConnectProperties.kt:
@Component @ConfigurationProperties(prefix = "foobar.connect") data class FoobarConnectProperties(var host: String = "", var port: Int = 8081) { var project: MutableMap<String, MySecurityProperties> = mutableMapOf() }

Also, I have another Kotlin file with properties (in a different package):
file MySecurityProperties.kt:
@kotlinx.serialization.Serializable data class MySecurityProperties(var user: String, var password: String, var useOAuth: Boolean)

To Reproduce
Run the application. Open the application.yml file. For foobar.connect.project properties try to make an auto-complete (by pressing Ctrl+Space). This auto-completion attempt gives a StackOverFlow error and shows "No proposals" for the given property as a result:

Oct 10, 2021 3:27:48 PM org.eclipse.lsp4j.jsonrpc.RemoteEndpoint fallbackResponseError SEVERE: Internal error: java.lang.StackOverflowError java.util.concurrent.CompletionException: java.lang.StackOverflowError at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314) at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:319) at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718) at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506) at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1705) at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1692) at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290) at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020) at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656) at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594) at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183) Caused by: java.lang.StackOverflowError at java.base/java.lang.StringBuffer.append(StringBuffer.java:312) at java.base/java.io.StringWriter.write(StringWriter.java:106) at java.base/java.io.StringWriter.append(StringWriter.java:150) at java.base/java.io.StringWriter.append(StringWriter.java:41) at com.google.gson.stream.JsonWriter.beforeValue(JsonWriter.java:650) at com.google.gson.stream.JsonWriter.open(JsonWriter.java:326) at com.google.gson.stream.JsonWriter.beginObject(JsonWriter.java:309) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:240) at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:127) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:245) at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:69) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:127) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:245) ...

If a Kotlin data class with properties is not annotated as Serializable, then everything works just fine without errors.

UPD: In STS3 it works without errors.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions