-
Notifications
You must be signed in to change notification settings - Fork 38.7k
Description
Andy Wilkinson opened SPR-16981 and commented
I've been looking at the performance of ConfigurationClassPostProcessor
, particularly the overhead that it adds when are no full or lite configuration classes in the context. As part of this, I've observed that adding Reactor to the classpath has a large impact. Without Reactor on the classpath I see postProcessBeanDefinitionRegistry
take 10-20ms. With Reactor on the classpath it can take as much as 100ms to do the same thing (add 0 bean definitions).
The cost is incurred when ConfigurationClassUtils
is loaded as it, ultimately, leads to a couple of hundred Reactor classes being loaded. Here's the beginning of the -verbose:class
output:
[Loaded org.springframework.context.annotation.ConfigurationClassUtils from file:/Users/awilkinson/dev/workspaces/spring/spring-boot/master/configuration-class-parser-overhead/target/classes/]
[Loaded org.springframework.core.type.ClassMetadata from file:/Users/awilkinson/.m2/repository/org/springframework/spring-core/5.0.5.RELEASE/spring-core-5.0.5.RELEASE.jar]
[Loaded org.springframework.core.type.AnnotationMetadata from file:/Users/awilkinson/.m2/repository/org/springframework/spring-core/5.0.5.RELEASE/spring-core-5.0.5.RELEASE.jar]
[Loaded org.springframework.core.Conventions from file:/Users/awilkinson/.m2/repository/org/springframework/spring-core/5.0.5.RELEASE/spring-core-5.0.5.RELEASE.jar]
[Loaded org.springframework.core.ReactiveAdapterRegistry from file:/Users/awilkinson/.m2/repository/org/springframework/spring-core/5.0.5.RELEASE/spring-core-5.0.5.RELEASE.jar]
[Loaded org.springframework.core.ReactiveAdapterRegistry$ReactorRegistrar from file:/Users/awilkinson/.m2/repository/org/springframework/spring-core/5.0.5.RELEASE/spring-core-5.0.5.RELEASE.jar]
[Loaded org.reactivestreams.Publisher from file:/Users/awilkinson/.m2/repository/org/reactivestreams/reactive-streams/1.0.2/reactive-streams-1.0.2.jar]
[Loaded reactor.core.publisher.Mono from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.Scannable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoOperator from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoCacheTime from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded org.reactivestreams.Subscriber from file:/Users/awilkinson/.m2/repository/org/reactivestreams/reactive-streams/1.0.2/reactive-streams-1.0.2.jar]
[Loaded org.reactivestreams.Processor from file:/Users/awilkinson/.m2/repository/org/reactivestreams/reactive-streams/1.0.2/reactive-streams-1.0.2.jar]
[Loaded reactor.core.CoreSubscriber from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.Disposable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded org.reactivestreams.Subscription from file:/Users/awilkinson/.m2/repository/org/reactivestreams/reactive-streams/1.0.2/reactive-streams-1.0.2.jar]
[Loaded java.util.function.LongSupplier from /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/rt.jar]
[Loaded reactor.core.publisher.MonoProcessor from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.SignalPeek from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.Fuseable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoLogFuseable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoLog from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoZip from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoFirst from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoCreate from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.Flux from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxFromMonoOperator from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoExpand from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoFilterFuseable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoFilter from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded java.util.concurrent.Callable from /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/rt.jar]
[Loaded reactor.core.Fuseable$ScalarCallable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoError from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoMapFuseable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoMap from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoHandleFuseable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoHandle from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoFlatMap from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoFromPublisher from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded java.util.concurrent.CompletionStage from /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/rt.jar]
[Loaded reactor.core.publisher.MonoCompletionStage from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoDefer from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoDelay from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoCallable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoFromFluxOperator from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoSourceFluxFuseable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoSourceFlux from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoSourceFuseable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoSource from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoRunnable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoSupplier from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoIgnorePublisher from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoJust from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoSequenceEqual from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoCurrentContext from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoSubscriberContext from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoUsing from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoWhen from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoTimeout from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoCancelOn from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.AssemblyOp from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoOnAssembly from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoDefaultIfEmpty from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoDelayElement from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoDelayUntil from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded java.util.function.Consumer from /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/rt.jar]
[Loaded reactor.core.publisher.MonoDelaySubscription from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoDematerialize from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoPeekTerminal from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoDoFinallyFuseable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoDoFinally from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoDoOnEach from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoElapsed from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoFilterWhen from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoFlatMapMany from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoFlattenIterable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxCallable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoHasElement from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoHide from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoIgnoreElement from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoMaterialize from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoOnErrorResume from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoDetach from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoPublishMulticast from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoSubscribeOnValue from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoSubscribeOnCallable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoPublishOn from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoRepeat from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoRepeatPredicate from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoRepeatWhen from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoRetry from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoRetryPredicate from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoRetryWhen from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded java.util.NoSuchElementException from /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre/lib/rt.jar]
[Loaded reactor.core.publisher.MonoSingleMono from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoSubscribeOn from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoSwitchIfEmpty from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoTakeUntilOther from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoIgnoreThen from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoPeekFuseable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoPeek from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded java.lang.invoke.LambdaForm$DMH/192794887 from java.lang.invoke.LambdaForm]
[Loaded org.springframework.core.ReactiveAdapterRegistry$ReactorRegistrar$$Lambda$9/1391942103 from org.springframework.core.ReactiveAdapterRegistry$ReactorRegistrar]
[Loaded org.springframework.core.ReactiveTypeDescriptor from file:/Users/awilkinson/.m2/repository/org/springframework/spring-core/5.0.5.RELEASE/spring-core-5.0.5.RELEASE.jar]
[Loaded org.springframework.core.ReactiveAdapterRegistry$ReactorRegistrar$$Lambda$10/1136497418 from org.springframework.core.ReactiveAdapterRegistry$ReactorRegistrar]
[Loaded java.lang.invoke.LambdaForm$DMH/863125040 from java.lang.invoke.LambdaForm]
[Loaded org.springframework.core.ReactiveAdapterRegistry$ReactorRegistrar$$Lambda$11/1693847660 from org.springframework.core.ReactiveAdapterRegistry$ReactorRegistrar]
[Loaded org.springframework.core.ReactiveAdapter from file:/Users/awilkinson/.m2/repository/org/springframework/spring-core/5.0.5.RELEASE/spring-core-5.0.5.RELEASE.jar]
[Loaded reactor.core.publisher.FluxOperator from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxIndexFuseable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxIndex from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoCount from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxLogFuseable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxLog from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxConcatArray from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxConcatIterable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxConcatMap from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxJoin from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoNext from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoCollect from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoStreamCollector from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.MonoElementAt from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxCreate from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxZip from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxMapFuseable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxMap from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxFirstEmitting from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxMerge from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxFlatMap from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxSourceMonoFuseable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxSourceMono from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxSourceFuseable from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxSource from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
[Loaded reactor.core.publisher.FluxExpand from file:/Users/awilkinson/.m2/repository/io/projectreactor/reactor-core/3.1.6.RELEASE/reactor-core-3.1.6.RELEASE.jar]
…
The javadoc on ReactiveAdapterRegistry.getSharedInstance()
indicates that the instance is lazily built. This is undone by Conventions
which stores the shared instance in a static field, thereby triggering creation of the instance as soon as the class is loaded.
The registry is only used in getVariableNameForParameter
and getVariableNameForReturnType
. In the application that I have been examining, neither method is called during startup. Perhaps the initialisation of the registry could be deferred until it's needed?
Beyond deferring the initialisation, I wonder if there's something that can be done to reduce the impact when it is eventually needed? The cost in terms of time and metaspace usage of loading 250 classes seems rather high.
Affects: 5.0.7
Issue Links:
- CPU utilization too high for a simple server [SPR-16218] #20766 CPU utilization too high for a simple server