[
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)