#19554·kestra

fix(system): Netty queue metrics binder disabled pending upstream micronaut-micrometer fix

Author: loicmathieuCreated Sep 17, 2026Updated Sep 17, 2026
Labelsarea/backendkind/cooldown

Summary

micronaut.metrics.binders.netty.queues.enabled is set to false in cli/src/main/resources/application.yml, disabling the Netty event-loop task-queue metrics binder. It must stay off on Micronaut 5 until the upstream bug is fixed, or the app fails to start.

Background

While migrating to Micronaut 5 (#18138), enabling this binder (the default before the migration) made the app fail to boot with:

java.util.NoSuchElementException: No matching transport was found. Configured transports are [nio], available transports are [instrumentedNioEventLoopGroupFactory]

Root cause: micronaut-micrometer-core's InstrumentedNioEventLoopGroupFactory replaces Micronaut's own NioEventLoopGroupFactory bean (@Replaces(bean = NioEventLoopGroupFactory.class)) but never redeclares the @Named("nio") qualifier the original bean carries. Its sibling classes (InstrumentedEpollEventLoopGroupFactory, InstrumentedKQueueEventLoopGroupFactory) both explicitly redeclare their qualifier (@Named(EventLoopGroupFactory.NATIVE)); only the NIO one omits it. Micronaut 5's DefaultEventLoopGroupFactory looks transports up by qualifier name in a Map<String, EventLoopGroupFactory>, so the "nio" entry is simply missing and startup aborts.

This was already reported and closed upstream as micronaut-projects/micronaut-micrometer#1058, fixed by #1051 — but that PR only landed on the 5.13.x branch. The 6.0.x line (the one Micronaut 5's platform BOM actually manages — micronaut-micrometer-core:6.0.2, released 2026-08-28) never got the backport; I verified this directly by extracting the 6.0.2 sources jar and confirming InstrumentedNioEventLoopGroupFactory is unchanged and still missing the qualifier. Commented with this evidence on the upstream issue.

What's blocked on upstream vs. what Kestra could do independently

This is purely an upstream dependency-injection bug; Kestra cannot fix it locally beyond disabling the metric. Once micronaut-micrometer backports/releases the fix on the 6.0.x line and our platform BOM picks it up, queues.enabled can be flipped back to true.

Current state

cli/src/main/resources/application.yml:

yaml
micronaut:
  metrics:
    binders:
      netty:
        queues:
          enabled: false

with a comment pointing at the qualifier mismatch. Re-enable once micronaut-micrometer ships the fix on a 6.x release and Kestra's platform BOM is bumped to it.