In 2.0.0.RC2.
The problem is widely described in #2140 and #2099. It was fixed in 1.2.3 but it seems it's now present again in 2.0.0.RC2.
This is not a problem of having circular dependencies between beans, because it is not 100% reproducible, maybe 10% tops. This is some race condition during beans context initialization, which was previously fixed successfully for some time.
My example exception is contained in this comment.
Honestly, I don't know if it was fixed in 1.2.3 because when I look into the code, it looks I still have lazy workaround beans injection there... However, with this workaround my system was working since (let's say) 25 Sep 2019 and now the problem has arisen again.
Anyway, I still have those lazy beans from my workaround and now in some % of test executions I can observe this problem...
I'm getting a similar error with Micronaut 2.0.0:
io.micronaut.context.exceptions.BeanInstantiationException: Error instantiating bean of type [io.micronaut.runtime.context.CompositeMessageSource]
Message: Recursive update
Path Taken: new DefaultValidator([ValidatorConfiguration configuration]) --> DefaultValidatorConfiguration.setMessageSource([MessageSource messageSource]) --> new CompositeMessageSource([Collection messageSources])
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1915)
at io.micronaut.context.DefaultBeanContext.getScopedBeanForDefinition(DefaultBeanContext.java:2386)
at io.micronaut.context.DefaultBeanContext.getBeanForDefinition(DefaultBeanContext.java:2301)
at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:2273)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1233)
at io.micronaut.context.AbstractBeanDefinition.getBeanForMethodArgument(AbstractBeanDefinition.java:1656)
at io.micronaut.context.AbstractBeanDefinition.getBeanForMethodArgument(AbstractBeanDefinition.java:899)
at io.micronaut.validation.validator.$DefaultValidatorConfigurationDefinition.injectBean(Unknown Source)
at io.micronaut.validation.validator.$DefaultValidatorConfigurationDefinition.build(Unknown Source)
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1888)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingletonInternal(DefaultBeanContext.java:2630)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:2616)
at io.micronaut.context.DefaultBeanContext.getBeanForDefinition(DefaultBeanContext.java:2299)
at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:2273)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1233)
at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:1035)
at io.micronaut.validation.validator.$DefaultValidatorDefinition.build(Unknown Source)
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1888)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingletonInternal(DefaultBeanContext.java:2630)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:2616)
at io.micronaut.context.DefaultBeanContext.getBeanForDefinition(DefaultBeanContext.java:2299)
at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:2273)
at io.micronaut.context.DefaultBeanContext.findBean(DefaultBeanContext.java:1254)
at io.micronaut.context.DefaultBeanContext.findBean(DefaultBeanContext.java:738)
at io.micronaut.context.BeanLocator.findBean(BeanLocator.java:149)
at io.micronaut.context.DefaultBeanContext.getBeanValidator(DefaultBeanContext.java:639)
at io.micronaut.inject.ValidatedBeanDefinition.validate(ValidatedBeanDefinition.java:43)
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1955)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingletonInternal(DefaultBeanContext.java:2630)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:2616)
at io.micronaut.context.DefaultBeanContext.getBeanForDefinition(DefaultBeanContext.java:2299)
at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:2273)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1233)
at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:1035)
at io.micronaut.configuration.hibernate.jpa.$JpaConfigurationDefinition.build(Unknown Source)
at io.micronaut.context.BeanDefinitionDelegate.build(BeanDefinitionDelegate.java:143)
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1888)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingletonInternal(DefaultBeanContext.java:2630)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:2616)
at io.micronaut.context.DefaultBeanContext.getBeanForDefinition(DefaultBeanContext.java:2299)
at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:2273)
at io.micronaut.context.DefaultBeanContext.findBean(DefaultBeanContext.java:1254)
at io.micronaut.context.DefaultBeanContext.findBean(DefaultBeanContext.java:738)
at io.micronaut.configuration.hibernate.jpa.condition.EntitiesInPackageCondition.matches(EntitiesInPackageCondition.java:54)
at io.micronaut.context.RequiresCondition.matchesCustomConditions(RequiresCondition.java:356)
at io.micronaut.context.RequiresCondition.processPostStartRequirements(RequiresCondition.java:219)
at io.micronaut.context.RequiresCondition.matches(RequiresCondition.java:107)
at io.micronaut.context.AbstractBeanContextConditional.isEnabled(AbstractBeanContextConditional.java:50)
at io.micronaut.context.AbstractBeanDefinition.isEnabled(AbstractBeanDefinition.java:86)
at io.micronaut.context.DefaultBeanContext.lambda$findBeanCandidates$37(DefaultBeanContext.java:1701)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
at java.base/java.util.concurrent.ConcurrentLinkedQueue.forEachFrom(ConcurrentLinkedQueue.java:1037)
at java.base/java.util.concurrent.ConcurrentLinkedQueue$CLQSpliterator.forEachRemaining(ConcurrentLinkedQueue.java:894)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
at io.micronaut.context.DefaultBeanContext.findBeanCandidates(DefaultBeanContext.java:1702)
at io.micronaut.context.DefaultApplicationContext.findBeanCandidates(DefaultApplicationContext.java:225)
at io.micronaut.context.DefaultBeanContext.isCandidatePresent(DefaultBeanContext.java:2972)
at io.micronaut.context.DefaultBeanContext.containsBean(DefaultBeanContext.java:705)
at io.micronaut.context.BeanDefinitionRegistry.containsBean(BeanDefinitionRegistry.java:355)
at io.micronaut.context.RequiresCondition.matchesPresenceOfBeans(RequiresCondition.java:543)
at io.micronaut.context.RequiresCondition.processPostStartRequirements(RequiresCondition.java:211)
at io.micronaut.context.RequiresCondition.matches(RequiresCondition.java:107)
at io.micronaut.context.AbstractBeanContextConditional.isEnabled(AbstractBeanContextConditional.java:50)
at io.micronaut.context.AbstractBeanDefinition.isEnabled(AbstractBeanDefinition.java:86)
at io.micronaut.context.DefaultBeanContext.lambda$findBeanCandidates$37(DefaultBeanContext.java:1701)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
at java.base/java.util.concurrent.ConcurrentLinkedQueue.forEachFrom(ConcurrentLinkedQueue.java:1037)
at java.base/java.util.concurrent.ConcurrentLinkedQueue$CLQSpliterator.forEachRemaining(ConcurrentLinkedQueue.java:894)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
at io.micronaut.context.DefaultBeanContext.findBeanCandidates(DefaultBeanContext.java:1702)
at io.micronaut.context.DefaultApplicationContext.findBeanCandidates(DefaultApplicationContext.java:225)
at io.micronaut.context.DefaultBeanContext.isCandidatePresent(DefaultBeanContext.java:2972)
at io.micronaut.context.DefaultBeanContext.containsBean(DefaultBeanContext.java:705)
at io.micronaut.context.BeanDefinitionRegistry.containsBean(BeanDefinitionRegistry.java:355)
at io.micronaut.context.RequiresCondition.matchesPresenceOfBeans(RequiresCondition.java:543)
at io.micronaut.context.RequiresCondition.processPostStartRequirements(RequiresCondition.java:211)
at io.micronaut.context.RequiresCondition.matches(RequiresCondition.java:107)
at io.micronaut.context.AbstractBeanContextConditional.isEnabled(AbstractBeanContextConditional.java:50)
at io.micronaut.context.AbstractBeanDefinition.isEnabled(AbstractBeanDefinition.java:86)
at io.micronaut.context.DefaultBeanContext.lambda$findBeanCandidates$37(DefaultBeanContext.java:1701)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
at java.base/java.util.concurrent.ConcurrentLinkedQueue.forEachFrom(ConcurrentLinkedQueue.java:1037)
at java.base/java.util.concurrent.ConcurrentLinkedQueue$CLQSpliterator.forEachRemaining(ConcurrentLinkedQueue.java:894)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
at io.micronaut.context.DefaultBeanContext.findBeanCandidates(DefaultBeanContext.java:1702)
at io.micronaut.context.DefaultApplicationContext.findBeanCandidates(DefaultApplicationContext.java:225)
at io.micronaut.context.DefaultApplicationContext.transformIterables(DefaultApplicationContext.java:290)
at io.micronaut.context.DefaultApplicationContext.findBeanCandidates(DefaultApplicationContext.java:226)
at io.micronaut.context.DefaultBeanContext.isCandidatePresent(DefaultBeanContext.java:2972)
at io.micronaut.context.DefaultBeanContext.containsBean(DefaultBeanContext.java:705)
at io.micronaut.context.BeanDefinitionRegistry.containsBean(BeanDefinitionRegistry.java:355)
at io.micronaut.context.RequiresCondition.matchesPresenceOfBeans(RequiresCondition.java:543)
at io.micronaut.context.RequiresCondition.processPostStartRequirements(RequiresCondition.java:211)
at io.micronaut.context.RequiresCondition.matches(RequiresCondition.java:107)
at io.micronaut.context.AbstractBeanContextConditional.isEnabled(AbstractBeanContextConditional.java:50)
at io.micronaut.context.AbstractBeanDefinition.isEnabled(AbstractBeanDefinition.java:86)
at io.micronaut.context.DefaultBeanContext.lambda$findBeanCandidates$37(DefaultBeanContext.java:1701)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
at io.micronaut.context.DefaultBeanContext.findBeanCandidates(DefaultBeanContext.java:1702)
at io.micronaut.context.DefaultApplicationContext.findBeanCandidates(DefaultApplicationContext.java:225)
at io.micronaut.context.DefaultBeanContext.lambda$findBeanCandidatesInternal$66(DefaultBeanContext.java:2782)
at io.micronaut.core.util.clhm.ConcurrentLinkedHashMap.lambda$compute$0(ConcurrentLinkedHashMap.java:721)
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
at io.micronaut.core.util.clhm.ConcurrentLinkedHashMap.compute(ConcurrentLinkedHashMap.java:733)
at io.micronaut.core.util.clhm.ConcurrentLinkedHashMap.computeIfAbsent(ConcurrentLinkedHashMap.java:710)
at io.micronaut.context.DefaultBeanContext.findBeanCandidatesInternal(DefaultBeanContext.java:2782)
at io.micronaut.context.DefaultBeanContext.getBeansOfTypeInternal(DefaultBeanContext.java:2820)
at io.micronaut.context.DefaultBeanContext.getBeansOfType(DefaultBeanContext.java:1039)
at io.micronaut.context.AbstractBeanDefinition.lambda$getBeansOfTypeForConstructorArgument$9(AbstractBeanDefinition.java:1165)
at io.micronaut.context.AbstractBeanDefinition.resolveBeanWithGenericsFromConstructorArgument(AbstractBeanDefinition.java:1844)
at io.micronaut.context.AbstractBeanDefinition.getBeansOfTypeForConstructorArgument(AbstractBeanDefinition.java:1160)
at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:1009)
at io.micronaut.liquibase.$$LiquibaseMigrationRunnerDefinition$InterceptedDefinition.build(Unknown Source)
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1888)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingletonInternal(DefaultBeanContext.java:2630)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:2616)
at io.micronaut.context.DefaultBeanContext.initializeEventListeners(DefaultBeanContext.java:1435)
at io.micronaut.context.DefaultBeanContext.readAllBeanDefinitionClasses(DefaultBeanContext.java:2762)
at io.micronaut.context.DefaultBeanContext.start(DefaultBeanContext.java:227)
at io.micronaut.context.DefaultApplicationContext.start(DefaultApplicationContext.java:166)
at io.micronaut.test.extensions.AbstractMicronautExtension.startApplicationContext(AbstractMicronautExtension.java:305)
at io.micronaut.test.extensions.AbstractMicronautExtension.beforeClass(AbstractMicronautExtension.java:203)
at io.micronaut.test.extensions.junit5.MicronautJunit5Extension.beforeAll(MicronautJunit5Extension.java:51)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeBeforeAllCallbacks$7(ClassBasedTestDescriptor.java:359)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeBeforeAllCallbacks(ClassBasedTestDescriptor.java:359)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:189)
at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:78)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:132)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:102)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:82)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:78)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy5.stop(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:132)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:175)
at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:157)
at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.IllegalStateException: Recursive update
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1760)
at io.micronaut.core.util.clhm.ConcurrentLinkedHashMap.compute(ConcurrentLinkedHashMap.java:733)
at io.micronaut.core.util.clhm.ConcurrentLinkedHashMap.computeIfAbsent(ConcurrentLinkedHashMap.java:710)
at io.micronaut.context.DefaultBeanContext.findBeanCandidatesInternal(DefaultBeanContext.java:2782)
at io.micronaut.context.DefaultBeanContext.getBeansOfTypeInternal(DefaultBeanContext.java:2820)
at io.micronaut.context.DefaultBeanContext.getBeansOfType(DefaultBeanContext.java:1039)
at io.micronaut.context.AbstractBeanDefinition.lambda$getBeansOfTypeForConstructorArgument$9(AbstractBeanDefinition.java:1165)
at io.micronaut.context.AbstractBeanDefinition.resolveBeanWithGenericsFromConstructorArgument(AbstractBeanDefinition.java:1844)
at io.micronaut.context.AbstractBeanDefinition.getBeansOfTypeForConstructorArgument(AbstractBeanDefinition.java:1160)
at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:1012)
at io.micronaut.runtime.context.$CompositeMessageSourceDefinition.build(Unknown Source)
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1888)
... 208 more
I also find this problem. My test will have a certain chance of this error as same as above.
Environment Information
Operating System: Ubuntu 18.04
Micronaut Version: 2.0.0
JDK Version: 11.0.7
Junit5 with
testImplementation(platform("org.testcontainers:testcontainers-bom:1.14.3"))
testRuntimeOnly("org.testcontainers:mysql")
A PR has been submitted
Also suffered from this issue after upgrading to Micronaut 2.0.0. Errors occurred in about 30% of the time at startup of bean validation beans (both micronaut and hibernate validation was affected). The problem does not occur any longer after bumping Micronaut to the latest snapshot release: 2.0.1-BUILD-SNAPSHOT (from 2020-07-24).
Thanks for the feedback, 2.0.1 will be out soon the address the problem
I had tried using the 2.0.1.BUILD-SNAPSHOT last week and it was not stable enough to use (can't recall the issue) but it seems like just upgrading io.micronaut.liquibase:micronaut-liquibase to 2.0.1 startup is much more reliable, especially in Spock unit tests.
@safarmer if you are seeing issues with 2.0.1 snapshot I would suggest reporting them because 2.0.1 will soon be released
Thanks @graemerocher. After trying again, it seems like the issue I saw was a poorly written Spock test failing to compile under the new version of Micronaut. I am now running our development and sandbox environments on 2.0.1 to see if anything pops up.
Hi @jameskleeh Is it possible to get this fix ported to 1.3.x? We seem to be having this issue.
java.lang.IllegalStateException: Recursive update
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1739)
at io.micronaut.core.util.clhm.ConcurrentLinkedHashMap.compute(ConcurrentLinkedHashMap.java:733)
at io.micronaut.core.util.clhm.ConcurrentLinkedHashMap.computeIfAbsent(ConcurrentLinkedHashMap.java:710)
at io.micronaut.context.DefaultBeanContext.findBeanCandidatesInternal(DefaultBeanContext.java:2581)
at io.micronaut.context.DefaultBeanContext.getBeansOfTypeInternal(DefaultBeanContext.java:2619)
at io.micronaut.context.DefaultBeanContext.getBeansOfType(DefaultBeanContext.java:636)
at io.micronaut.context.DefaultBeanContext.publishEvent(DefaultBeanContext.java:1129)
at io.micronaut.http.server.netty.NettyHttpServer.fireStartupEvents(NettyHttpServer.java:507)
at io.micronaut.http.server.netty.NettyHttpServer.start(NettyHttpServer.java:378)
at io.micronaut.http.server.netty.NettyHttpServer.start(NettyHttpServer.java:96)
at io.micronaut.runtime.Micronaut.lambda$start$2(Micronaut.java:70)
at java.base/java.util.Optional.ifPresent(Optional.java:183)
at io.micronaut.runtime.Micronaut.start(Micronaut.java:68)
Is there any chance to submit similar fix for 1.3.x version ?
@bskinny @hgo We don't plan on releasing another 1.3.x version. It could be done as part of a commercial support contract however. Contact me on Gitter or email ([email protected]) if you're interested.