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

Andriy Redko reassigned CXF-9245:
---------------------------------

    Assignee: Andriy Redko

> Race Condition in ServerLifeCycleManagerImpl#stopServer()
> ---------------------------------------------------------
>
>                 Key: CXF-9245
>                 URL: https://issues.apache.org/jira/browse/CXF-9245
>             Project: CXF
>          Issue Type: Bug
>          Components: Core
>            Reporter: Benjamin Marwell
>            Assignee: Andriy Redko
>            Priority: Major
>
> Current code:
> {code:java}
> public class ServerLifeCycleManagerImpl implements ServerLifeCycleManager, 
> BusExtension {
>     private CopyOnWriteArrayList<ServerLifeCycleListener> listeners =
>             new CopyOnWriteArrayList<>();
>     public void stopServer(Server server) {
>         ListIterator<ServerLifeCycleListener> li = 
> listeners.listIterator(listeners.size()); // this is line 66
>         while (li.hasPrevious()) {
>             li.previous().stopServer(server);
>         }
>     }
> {code}
> listeners might get modified on shutdown, which leads to:
> {code}
> java.lang.IndexOutOfBoundsException: Index: 3, Size: 2
>  at 
> java.base/java.util.concurrent.CopyOnWriteArrayList.listIterator(CopyOnWriteArrayList.java:1151)
>  at 
> org.apache.cxf.bus.managers.ServerLifeCycleManagerImpl.stopServer(ServerLifeCycleManagerImpl.java:66)
>  at org.apache.cxf.endpoint.ServerImpl.stop(ServerImpl.java:177)
> {code}
> Also see code snippet by Romain in #CXF on slack



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

Reply via email to