[ 
https://issues.apache.org/jira/browse/CAMEL-24116?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen resolved CAMEL-24116.
---------------------------------
    Resolution: Fixed

> camel-rest-openapi: RestOpenApiProcessor doInit/doStop are dead code since 
> the advice conversion (CAMEL-22742) - services never stopped, stale 
> platform-http registrations on route reload
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-24116
>                 URL: https://issues.apache.org/jira/browse/CAMEL-24116
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-rest-openapi
>    Affects Versions: 4.21.0
>            Reporter: Federico Mariani
>            Assignee: Claus Ibsen
>            Priority: Major
>              Labels: code-review
>             Fix For: 4.22.0
>
>
> h3. Problem
> Commit bd63a7eb8213 (CAMEL-22742) moved {{RestOpenApiProcessor}} out of the 
> consumer's processor chain into {{RestOpenApiProcessorAdvice}} added via 
> {{ip.addAdvice(...)}} (RestOpenApiEndpoint.java:233-246). Previously 
> {{DefaultConsumer}} drove the processor's lifecycle; advices get no lifecycle 
> management, and nothing else builds/inits/starts/stops the processor as a 
> service (verified: no {{ServiceHelper}} call on it anywhere in the endpoint). 
> Consequences:
> * {{doInit()}} ({{trySetCamelContext(restOpenapiProcessorStrategy, ...)}}, 
> RestOpenApiProcessor.java:146-149) never runs. The default strategy was 
> compensated in the same commit ({{RestOpenApiComponent.doInit}}), but a 
> *custom* {{restOpenapiProcessorStrategy=#myStrategy}} (documented advanced 
> option) that is not context-injected by its registry NPEs in 
> {{validateOpenApi}} at {{camelContext.getRoutes()}}.
> * {{doStop()}} (RestOpenApiProcessor.java:258-268) never runs anywhere: the 
> per-operation {{RestBindingAdvice}} services and the strategy are never 
> stopped - {{DefaultRestOpenapiProcessorStrategy.doStop}} (producer-cache stop 
> + {{PlatformHttpComponent.removeHttpEndpoint(uris)}}) is unreachable.
> h3. Failure scenario
> Stopping or removing a rest-openapi route leaks the producer cache and leaves 
> stale HTTP endpoint registrations in {{PlatformHttpComponent}} (visible in 
> the dev console/registry, re-registered as duplicates on each route reload, 
> e.g. camel-jbang {{--dev}}).
> h3. Fix direction
> Have the endpoint/consumer own the processor as a child service 
> ({{ServiceHelper.initService/stopService}} wired from the consumer), or give 
> {{RestOpenApiProcessorAdvice}} the advice-service pattern and register it 
> with the consumer.
> ----
> _This issue was researched and filed by Claude Code on behalf of [~croway] 
> (GitHub: Croway), as part of a deep code review of camel-rest-openapi and 
> camel-openapi-java on main (4.22.0-SNAPSHOT). Full findings document 
> available on request._



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to