[ 
https://issues.apache.org/jira/browse/CXF-9206?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18066105#comment-18066105
 ] 

Andriy Redko commented on CXF-9206:
-----------------------------------

[~ffang] could you please take a look? Seems like related to CXF-9177

> Duplicated value of 'cxf.server.requests' metric for JAX RS Server
> ------------------------------------------------------------------
>
>                 Key: CXF-9206
>                 URL: https://issues.apache.org/jira/browse/CXF-9206
>             Project: CXF
>          Issue Type: Bug
>    Affects Versions: 4.2.0
>            Reporter: Rafal
>            Priority: Major
>         Attachments: image-2026-03-16-14-21-21-480.png
>
>
> After upgrading from CXF 4.1.3 with Spring Boot 3 to CXF 4.2.0 with Spring 
> Boot 4, my test on CXF metrics detected that metric 'cxf.server.requests' in 
> Micrometer for JAX RS Server has duplicated value.
> I am creating server with below method:
> {code:java}
> @Bean
> Server rsServer(Bus bus, MetricsProvider metricsProvider) {
>     JAXRSServerFactoryBean jaxrsServerFactoryBean = new 
> JAXRSServerFactoryBean();
>     jaxrsServerFactoryBean.setBus(bus);
>     jaxrsServerFactoryBean.setServiceClass(HelloServiceRSImpl.class);
>     jaxrsServerFactoryBean.setServiceBeans(Arrays.asList(new 
> HelloServiceRSImpl()));
>     jaxrsServerFactoryBean.setAddress("/");
>     jaxrsServerFactoryBean.setFeatures(Arrays.asList(new 
> MetricsFeature(metricsProvider)));
>     return jaxrsServerFactoryBean.create();
> }{code}
> I am sending request to it with:
> {code:java}
> HelloServiceRsApi helloClientRsApi(String clientHost, int clientPort) {
>     JAXRSClientFactoryBean jaxRsFactory = new JAXRSClientFactoryBean();
>     jaxRsFactory.setServiceClass(HelloServiceRsApi.class);
>     jaxRsFactory.setHeaders(Collections.singletonMap("accept", 
> "application/json"));
>     jaxRsFactory.setAddress("http://"; + clientHost + ":" + clientPort + 
> "/services/helloservice");
>     jaxRsFactory.setFeatures(Arrays.asList(new 
> MetricsFeature(metricsProvider)));
>     return (HelloServiceRsApi) jaxRsFactory.create();
> }
> String response = helloClientRsApi(host, port).sayHello(name); {code}
>  
> Looks like the duplicated value is causes by the fact, that for each request 
> both 
> MicrometerMetricsProvider.createEndpointContext and 
> MicrometerMetricsProvider.createResourceContext are invoked, each of them 
> creating 1 
> MetricsContext. 
>  
> Each MetricsContext is later iterated on in ExchangeMetrics and is 
> incrementing cxf.server.requests metric once, together causing increase by 2.
> !image-2026-03-16-14-21-21-480.png!
> Probably that commit caused this behavior: 
> [https://github.com/apache/cxf/commit/de39a250d855ecb16211a26e4ab4ecd6e84722bf#diff-306b2aab603fd7c61099a626fde8707930f31e22cc6c5e492ee021e685730768]
>  
> The problem does *not* occur for Jax WS Server:
> {code:java}
> @Bean
> Server wsServer(Bus bus, MetricsProvider metricsProvider) {
>     JaxWsServerFactoryBean jaxWsServerFactoryBean = new 
> JaxWsServerFactoryBean();
>     jaxWsServerFactoryBean.setBus(bus);
>     jaxWsServerFactoryBean.setServiceClass(HelloServiceWSImpl.class);
>     jaxWsServerFactoryBean.setAddress("/Hello");
>     jaxWsServerFactoryBean.setServiceBean(new HelloServiceWSImpl());
>     jaxWsServerFactoryBean.setFeatures(Arrays.asList(new 
> MetricsFeature(metricsProvider)));
>     return jaxWsServerFactoryBean.create();
> }{code}
>  



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

Reply via email to