The GitHub Actions job "CI" on grails-core.git/feat/observation-route-uri has 
failed.
Run started by GitHub user codeconsole (triggered by codeconsole).

Head commit for run:
7664d69a7506fff9581816c745919a690b150d8c / 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/27877412252

With regards,
GitHub Actions via GitBox

Reply via email to