spring-projects / spring-session

Spring Session
https://spring.io/projects/spring-session
Apache License 2.0
1.86k stars 1.11k forks source link

Aot hints incomplete #3103

Open simonhir opened 3 months ago

simonhir commented 3 months ago

Describe the bug

We currently try to build and run our internal spring cloud gateway as native image which uses spring-session-hazelcast. When running the native image the serialization within ReactiveMapSessionRepository fails because some aot hints are missing.

To Reproduce

  1. Build https://github.com/it-at-m/refarch/tree/main/refarch-gateway with mvn clean spring-boot:build-image -Pnative -Dspring.profiles.active=local.
  2. When starting the application and visiting a route the login is working but when spring-session is trying to serialize the session an exception is thrown.
Example exception ``` com.oracle.svm.core.jdk.UnsupportedFeatureError: SerializationConstructorAccessor class not found for declaringClass: com.nimbusds.oauth2.sdk.util.OrderedJSONObject (targetConstructorClass: java.util.AbstractMap). Usually adding com.nimbusds.oauth2.sdk.util.OrderedJSONObject to serialization-config.json fixes the problem. 2024-07-18T07:27:46.559369900Z at org.graalvm.nativeimage.builder/com.oracle.svm.core.util.VMError.unsupportedFeature(VMError.java:96) 2024-07-18T07:27:46.559372700Z at org.graalvm.nativeimage.builder/com.oracle.svm.core.reflect.serialize.SerializationSupport.getSerializationConstructorAccessor(SerializationSupport.java:143) 2024-07-18T07:27:46.559375200Z at java.base@17.0.11/jdk.internal.reflect.MethodAccessorGenerator.generateSerializationConstructor(MethodAccessorGenerator.java:61) 2024-07-18T07:27:46.559377500Z at java.base@17.0.11/jdk.internal.reflect.ReflectionFactory.generateConstructor(ReflectionFactory.java:463) 2024-07-18T07:27:46.559379700Z at java.base@17.0.11/jdk.internal.reflect.ReflectionFactory.newConstructorForSerialization(ReflectionFactory.java:455) 2024-07-18T07:27:46.559382300Z at java.base@17.0.11/java.io.ObjectStreamClass.getSerializableConstructor(ObjectStreamClass.java:1443) 2024-07-18T07:27:46.559384600Z at java.base@17.0.11/java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:412) 2024-07-18T07:27:46.559386800Z at java.base@17.0.11/java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:384) 2024-07-18T07:27:46.559389300Z at java.base@17.0.11/java.security.AccessController.executePrivileged(AccessController.java:173) 2024-07-18T07:27:46.559400300Z at java.base@17.0.11/java.security.AccessController.doPrivileged(AccessController.java:318) 2024-07-18T07:27:46.559402800Z at java.base@17.0.11/java.io.ObjectStreamClass.(ObjectStreamClass.java:384) 2024-07-18T07:27:46.559405300Z at java.base@17.0.11/java.io.ObjectStreamClass$Caches$1.computeValue(ObjectStreamClass.java:110) 2024-07-18T07:27:46.559407700Z at java.base@17.0.11/java.io.ObjectStreamClass$Caches$1.computeValue(ObjectStreamClass.java:107) 2024-07-18T07:27:46.559410200Z at java.base@17.0.11/java.io.ClassCache$1.computeValue(ClassCache.java:73) 2024-07-18T07:27:46.559414200Z at java.base@17.0.11/java.io.ClassCache$1.computeValue(ClassCache.java:70) 2024-07-18T07:27:46.559417000Z at java.base@17.0.11/java.lang.ClassValue.get(JavaLangSubstitutions.java:684) 2024-07-18T07:27:46.559419600Z at java.base@17.0.11/java.io.ClassCache.get(ClassCache.java:84) 2024-07-18T07:27:46.559422100Z at java.base@17.0.11/java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:363) 2024-07-18T07:27:46.559424400Z at java.base@17.0.11/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1137) 2024-07-18T07:27:46.559427000Z at java.base@17.0.11/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:350) 2024-07-18T07:27:46.559429500Z at java.base@17.0.11/java.util.LinkedHashMap.internalWriteEntries(LinkedHashMap.java:334) 2024-07-18T07:27:46.559432400Z at java.base@17.0.11/java.util.HashMap.writeObject(HashMap.java:1497) 2024-07-18T07:27:46.559435100Z at java.base@17.0.11/java.lang.reflect.Method.invoke(Method.java:568) 2024-07-18T07:27:46.559438000Z at java.base@17.0.11/java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1070) 2024-07-18T07:27:46.559440600Z at java.base@17.0.11/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1516) 2024-07-18T07:27:46.559443500Z at java.base@17.0.11/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1438) 2024-07-18T07:27:46.559446100Z at java.base@17.0.11/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1181) 2024-07-18T07:27:46.559448600Z at java.base@17.0.11/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1572) 2024-07-18T07:27:46.559451200Z at java.base@17.0.11/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1529) 2024-07-18T07:27:46.559454000Z at java.base@17.0.11/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1438) 2024-07-18T07:27:46.559456400Z at java.base@17.0.11/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1181) 2024-07-18T07:27:46.559458900Z at java.base@17.0.11/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1572) 2024-07-18T07:27:46.559461200Z at java.base@17.0.11/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1529) 2024-07-18T07:27:46.559463500Z at java.base@17.0.11/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1438) 2024-07-18T07:27:46.559466100Z at java.base@17.0.11/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1181) 2024-07-18T07:27:46.559471000Z at java.base@17.0.11/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1572) 2024-07-18T07:27:46.559474000Z at java.base@17.0.11/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1529) 2024-07-18T07:27:46.559476500Z at java.base@17.0.11/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1438) 2024-07-18T07:27:46.559479000Z at java.base@17.0.11/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1181) 2024-07-18T07:27:46.559481700Z at java.base@17.0.11/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1572) 2024-07-18T07:27:46.559484300Z at java.base@17.0.11/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1529) 2024-07-18T07:27:46.559486800Z at java.base@17.0.11/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1438) 2024-07-18T07:27:46.559489300Z at java.base@17.0.11/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1181) 2024-07-18T07:27:46.559491900Z at java.base@17.0.11/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:350) 2024-07-18T07:27:46.559494600Z at java.base@17.0.11/java.util.HashMap.internalWriteEntries(HashMap.java:1944) 2024-07-18T07:27:46.559497300Z at java.base@17.0.11/java.util.HashMap.writeObject(HashMap.java:1497) 2024-07-18T07:27:46.559499500Z at java.base@17.0.11/java.lang.reflect.Method.invoke(Method.java:568) 2024-07-18T07:27:46.559502100Z at java.base@17.0.11/java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1070) 2024-07-18T07:27:46.559504500Z at java.base@17.0.11/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1516) 2024-07-18T07:27:46.559518200Z at java.base@17.0.11/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1438) 2024-07-18T07:27:46.559521000Z at java.base@17.0.11/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1181) 2024-07-18T07:27:46.559523900Z at java.base@17.0.11/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:350) 2024-07-18T07:27:46.559526700Z at java.base@17.0.11/java.util.HashMap.internalWriteEntries(HashMap.java:1944) 2024-07-18T07:27:46.559529200Z at java.base@17.0.11/java.util.HashMap.writeObject(HashMap.java:1497) 2024-07-18T07:27:46.559531400Z at java.base@17.0.11/java.lang.reflect.Method.invoke(Method.java:568) 2024-07-18T07:27:46.559533800Z at java.base@17.0.11/java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1070) 2024-07-18T07:27:46.559536400Z at java.base@17.0.11/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1516) 2024-07-18T07:27:46.559538900Z at java.base@17.0.11/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1438) 2024-07-18T07:27:46.559541700Z at java.base@17.0.11/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1181) 2024-07-18T07:27:46.559545200Z at java.base@17.0.11/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1572) 2024-07-18T07:27:46.559550000Z at java.base@17.0.11/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1529) 2024-07-18T07:27:46.559553000Z at java.base@17.0.11/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1438) 2024-07-18T07:27:46.559555600Z at java.base@17.0.11/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1181) 2024-07-18T07:27:46.559558100Z at java.base@17.0.11/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:350) 2024-07-18T07:27:46.559560700Z at com.hazelcast.internal.serialization.impl.defaultserializers.JavaDefaultSerializers$JavaSerializer.write(JavaDefaultSerializers.java:124) 2024-07-18T07:27:46.559563500Z at com.hazelcast.internal.serialization.impl.defaultserializers.JavaDefaultSerializers$JavaSerializer.write(JavaDefaultSerializers.java:117) 2024-07-18T07:27:46.559566000Z at com.hazelcast.internal.serialization.impl.StreamSerializerAdapter.write(StreamSerializerAdapter.java:39) 2024-07-18T07:27:46.559568500Z at com.hazelcast.internal.serialization.impl.AbstractSerializationService.toBytes(AbstractSerializationService.java:238) 2024-07-18T07:27:46.559571100Z at com.hazelcast.internal.serialization.impl.AbstractSerializationService.toBytes(AbstractSerializationService.java:217) 2024-07-18T07:27:46.559573700Z at com.hazelcast.internal.serialization.impl.AbstractSerializationService.toData(AbstractSerializationService.java:202) 2024-07-18T07:27:46.559576200Z at com.hazelcast.internal.serialization.impl.AbstractSerializationService.toData(AbstractSerializationService.java:157) 2024-07-18T07:27:46.559579000Z at com.hazelcast.spi.impl.NodeEngineImpl.toData(NodeEngineImpl.java:419) 2024-07-18T07:27:46.559581300Z at com.hazelcast.spi.impl.AbstractDistributedObject.toData(AbstractDistributedObject.java:82) 2024-07-18T07:27:46.559583600Z at com.hazelcast.map.impl.proxy.MapProxyImpl.put(MapProxyImpl.java:137) 2024-07-18T07:27:46.559586000Z at com.hazelcast.map.impl.proxy.MapProxyImpl.put(MapProxyImpl.java:128) 2024-07-18T07:27:46.559588600Z at org.springframework.session.ReactiveMapSessionRepository.lambda$save$0(ReactiveMapSessionRepository.java:81) 2024-07-18T07:27:46.559591000Z at reactor.core.publisher.MonoRunnable.call(MonoRunnable.java:73) 2024-07-18T07:27:46.559593700Z at reactor.core.publisher.MonoRunnable.call(MonoRunnable.java:32) 2024-07-18T07:27:46.559596000Z at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:410) 2024-07-18T07:27:46.559598400Z at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onNext(FluxConcatMap.java:251) 2024-07-18T07:27:46.559601700Z at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129) 2024-07-18T07:27:46.559603900Z at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:335) 2024-07-18T07:27:46.559606100Z at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:294) 2024-07-18T07:27:46.559608600Z at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:171) 2024-07-18T07:27:46.559612900Z at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onSubscribe(FluxConcatMap.java:236) 2024-07-18T07:27:46.559615800Z at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onSubscribe(FluxMapFuseable.java:96) 2024-07-18T07:27:46.559618500Z at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:201) 2024-07-18T07:27:46.559620900Z at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:83) 2024-07-18T07:27:46.559623300Z at reactor.core.publisher.Flux.subscribe(Flux.java:8840) 2024-07-18T07:27:46.559625900Z at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onComplete(FluxConcatArray.java:238) 2024-07-18T07:27:46.559628500Z at reactor.core.publisher.FluxConcatArray.subscribe(FluxConcatArray.java:79) 2024-07-18T07:27:46.559630800Z at reactor.core.publisher.MonoFromFluxOperator.subscribe(MonoFromFluxOperator.java:83) 2024-07-18T07:27:46.559633100Z at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) 2024-07-18T07:27:46.559635500Z at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:241) 2024-07-18T07:27:46.559638100Z at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:204) 2024-07-18T07:27:46.559640600Z at reactor.core.publisher.Operators.complete(Operators.java:137) 2024-07-18T07:27:46.559642900Z at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) 2024-07-18T07:27:46.559645200Z at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) 2024-07-18T07:27:46.559647200Z at reactor.core.publisher.Mono.subscribe(Mono.java:4568) 2024-07-18T07:27:46.559649500Z at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:265) 2024-07-18T07:27:46.559651600Z at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:204) 2024-07-18T07:27:46.559653700Z at reactor.core.publisher.FluxTap$TapSubscriber.onComplete(FluxTap.java:286) 2024-07-18T07:27:46.559655700Z at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onComplete(Operators.java:2231) 2024-07-18T07:27:46.559657900Z at reactor.core.publisher.Operators.complete(Operators.java:137) 2024-07-18T07:27:46.559660200Z at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) 2024-07-18T07:27:46.559662600Z at reactor.core.publisher.Mono.subscribe(Mono.java:4568) 2024-07-18T07:27:46.559664800Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) 2024-07-18T07:27:46.559667100Z at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) 2024-07-18T07:27:46.559669400Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106) 2024-07-18T07:27:46.559672000Z at reactor.core.publisher.Operators.error(Operators.java:198) 2024-07-18T07:27:46.559677700Z at reactor.core.publisher.MonoError.subscribe(MonoError.java:53) 2024-07-18T07:27:46.559680100Z at reactor.core.publisher.Mono.subscribe(Mono.java:4568) 2024-07-18T07:27:46.559682400Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) 2024-07-18T07:27:46.559684700Z at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) 2024-07-18T07:27:46.559687300Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106) 2024-07-18T07:27:46.559690200Z at reactor.core.publisher.MonoFlatMap$FlatMapMain.onError(MonoFlatMap.java:180) 2024-07-18T07:27:46.559692700Z at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onError(FluxPeekFuseable.java:234) 2024-07-18T07:27:46.559695200Z at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:241) 2024-07-18T07:27:46.559697800Z at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:315) 2024-07-18T07:27:46.559699900Z at reactor.core.publisher.MonoNext$NextSubscriber.onError(MonoNext.java:93) 2024-07-18T07:27:46.559702000Z at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onError(Operators.java:2236) 2024-07-18T07:27:46.559704200Z at reactor.core.publisher.Operators.error(Operators.java:198) 2024-07-18T07:27:46.559706700Z at reactor.core.publisher.MonoError.subscribe(MonoError.java:53) 2024-07-18T07:27:46.559709000Z at reactor.core.publisher.Mono.subscribe(Mono.java:4568) 2024-07-18T07:27:46.559711400Z at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:82) 2024-07-18T07:27:46.559713700Z at reactor.core.publisher.FluxFlatMap$FlatMapMain.checkTerminated(FluxFlatMap.java:850) 2024-07-18T07:27:46.559716100Z at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:612) 2024-07-18T07:27:46.559718600Z at reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:592) 2024-07-18T07:27:46.559721400Z at reactor.core.publisher.FluxFlatMap$FlatMapMain.onComplete(FluxFlatMap.java:469) 2024-07-18T07:27:46.559724100Z at reactor.core.publisher.FluxArray$ArraySubscription.slowPath(FluxArray.java:137) 2024-07-18T07:27:46.559726400Z at reactor.core.publisher.FluxArray$ArraySubscription.request(FluxArray.java:99) 2024-07-18T07:27:46.559728600Z at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373) 2024-07-18T07:27:46.559731100Z at reactor.core.publisher.FluxArray.subscribe(FluxArray.java:53) 2024-07-18T07:27:46.559733500Z at reactor.core.publisher.FluxArray.subscribe(FluxArray.java:59) 2024-07-18T07:27:46.559735700Z at reactor.core.publisher.MonoFromFluxOperator.subscribe(MonoFromFluxOperator.java:83) 2024-07-18T07:27:46.559737900Z at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) 2024-07-18T07:27:46.559740100Z at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) 2024-07-18T07:27:46.559744200Z at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) 2024-07-18T07:27:46.559746700Z at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onNext(FluxConcatArray.java:180) 2024-07-18T07:27:46.559749300Z at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2571) 2024-07-18T07:27:46.559751700Z at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.request(FluxConcatArray.java:256) 2024-07-18T07:27:46.559754200Z at reactor.core.publisher.MonoNext$NextSubscriber.request(MonoNext.java:108) 2024-07-18T07:27:46.559756500Z at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367) 2024-07-18T07:27:46.559758700Z at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2241) 2024-07-18T07:27:46.559761000Z at reactor.core.publisher.MonoNext$NextSubscriber.onSubscribe(MonoNext.java:70) 2024-07-18T07:27:46.559763300Z at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onSubscribe(FluxConcatArray.java:166) 2024-07-18T07:27:46.559765600Z at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:55) 2024-07-18T07:27:46.559767700Z at reactor.core.publisher.Mono.subscribe(Mono.java:4568) 2024-07-18T07:27:46.559770400Z at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onComplete(FluxConcatArray.java:238) 2024-07-18T07:27:46.559772800Z at reactor.core.publisher.FluxConcatArray.subscribe(FluxConcatArray.java:79) 2024-07-18T07:27:46.559775200Z at reactor.core.publisher.Mono.subscribe(Mono.java:4568) 2024-07-18T07:27:46.559777500Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) 2024-07-18T07:27:46.559779700Z at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) 2024-07-18T07:27:46.559781900Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106) 2024-07-18T07:27:46.559784900Z at reactor.core.publisher.Operators.error(Operators.java:198) 2024-07-18T07:27:46.559787200Z at reactor.core.publisher.MonoError.subscribe(MonoError.java:53) 2024-07-18T07:27:46.559789900Z at reactor.core.publisher.Mono.subscribe(Mono.java:4568) 2024-07-18T07:27:46.559792100Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) 2024-07-18T07:27:46.559794200Z at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) 2024-07-18T07:27:46.559796300Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106) 2024-07-18T07:27:46.559798600Z at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onError(FluxOnAssembly.java:544) 2024-07-18T07:27:46.559800900Z at reactor.core.publisher.Operators.error(Operators.java:198) 2024-07-18T07:27:46.559802900Z at reactor.core.publisher.MonoError.subscribe(MonoError.java:53) 2024-07-18T07:27:46.559806600Z at reactor.core.publisher.Mono.subscribe(Mono.java:4568) 2024-07-18T07:27:46.559809100Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) 2024-07-18T07:27:46.559811400Z at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) 2024-07-18T07:27:46.559813800Z at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onError(FluxOnAssembly.java:544) 2024-07-18T07:27:46.559816100Z at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:241) 2024-07-18T07:27:46.559818500Z at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:315) 2024-07-18T07:27:46.559821000Z at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onError(FluxOnAssembly.java:544) 2024-07-18T07:27:46.559823500Z at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121) 2024-07-18T07:27:46.559825800Z at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) 2024-07-18T07:27:46.559828200Z at reactor.core.publisher.FluxPeekFuseable$PeekFuseableConditionalSubscriber.onError(FluxPeekFuseable.java:553) 2024-07-18T07:27:46.559830500Z at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) 2024-07-18T07:27:46.559833000Z at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) 2024-07-18T07:27:46.559835100Z at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121) 2024-07-18T07:27:46.559837800Z at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onError(FluxOnAssembly.java:544) 2024-07-18T07:27:46.559840400Z at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) 2024-07-18T07:27:46.559842700Z at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onError(FluxOnAssembly.java:544) 2024-07-18T07:27:46.559845000Z at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) 2024-07-18T07:27:46.559847200Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106) 2024-07-18T07:27:46.559849900Z at reactor.core.publisher.Operators.error(Operators.java:198) 2024-07-18T07:27:46.559852000Z at reactor.core.publisher.MonoError.subscribe(MonoError.java:53) 2024-07-18T07:27:46.559854500Z at reactor.core.publisher.Mono.subscribe(Mono.java:4568) 2024-07-18T07:27:46.559856800Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) 2024-07-18T07:27:46.559859100Z at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onError(Operators.java:2236) 2024-07-18T07:27:46.559861900Z at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onError(MonoIgnoreThen.java:280) 2024-07-18T07:27:46.559865800Z at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onError(FluxOnAssembly.java:544) 2024-07-18T07:27:46.559868100Z at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) 2024-07-18T07:27:46.559870500Z at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121) 2024-07-18T07:27:46.559873400Z at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onError(FluxOnAssembly.java:544) 2024-07-18T07:27:46.559876200Z at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) 2024-07-18T07:27:46.559878700Z at reactor.core.publisher.MonoFlatMap$FlatMapMain.onError(MonoFlatMap.java:180) 2024-07-18T07:27:46.559881200Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106) 2024-07-18T07:27:46.559883600Z at reactor.core.publisher.Operators.error(Operators.java:198) 2024-07-18T07:27:46.559885800Z at reactor.core.publisher.MonoError.subscribe(MonoError.java:53) 2024-07-18T07:27:46.559888000Z at reactor.core.publisher.Mono.subscribe(Mono.java:4568) 2024-07-18T07:27:46.559890600Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) 2024-07-18T07:27:46.559893100Z at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onError(Operators.java:2236) 2024-07-18T07:27:46.559895400Z at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onError(MonoIgnoreThen.java:280) 2024-07-18T07:27:46.559898100Z at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onError(FluxOnAssembly.java:544) 2024-07-18T07:27:46.559900500Z at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) 2024-07-18T07:27:46.559903000Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106) 2024-07-18T07:27:46.559905800Z at reactor.core.publisher.Operators.error(Operators.java:198) 2024-07-18T07:27:46.559910200Z at reactor.core.publisher.MonoError.subscribe(MonoError.java:53) 2024-07-18T07:27:46.559912300Z at reactor.core.publisher.Mono.subscribe(Mono.java:4568) 2024-07-18T07:27:46.559914300Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) 2024-07-18T07:27:46.559916700Z at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:241) 2024-07-18T07:27:46.559919000Z at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:315) 2024-07-18T07:27:46.559921400Z at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) 2024-07-18T07:27:46.559923800Z at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:241) 2024-07-18T07:27:46.559926200Z at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:315) 2024-07-18T07:27:46.559928600Z at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onError(MonoIgnoreThen.java:280) 2024-07-18T07:27:46.559935100Z at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onError(FluxContextWrite.java:121) 2024-07-18T07:27:46.559937400Z at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onError(MonoIgnoreThen.java:280) 2024-07-18T07:27:46.559940100Z at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:241) 2024-07-18T07:27:46.559942400Z at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:315) 2024-07-18T07:27:46.559944900Z at reactor.core.publisher.MonoRunnable.subscribe(MonoRunnable.java:52) 2024-07-18T07:27:46.559947300Z at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) 2024-07-18T07:27:46.559949500Z at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) 2024-07-18T07:27:46.559951900Z at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:200) 2024-07-18T07:27:46.559954300Z at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1865) 2024-07-18T07:27:46.559956500Z at reactor.core.publisher.MonoCacheTime.subscribeOrReturn(MonoCacheTime.java:151) 2024-07-18T07:27:46.559958700Z at reactor.core.publisher.Mono.subscribe(Mono.java:4552) 2024-07-18T07:27:46.559961700Z at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:265) 2024-07-18T07:27:46.559964100Z at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) 2024-07-18T07:27:46.559966400Z at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) 2024-07-18T07:27:46.559968900Z at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:241) 2024-07-18T07:27:46.559971200Z at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:204) 2024-07-18T07:27:46.559973800Z at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299) 2024-07-18T07:27:46.559976300Z at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1866) 2024-07-18T07:27:46.559978600Z at reactor.core.publisher.MonoCacheTime.subscribeOrReturn(MonoCacheTime.java:151) 2024-07-18T07:27:46.559980900Z at reactor.core.publisher.Mono.subscribe(Mono.java:4552) 2024-07-18T07:27:46.559983200Z at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:265) 2024-07-18T07:27:46.559985600Z at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) 2024-07-18T07:27:46.559988000Z at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) 2024-07-18T07:27:46.559990500Z at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) 2024-07-18T07:27:46.559993000Z at reactor.core.publisher.FluxHide$SuppressFuseableSubscriber.onNext(FluxHide.java:137) 2024-07-18T07:27:46.559995600Z at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) 2024-07-18T07:27:46.560000500Z at reactor.core.publisher.FluxConcatMapNoPrefetch$FluxConcatMapNoPrefetchSubscriber.innerNext(FluxConcatMapNoPrefetch.java:259) 2024-07-18T07:27:46.560002900Z at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:865) 2024-07-18T07:27:46.560019600Z at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) 2024-07-18T07:27:46.560024900Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) 2024-07-18T07:27:46.560027600Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) 2024-07-18T07:27:46.560030100Z at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondComplete(MonoFlatMap.java:245) 2024-07-18T07:27:46.560032600Z at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:305) 2024-07-18T07:27:46.560035100Z at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129) 2024-07-18T07:27:46.560038500Z at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondComplete(MonoFlatMap.java:245) 2024-07-18T07:27:46.560040700Z at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:305) 2024-07-18T07:27:46.560043100Z at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) 2024-07-18T07:27:46.560045600Z at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:158) 2024-07-18T07:27:46.560047900Z at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:200) 2024-07-18T07:27:46.560050300Z at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) 2024-07-18T07:27:46.560052500Z at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) 2024-07-18T07:27:46.560054700Z at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) 2024-07-18T07:27:46.560057200Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) 2024-07-18T07:27:46.560059800Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) 2024-07-18T07:27:46.560062300Z at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129) 2024-07-18T07:27:46.560065000Z at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:194) 2024-07-18T07:27:46.560067500Z at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondComplete(MonoFlatMap.java:245) 2024-07-18T07:27:46.560070200Z at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:305) 2024-07-18T07:27:46.560073000Z at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) 2024-07-18T07:27:46.560075400Z at reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber.onNext(FluxOnAssembly.java:539) 2024-07-18T07:27:46.560077900Z at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:158) 2024-07-18T07:27:46.560083000Z at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) 2024-07-18T07:27:46.560085600Z at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299) 2024-07-18T07:27:46.560088000Z at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337) 2024-07-18T07:27:46.560090700Z at reactor.core.publisher.Operators$BaseFluxToMonoOperator.completePossiblyEmpty(Operators.java:2097) 2024-07-18T07:27:46.560093200Z at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:145) 2024-07-18T07:27:46.560096100Z at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) 2024-07-18T07:27:46.560098400Z at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260) 2024-07-18T07:27:46.560100600Z at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) 2024-07-18T07:27:46.560103000Z at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415) 2024-07-18T07:27:46.560105300Z at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:446) 2024-07-18T07:27:46.560107700Z at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:500) 2024-07-18T07:27:46.560109900Z at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:793) 2024-07-18T07:27:46.560112100Z at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:114) 2024-07-18T07:27:46.560114400Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) 2024-07-18T07:27:46.560116600Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) 2024-07-18T07:27:46.560119000Z at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) 2024-07-18T07:27:46.560121500Z at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) 2024-07-18T07:27:46.560123900Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) 2024-07-18T07:27:46.560126700Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) 2024-07-18T07:27:46.560129400Z at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) 2024-07-18T07:27:46.560131900Z at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) 2024-07-18T07:27:46.560134600Z at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) 2024-07-18T07:27:46.560137100Z at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) 2024-07-18T07:27:46.560139400Z at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) 2024-07-18T07:27:46.560144200Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) 2024-07-18T07:27:46.560146900Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) 2024-07-18T07:27:46.560150000Z at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) 2024-07-18T07:27:46.560153400Z at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1407) 2024-07-18T07:27:46.560155900Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) 2024-07-18T07:27:46.560158300Z at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) 2024-07-18T07:27:46.560160600Z at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:918) 2024-07-18T07:27:46.560162900Z at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:799) 2024-07-18T07:27:46.560165200Z at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:501) 2024-07-18T07:27:46.560167500Z at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:399) 2024-07-18T07:27:46.560169700Z at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:994) 2024-07-18T07:27:46.560171900Z at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) 2024-07-18T07:27:46.560174000Z at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) 2024-07-18T07:27:46.560176400Z at java.base@17.0.11/java.lang.Thread.run(Thread.java:840) 2024-07-18T07:27:46.560178900Z at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:915) 2024-07-18T07:27:46.560181300Z at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:890) ```

Expected behavior

Application runs as native image without any problems.

Sample

https://github.com/it-at-m/refarch/tree/main/refarch-gateway Spring and spring-session version: 3.3.1 Hazlecast-spring version: 5.4.0 Custom spring session config: https://github.com/it-at-m/refarch/blob/main/refarch-gateway/src/main/java/de.muenchen.oss.refarch.gateway/configuration/WebSessionConfiguration.java

simonhir commented 3 months ago

To solve this i already collected metadata for the above mentioned application as described here: https://github.com/oracle/graalvm-reachability-metadata/blob/master/docs/CollectingMetadata.md

Then filtered the metadata for org.springframework.session.** which led to following raw metadata: filtered-metadata.zip

After that i took the filtered metadata, removed all already by spring-session defined hints and migrated them to following serialization-config.json which got the application running as intended.

serialization-config.json ``` { "types": [ { "name": "com.nimbusds.oauth2.sdk.util.OrderedJSONObject" }, { "name": "java.lang.Boolean" }, { "name": "java.net.URL" }, { "name": "java.time.Duration" }, { "name": "java.time.Instant" }, { "name": "java.time.Ser" }, { "name": "java.util.Collections$UnmodifiableMap" }, { "name": "java.util.HashMap" }, { "name": "java.util.HashSet" }, { "name": "java.util.LinkedHashMap" }, { "name": "java.util.LinkedHashSet" }, { "name": "net.minidev.json.JSONObject" }, { "name": "org.springframework.security.oauth2.client.OAuth2AuthorizedClient" }, { "name": "org.springframework.security.oauth2.client.registration.ClientRegistration" }, { "name": "org.springframework.security.oauth2.client.registration.ClientRegistration$ProviderDetails" }, { "name": "org.springframework.security.oauth2.client.registration.ClientRegistration$ProviderDetails$UserInfoEndpoint" }, { "name": "org.springframework.security.oauth2.core.AbstractOAuth2Token" }, { "name": "org.springframework.security.oauth2.core.AuthenticationMethod" }, { "name": "org.springframework.security.oauth2.core.AuthorizationGrantType" }, { "name": "org.springframework.security.oauth2.core.ClientAuthenticationMethod" }, { "name": "org.springframework.security.oauth2.core.OAuth2AccessToken" }, { "name": "org.springframework.security.oauth2.core.OAuth2AccessToken$TokenType" }, { "name": "org.springframework.security.oauth2.core.OAuth2RefreshToken" }, { "name": "org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationRequest" }, { "name": "org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationResponseType" }, { "name": "org.springframework.security.oauth2.core.oidc.OidcIdToken" }, { "name": "org.springframework.security.oauth2.core.oidc.OidcUserInfo" }, { "name": "org.springframework.security.oauth2.core.oidc.user.DefaultOidcUser" }, { "name": "org.springframework.security.oauth2.core.oidc.user.OidcUserAuthority" }, { "name": "org.springframework.security.oauth2.core.user.DefaultOAuth2User" }, { "name": "org.springframework.security.oauth2.core.user.OAuth2UserAuthority" }, { "name": "org.springframework.session.MapSession" }, { "name": "sun.security.provider.SHA" } ], "lambdaCapturingTypes": [ ], "proxies": [ ] } ```

There are also some hints missing for hazelcast itself see https://github.com/oracle/graalvm-reachability-metadata/issues/515.

The question for me now is whether I should simply transfer the above JSON into the spring-session aot hints? If yes i would be happy to create a mr for it if that's the correct way to fix the problem.

marcusdacoregio commented 2 months ago

Hi @simonhir, thanks for the report.

Yes, a pull request would be great. However, I'd like to see a minimal, reproducible sample because I couldn't run yours. Ideally, the sample should have the Maven/Gradle Wrapper as well.

Can you provide which version of GraalVM you are using?