jackson-modules-base icon indicating copy to clipboard operation
jackson-modules-base copied to clipboard

Unable to use Blackbird with Micronaut

Open loicmathieu opened this issue 2 months ago • 6 comments

It's impossible to use the Blackbird module with Micronaut, it generates an exception.

The Micronaut team reports the issue may be inside Jackson itself, see https://github.com/micronaut-projects/micronaut-core/issues/11253

Reference stacktrace:

io.micronaut.context.exceptions.BeanInstantiationException: Error instantiating bean of type  [io.micronaut.http.server.RouteExecutor]

Path Taken:
@i.m.c.a.Primary @j.i.Singleton i.m.h.s.n.NettyEmbeddedServer i.m.h.s.n.DefaultNettyEmbeddedServerFactory.buildDefaultServer#buildDefaultServer(NettyHttpServerConfiguration configuration)
\---> new i.m.h.s.n.DefaultNettyEmbeddedServerFactory(ApplicationContext applicationContext, [RouteExecutor routeExecutor], MediaTypeCodecRegistry mediaTypeCodecRegistry, MessageBodyHandlerRegistry messageBodyHandlerRegistry, StaticResourceResolver staticResourceResolver, @Named("netty") ThreadFactory nettyThreadFactory, HttpCompressionStrategy httpCompressionStrategy, EventLoopGroupFactory eventLoopGroupFactory, EventLoopGroupRegistry eventLoopGroupRegistry, WebSocketUpgradeHandlerFactory webSocketUpgradeHandlerFactory)
      \---> new @j.i.Singleton i.m.h.s.RouteExecutor([Router router], BeanContext beanContext, RequestArgumentSatisfier requestArgumentSatisfier, HttpServerConfiguration serverConfiguration, ErrorResponseProcessor<Object> errorResponseProcessor, ExecutorSelector executorSelector)
	at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2352)
	at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:3150)
	at io.micronaut.context.SingletonScope.getOrCreate(SingletonScope.java:80)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:3000)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2762)
	at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1781)
	at io.micronaut.context.AbstractBeanResolutionContext.getBean(AbstractBeanResolutionContext.java:210)
	at io.micronaut.context.AbstractInitializableBeanDefinition.resolveBean(AbstractInitializableBeanDefinition.java:2130)
	at io.micronaut.context.AbstractInitializableBeanDefinition.getBeanForConstructorArgument(AbstractInitializableBeanDefinition.java:1360)
	at io.micronaut.http.server.$RouteExecutor$Definition.instantiate(Unknown Source)
	at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2337)
	at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:3150)
	at io.micronaut.context.SingletonScope.getOrCreate(SingletonScope.java:80)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:3000)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2762)
	at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1781)
	at io.micronaut.context.AbstractBeanResolutionContext.getBean(AbstractBeanResolutionContext.java:210)
	at io.micronaut.context.AbstractInitializableBeanDefinition.resolveBean(AbstractInitializableBeanDefinition.java:2130)
	at io.micronaut.context.AbstractInitializableBeanDefinition.getBeanForConstructorArgument(AbstractInitializableBeanDefinition.java:1360)
	at io.micronaut.http.server.netty.$DefaultNettyEmbeddedServerFactory$Definition.instantiate(Unknown Source)
	at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2337)
	at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:3150)
	at io.micronaut.context.SingletonScope.getOrCreate(SingletonScope.java:80)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:3000)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2762)
	at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1781)
	at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1763)
	at io.micronaut.http.server.netty.$DefaultNettyEmbeddedServerFactory$BuildDefaultServer0$Definition.instantiate(Unknown Source)
	at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2337)
	at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:3150)
	at io.micronaut.context.SingletonScope.getOrCreate(SingletonScope.java:80)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:3000)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2762)
	at io.micronaut.context.DefaultBeanContext.findBean(DefaultBeanContext.java:1844)
	at io.micronaut.context.DefaultBeanContext.findBean(DefaultBeanContext.java:1819)
	at io.micronaut.context.DefaultBeanContext.findBean(DefaultBeanContext.java:871)
	at io.micronaut.context.BeanLocator.findBean(BeanLocator.java:410)
	at io.kestra.cli.AbstractCommand.startWebserver(AbstractCommand.java:201)
	at io.kestra.cli.AbstractCommand.call(AbstractCommand.java:107)
	at io.kestra.cli.commands.servers.AbstractServerCommand.call(AbstractServerCommand.java:15)
	at io.kestra.cli.commands.servers.StandAloneCommand.call(StandAloneCommand.java:100)
	at io.kestra.cli.commands.servers.StandAloneCommand.call(StandAloneCommand.java:24)
	at picocli.CommandLine.executeUserObject(CommandLine.java:2031)
	at picocli.CommandLine.access$1500(CommandLine.java:148)
	at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2469)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2461)
	at picocli.CommandLine$RunLast.handle(CommandLine.java:2423)
	at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
	at picocli.CommandLine$RunLast.execute(CommandLine.java:2425)
	at picocli.CommandLine.execute(CommandLine.java:2174)
	at io.kestra.cli.App.execute(App.java:71)
	at io.kestra.ee.cli.App.main(App.java:26)
