The GitHub Actions job "Code Style" on grails-core.git/feat/observation-route-uri has failed. Run started by GitHub user codeconsole (triggered by codeconsole).
Head commit for run: a28f6f9974df81949f5395b3bad596a5bd1de26e / Scott Murphy Heiberg <[email protected]> Observability: extract shared grails-observation foundation + add interceptor, databinding and convert spans Builds on the controller/render observations: extracts the duplicated convention boilerplate into a new leaf module and instruments three more Grails request-lifecycle phases on top of it, so a trace reads http(route) -> interceptor -> controller -> databinding -> {render -> gsp | convert(json/xml)}. New module `grails-observation` (org.apache.grails.observation): a micrometer-only leaf (no Grails deps, so GORM and GSP can reuse it later) holding the shared base — GrailsObservationContext, GrailsObservationConvention<C> (supportsContext by context type, the low-cardinality `error` key value, the null/empty fallback) and the shared `error` KeyName. Registered in settings.gradle and the publish-root-config.gradle publishedProjects list (required, or grails-publish never applies and configuration fails). The controller/render conventions (grails-web-common) are refactored onto the base, dropping their duplicated error/fallback logic and sharing the `error` KeyName. New spans — each a Context + Convention + default convention + ObservationDocumentation built on the shared base, NOOP-fast-pathed and fully guarded (never affect request handling): - grails.interceptor (grails-interceptors): one span per matched interceptor before()/after() callback, tagged grails.interceptor=<logical name> and grails.interceptor.phase. The adapter is made ObservationRegistry-aware; the boolean short-circuit/control flow is preserved. - grails.databinding (grails-web-databinding): wraps GrailsWebDataBinder.doBind, tagged grails.databinding.target; the registry is resolved from the GrailsApplication main context. - grails.convert (grails-converters): wraps JSON/XML.render(HttpServletResponse), which write straight to the response and bypass DispatcherServlet.render, tagged grails.convert.format. Converters are not Spring beans, so the registry rides the existing ConvertersConfigurationHolder (set once by ConvertersConfigurationInitializer). Convention specs cover the new conventions' tags, fallbacks, error capture and documentation wiring; the shared base is exercised through the existing controller/render spec. GORM (gorm.query/persist) and validate observations are deferred to follow-ups that reuse this foundation. Report URL: https://github.com/apache/grails-core/actions/runs/27862728399 With regards, GitHub Actions via GitBox
