Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Aot hints incomplete #3103

Open
simonhir opened this issue Jul 18, 2024 · 2 comments
Open

Aot hints incomplete #3103

simonhir opened this issue Jul 18, 2024 · 2 comments
Assignees
Labels
type: bug A general bug

Comments

@simonhir
Copy link

simonhir commented Jul 18, 2024

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.<init>(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 simonhir added status: waiting-for-triage An issue we've not yet triaged type: bug A general bug labels Jul 18, 2024
@simonhir
Copy link
Author

simonhir commented Jul 18, 2024

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 oracle/graalvm-reachability-metadata#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 simonhir changed the title Aot hint incomplete Aot hints incomplete Jul 18, 2024
@marcusdacoregio marcusdacoregio self-assigned this Aug 6, 2024
@marcusdacoregio marcusdacoregio removed the status: waiting-for-triage An issue we've not yet triaged label Aug 6, 2024
@marcusdacoregio
Copy link
Contributor

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?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: bug A general bug
Projects
Status: No status
Development

No branches or pull requests

2 participants