Caused by: java.lang.UnsupportedOperationException
	at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142)
	at java.base/java.util.ImmutableCollections$ListItr.set(ImmutableCollections.java:426)
	at com.fasterxml.jackson.module.blackbird.ser.BBSerializerModifier.createProperty(BBSerializerModifier.java:155)
	at com.fasterxml.jackson.module.blackbird.ser.BBSerializerModifier.lambda$findProperties$0(BBSerializerModifier.java:69)
Caused by: java.lang.UnsupportedOperationException

	at com.fasterxml.jackson.module.blackbird.util.Unchecked.lambda$runnable$0(Unchecked.java:31)
	at com.fasterxml.jackson.module.blackbird.ser.BBSerializerModifier.findProperties(BBSerializerModifier.java:70)
	at com.fasterxml.jackson.module.blackbird.ser.BBSerializerModifier.changeProperties(BBSerializerModifier.java:54)
	at com.fasterxml.jackson.databind.ser.BeanSerializerFactory.constructBeanOrAddOnSerializer(BeanSerializerFactory.java:418)
	at com.fasterxml.jackson.databind.ser.BeanSerializerFactory.findBeanOrAddOnSerializer(BeanSerializerFactory.java:292)
	at com.fasterxml.jackson.databind.ser.BeanSerializerFactory._createSerializer2(BeanSerializerFactory.java:237)
	at com.fasterxml.jackson.databind.ser.BeanSerializerFactory.createSerializer(BeanSerializerFactory.java:171)
	at com.fasterxml.jackson.databind.SerializerProvider._createUntypedSerializer(SerializerProvider.java:1554)
	at com.fasterxml.jackson.databind.SerializerProvider._createAndCacheUntypedSerializer(SerializerProvider.java:1522)
	at com.fasterxml.jackson.databind.SerializerProvider.findContentValueSerializer(SerializerProvider.java:794)
	at com.fasterxml.jackson.databind.ser.std.AsArraySerializerBase.createContextual(AsArraySerializerBase.java:206)
	at com.fasterxml.jackson.databind.SerializerProvider.handleSecondaryContextualization(SerializerProvider.java:1156)
	at com.fasterxml.jackson.databind.SerializerProvider.findValueSerializer(SerializerProvider.java:638)
	at com.fasterxml.jackson.databind.SerializerProvider.findTypedValueSerializer(SerializerProvider.java:914)
	at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.forRootType(ObjectWriter.java:1551)
	at com.fasterxml.jackson.databind.ObjectWriter.<init>(ObjectWriter.java:116)
	at com.fasterxml.jackson.databind.ObjectMapper._newWriter(ObjectMapper.java:841)
	at com.fasterxml.jackson.databind.ObjectMapper.writerFor(ObjectMapper.java:4281)
	at io.micronaut.jackson.databind.JacksonDatabindMapper.createWriter(JacksonDatabindMapper.java:168)
	at io.micronaut.jackson.databind.JacksonDatabindMapper.<init>(JacksonDatabindMapper.java:114)
	at io.micronaut.jackson.databind.JacksonDatabindMapper.createSpecific(JacksonDatabindMapper.java:132)
	at io.micronaut.json.body.JsonMessageHandler.createSpecific(JsonMessageHandler.java:102)
	at io.micronaut.http.netty.body.NettyJsonHandler.createSpecific(NettyJsonHandler.java:142)
	at io.micronaut.web.router.DefaultRouteInfo.lambda$new$0(DefaultRouteInfo.java:98)
	at java.base/java.util.Optional.map(Optional.java:260)
	at io.micronaut.web.router.DefaultRouteInfo.<init>(DefaultRouteInfo.java:98)
	at io.micronaut.web.router.DefaultMethodBasedRouteInfo.<init>(DefaultMethodBasedRouteInfo.java:75)
	at io.micronaut.web.router.DefaultRequestMatcher.<init>(DefaultRequestMatcher.java:51)
	at io.micronaut.web.router.DefaultUrlRouteInfo.<init>(DefaultUrlRouteInfo.java:76)
	at io.micronaut.web.router.DefaultRouteBuilder$DefaultUriRoute.toRouteInfo(DefaultRouteBuilder.java:872)
	at io.micronaut.web.router.DefaultRouter.<init>(DefaultRouter.java:111)
	at io.kestra.webserver.rooting.TenantAliasingRooter.<init>(TenantAliasingRooter.java:30)
	at io.kestra.ee.webserver.rooting.TenantAliasingRooterEE.<init>(TenantAliasingRooterEE.java:21)
	at io.kestra.ee.webserver.rooting.$TenantAliasingRooterEE$Definition.instantiate(Unknown Source)
	at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2337)
	... 51 more

loicmathieu avatar Sep 22 '25 08:09 loicmathieu