Benjamin Marwell created CXF-9245:
-------------------------------------
Summary: 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
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)