You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Daniel Kulp (Jira)" <ji...@apache.org> on 2022/05/10 18:45:00 UTC

[jira] [Resolved] (CXF-8702) Graceful shutdown : Error 404 with "Can't find the request for XXXXX's Observer" on - Springboot + CXF Server

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

Daniel Kulp resolved CXF-8702.
------------------------------
    Fix Version/s: 3.5.3
         Assignee: Daniel Kulp
       Resolution: Fixed

> Graceful shutdown : Error 404 with "Can't find the request for XXXXX's Observer" on - Springboot + CXF Server
> -------------------------------------------------------------------------------------------------------------
>
>                 Key: CXF-8702
>                 URL: https://issues.apache.org/jira/browse/CXF-8702
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 3.5.2
>            Reporter: Thomas MAUGIN
>            Assignee: Daniel Kulp
>            Priority: Major
>             Fix For: 3.5.3
>
>         Attachments: cxf-shutdown.zip, flood_requests.jmx
>
>
> h2. General Description :
> Issue happens on all our Springboot (tomcat) + CXF app.
> Spring boot version : 2.4.13 (same on 2.6.7) / CXF version : 3.5.1 (same on 3.4.4, 3.5.2)
> Java 1.8.0_312 and Java 11.0.15
>  
> Integration is done with {{org.apache.cxf.cxf-spring-boot-starter-jaxrs-3.5.1.jar}} and {{org.apache.cxf.cxf-spring-boot-autoconfigure-3.5.1.jar}}
>  
> On each graceful shutdown that is happening under a moderate load, a few requests are being rejected in 404 by the service.
> The corresponding log is {{"Can't find the request for XXXXX's Observer"}} XXXXX is the full request that has been rejected.
> The http response body answer for the call is {{<html><body>No service was found.</body></html>}}
> h2. Integration :
>  
> CXF server is started like this :
>  
> {code:java}
>     @Bean
>     public Server flowManagementServiceRsServer() {
>         final JAXRSServerFactoryBean endpoint = new JAXRSServerFactoryBean();
>         endpoint.setBus(bus);
>         endpoint.setAddress("/");
>         endpoint.setServiceBean(new Service());
>         return endpoint.create();
>     }
> {code}
>  
> Shutdown is managed by spring boot with "new" graceful shutdown {{server.shutdown=graceful}} and {{spring.lifecycle.timeout-per-shutdown-phase=25s}}
>  
> h2. Reproduction :
> Having a performance test on an endpoint (for example [http://localhost:8080/services/request]) and stopping gracefully, the app allow to reproduce the issue at will.
> See cxf-shutdown.zip project to reproduce.
>  
> Use the following command just before trying to shutdown :
> {code:java}
> seq 1 2000 | xargs -I $ -n1 -P10  curl [http://127.0.0.1:8080/services/request]
> {code}
>  Or see the JMeter project to do the same.
> h2. Logs and trace :
> {code:java}
>  
>   .   ____          _            __ _ _
>  /
> / __{_}'{_} __ _ {_}({_})_ __  __ _ \ \ \ \
> ( ( )___ | '_ | '{_}| | '{_} \/ _` | \ \ \ \
>  
> /  __{_})| |{_})| | | | | || (_| |  ) ) ) )
>   '  |___{_}| .{_}{_}|{_}| |{_}|{_}| |{_}_{_}, | / / / /
>  =========|{_}|==============|{_}_{_}/=/{_}/{_}/{_}/
>  :: Spring Boot ::                (v2.6.7)
> 2022-05-09 18:00:05.456  INFO 706858 — [           main] org.example.Application                  : Starting Application using Java 11.0.15 on LT-XXX with PID 706858 (/home/user/workspace/git/cxf-shutdown/target/classes started by user in /home/user/workspace/git/cxf-shutdown)
> 2022-05-09 18:00:05.459  INFO 706858 — [           main] org.example.Application                  : No active profile set, falling back to 1 default profile: "default"
> 2022-05-09 18:00:06.719  INFO 706858 — [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
> 2022-05-09 18:00:06.728  INFO 706858 — [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
> 2022-05-09 18:00:06.729  INFO 706858 — [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.62]
> 2022-05-09 18:00:06.795  INFO 706858 — [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
> 2022-05-09 18:00:06.795  INFO 706858 — [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1285 ms
> 2022-05-09 18:00:07.042  INFO 706858 — [           main] org.apache.cxf.endpoint.ServerImpl       : Setting the server's publish address to be /
> 2022-05-09 18:00:07.400  INFO 706858 — [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
> 2022-05-09 18:00:07.444  INFO 706858 — [           main] org.example.Application                  : Started Application in 2.393 seconds (JVM running for 3.103)
> 2022-05-09 18:00:18.867  INFO 706858 — [ionShutdownHook] o.s.b.w.e.tomcat.GracefulShutdown        : Commencing graceful shutdown. Waiting for active requests to complete
> 2022-05-09 18:00:18.867  WARN 706858 — [io-8080-exec-10] o.a.c.t.servlet.ServletController        : Can't find the request for [http://127.0.0.1:8080/services/request's] Observer
> 2022-05-09 18:00:18.873  INFO 706858 — [tomcat-shutdown] o.s.b.w.e.tomcat.GracefulShutdown        : Graceful shutdown complete
> Process finished with exit code 130 (interrupted by signal 2: SIGINT)
> {code}



--
This message was sent by Atlassian Jira
(v8.20.7#820007)