Skip to content

index cache struggles to deserialize JSON due to duplicated usage of type #1473

Closed
@martinlippert

Description

@martinlippert

The JSON serialization for the spring metamodel adds a type field to every node of the index, but that conflicts with existing fields type of index elements (e.g. the bean type in Bean).

10:57:11.075 [pool-5-thread-1] ERROR o.s.i.v.b.i.c.IndexCacheOnDiscDeltaBased - error reading cached symbols
com.google.gson.JsonParseException: java.lang.ClassNotFoundException: com.example.reactivewebservice.GreetingHandler
	at org.springframework.ide.vscode.boot.index.cache.IndexCacheOnDiscDeltaBased$SpringIndexElementAdapter.deserialize(IndexCacheOnDiscDeltaBased.java:711)
	at org.springframework.ide.vscode.boot.index.cache.IndexCacheOnDiscDeltaBased$SpringIndexElementAdapter.deserialize(IndexCacheOnDiscDeltaBased.java:1)
	at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:95)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$2.readIntoField(ReflectiveTypeAdapterFactory.java:267)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$FieldReflectionAdapter.readField(ReflectiveTypeAdapterFactory.java:558)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:516)
	at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40)
	at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:83)
	at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:59)
	at com.google.gson.Gson.fromJson(Gson.java:1361)
	at com.google.gson.Gson.fromJson(Gson.java:1463)
	at com.google.gson.Gson.fromJson(Gson.java:1434)
	at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.deserialize(TreeTypeAdapter.java:199)
	at org.springframework.ide.vscode.boot.index.cache.IndexCacheOnDiscDeltaBased$IndexCacheStoreAdapter.deserialize(IndexCacheOnDiscDeltaBased.java:595)
	at org.springframework.ide.vscode.boot.index.cache.IndexCacheOnDiscDeltaBased$IndexCacheStoreAdapter.deserialize(IndexCacheOnDiscDeltaBased.java:1)
	at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:95)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$2.readIntoField(ReflectiveTypeAdapterFactory.java:267)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$FieldReflectionAdapter.readField(ReflectiveTypeAdapterFactory.java:558)
	at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:516)
	at com.google.gson.Gson.fromJson(Gson.java:1361)
	at com.google.gson.Gson.fromJson(Gson.java:1463)
	at com.google.gson.Gson.fromJson(Gson.java:1434)
	at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.deserialize(TreeTypeAdapter.java:199)
	at org.springframework.ide.vscode.boot.index.cache.IndexCacheOnDiscDeltaBased$DeltaStorageAdapter.deserialize(IndexCacheOnDiscDeltaBased.java:631)
	at org.springframework.ide.vscode.boot.index.cache.IndexCacheOnDiscDeltaBased$DeltaStorageAdapter.deserialize(IndexCacheOnDiscDeltaBased.java:1)
	at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:95)
	at com.google.gson.Gson.fromJson(Gson.java:1361)
	at com.google.gson.Gson.fromJson(Gson.java:1306)
	at org.springframework.ide.vscode.boot.index.cache.IndexCacheOnDiscDeltaBased.retrieveStoreFromIncrementalStorage(IndexCacheOnDiscDeltaBased.java:355)
	at org.springframework.ide.vscode.boot.index.cache.IndexCacheOnDiscDeltaBased.retrieve(IndexCacheOnDiscDeltaBased.java:136)
	at org.springframework.ide.vscode.boot.java.utils.SpringIndexerJava.scanFiles(SpringIndexerJava.java:493)
	at org.springframework.ide.vscode.boot.java.utils.SpringIndexerJava.initializeProject(SpringIndexerJava.java:162)
	at org.springframework.ide.vscode.boot.app.SpringSymbolIndex$InitializeProject.run(SpringSymbolIndex.java:846)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.ClassNotFoundException: com.example.reactivewebservice.GreetingHandler
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:421)
	at java.base/java.lang.Class.forName(Class.java:412)
	at org.springframework.ide.vscode.boot.index.cache.IndexCacheOnDiscDeltaBased$SpringIndexElementAdapter.deserialize(IndexCacheOnDiscDeltaBased.java:709)
	... 36 common frames omitted

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions