spring-session icon indicating copy to clipboard operation
spring-session copied to clipboard

Aot hints incomplete

Open simonhir opened this issue 1 year ago • 2 comments

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 [email protected]/jdk.internal.reflect.MethodAccessorGenerator.generateSerializationConstructor(MethodAccessorGenerator.java:61)
2024-07-18T07:27:46.559377500Z 	at [email protected]/jdk.internal.reflect.ReflectionFactory.generateConstructor(ReflectionFactory.java:463)
2024-07-18T07:27:46.559379700Z 	at [email protected]/jdk.internal.reflect.ReflectionFactory.newConstructorForSerialization(ReflectionFactory.java:455)
2024-07-18T07:27:46.559382300Z 	at [email protected]/java.io.ObjectStreamClass.getSerializableConstructor(ObjectStreamClass.java:1443)
2024-07-18T07:27:46.559384600Z 	at [email protected]/java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:412)
2024-07-18T07:27:46.559386800Z 	at [email protected]/java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:384)
2024-07-18T07:27:46.559389300Z 	at [email protected]/java.security.AccessController.executePrivileged(AccessController.java:173)
2024-07-18T07:27:46.559400300Z 	at [email protected]/java.security.AccessController.doPrivileged(AccessController.java:318)
2024-07-18T07:27:46.559402800Z 	at [email protected]/java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:384)
2024-07-18T07:27:46.559405300Z 	at [email protected]/java.io.ObjectStreamClass$Caches$1.computeValue(ObjectStreamClass.java:110)
2024-07-18T07:27:46.559407700Z 	at [email protected]/java.io.ObjectStreamClass$Caches$1.computeValue(ObjectStreamClass.java:107)
2024-07-18T07:27:46.559410200Z 	at [email protected]/java.io.ClassCache$1.computeValue(ClassCache.java:73)
2024-07-18T07:27:46.559414200Z 	at [email protected]/java.io.ClassCache$1.computeValue(ClassCache.java:70)
2024-07-18T07:27:46.559417000Z 	at [email protected]/java.lang.ClassValue.get(JavaLangSubstitutions.java:684)
2024-07-18T07:27:46.559419600Z 	at [email protected]/java.io.ClassCache.get(ClassCache.java:84)
2024-07-18T07:27:46.559422100Z 	at [email protected]/java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:363)
2024-07-18T07:27:46.559424400Z 	at [email protected]/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1137)
2024-07-18T07:27:46.559427000Z 	at [email protected]/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:350)
2024-07-18T07:27:46.559429500Z 	at [email protected]/java.util.LinkedHashMap.internalWriteEntries(LinkedHashMap.java:334)
2024-07-18T07:27:46.559432400Z 	at [email protected]/java.util.HashMap.writeObject(HashMap.java:1497)
2024-07-18T07:27:46.559435100Z 	at [email protected]/java.lang.reflect.Method.invoke(Method.java:568)
2024-07-18T07:27:46.559438000Z 	at [email protected]/java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1070)
2024-07-18T07:27:46.559440600Z 	at [email protected]/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1516)
2024-07-18T07:27:46.559443500Z 	at [email protected]/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1438)
2024-07-18T07:27:46.559446100Z 	at [email protected]/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1181)
2024-07-18T07:27:46.559448600Z 	at [email protected]/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1572)
2024-07-18T07:27:46.559451200Z 	at [email protected]/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1529)
2024-07-18T07:27:46.559454000Z 	at [email protected]/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1438)
2024-07-18T07:27:46.559456400Z 	at [email protected]/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1181)
2024-07-18T07:27:46.559458900Z 	at [email protected]/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1572)
2024-07-18T07:27:46.559461200Z 	at [email protected]/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1529)
2024-07-18T07:27:46.559463500Z 	at [email protected]/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1438)
2024-07-18T07:27:46.559466100Z 	at [email protected]/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1181)
2024-07-18T07:27:46.559471000Z 	at [email protected]/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1572)
2024-07-18T07:27:46.559474000Z 	at [email protected]/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1529)
2024-07-18T07:27:46.559476500Z 	at [email protected]/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1438)
2024-07-18T07:27:46.559479000Z 	at [email protected]/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1181)
2024-07-18T07:27:46.559481700Z 	at [email protected]/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1572)
2024-07-18T07:27:46.559484300Z 	at [email protected]/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1529)
2024-07-18T07:27:46.559486800Z 	at [email protected]/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1438)
2024-07-18T07:27:46.559489300Z 	at [email protected]/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1181)
2024-07-18T07:27:46.559491900Z 	at [email protected]/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:350)
2024-07-18T07:27:46.559494600Z 	at [email protected]/java.util.HashMap.internalWriteEntries(HashMap.java:1944)
2024-07-18T07:27:46.559497300Z 	at [email protected]/java.util.HashMap.writeObject(HashMap.java:1497)
2024-07-18T07:27:46.559499500Z 	at [email protected]/java.lang.reflect.Method.invoke(Method.java:568)
2024-07-18T07:27:46.559502100Z 	at [email protected]/java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1070)
2024-07-18T07:27:46.559504500Z 	at [email protected]/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1516)
2024-07-18T07:27:46.559518200Z 	at [email protected]/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1438)
2024-07-18T07:27:46.559521000Z 	at [email protected]/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1181)
2024-07-18T07:27:46.559523900Z 	at [email protected]/java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:350)
2024-07-18T07:27:46.559526700Z 	at [email protected]/java.util.HashMap.internalWriteEntries(HashMap.java:1944)
2024-07-18T07:27:46.559529200Z 	at [email protected]/java.util.HashMap.writeObject(HashMap.java:1497)
2024-07-18T07:27:46.559531400Z 	at [email protected]/java.lang.reflect.Method.invoke(Method.java:568)
2024-07-18T07:27:46.559533800Z 	at [email protected]/java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1070)
2024-07-18T07:27:46.559536400Z 	at [email protected]/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1516)
2024-07-18T07:27:46.559538900Z 	at [email protected]/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1438)
2024-07-18T07:27:46.559541700Z 	at [email protected]/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1181)
2024-07-18T07:27:46.559545200Z 	at [email protected]/java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1572)
2024-07-18T07:27:46.559550000Z 	at [email protected]/java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1529)
2024-07-18T07:27:46.559553000Z 	at [email protected]/java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1438)
2024-07-18T07:27:46.559555600Z 	at [email protected]/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1181)
2024-07-18T07:27:46.559558100Z 	at [email protected]/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 [email protected]/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 avatar Jul 18 '24 07:07 simonhir

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.

simonhir avatar Jul 18 '24 07:07 simonhir

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?

marcusdacoregio avatar Aug 13 '24 12:08 marcusdacoregio

Unfortunately, the issue got lost a bit and I've only just got back to it. I tried it with spring-session-hazelcast:3.4.3 and from the Spring Session side every thing works fine now and no custom hints are required anymore. Couldn't find an according change but thanks a lot if someone fixed it.

For hazelcast itself still some hints are missing. I got it working for my case with following custom reflections (still WIP!): https://github.com/it-at-m/refarch/blob/2ba8423afd3bfcee390e2a676ddac887f65420a6/refarch-gateway/src/main/resources/META-INF/native-image/de.muenchen.refarch/refarch-gateway-additional-hints/reflect-config.json

simonhir avatar May 16 '25 11:05 simonhir

Not sure what i tested, but I was wrong. I updated the according branch with the missing serialization hints: https://github.com/it-at-m/refarch/pull/28 Also create PR https://github.com/spring-projects/spring-session/pull/3411 for directly defining them in the core aot hints.

simonhir avatar May 28 '25 10:05 simonhir

@marcusdacoregio

However, I'd like to see a minimal, reproducible sample because I couldn't run yours

The gateway should start if keycloak is running from the dev stack and with profile local. Also init-keycloak needs to be ran once to setup the keycloak.

Can you provide which version of GraalVM you are using?

Tbh I'm not really sure as i used mvn spring-boot:build-image. Probably some of the following versions helps: paketo-buildpacks/[email protected], paketo-buildpacks/[email protected], paketo-buildpacks/[email protected], Java version: 21.0.7+9-LTS, vendor version: Liberica-NIK-23.1.7-1.

simonhir avatar May 28 '25 10:05 simonhir

@marcusdacoregio I also have run into an AOT issue and have a repro here.

I tried adding RegisterReflectionForBinding for the classes missing but was still running into issues, both with default jdk serializer and GenericJackson2JsonRedisSerializer

msosa avatar Nov 05 '25 05:11 msosa