From 2950958f35de1a6d5a265017c5111f640b9887aa Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Thu, 28 Mar 2019 16:16:37 +0100 Subject: [PATCH] Fix ConcurrentModificationException on Undertow This commit fixes a ConcurrentModificationException that occurs when requesting a nonexistant route. Closes gh-22698 --- .../web/servlet/function/DefaultServerRequest.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultServerRequest.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultServerRequest.java index 505cb4b1dd..225099947b 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultServerRequest.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultServerRequest.java @@ -27,7 +27,6 @@ import java.util.AbstractMap; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.Enumeration; import java.util.List; import java.util.Locale; import java.util.Map; @@ -372,11 +371,8 @@ class DefaultServerRequest implements ServerRequest { @Override public void clear() { - Enumeration attributeNames = this.servletRequest.getAttributeNames(); - while (attributeNames.hasMoreElements()) { - String name = attributeNames.nextElement(); - this.servletRequest.removeAttribute(name); - } + List attributeNames = Collections.list(this.servletRequest.getAttributeNames()); + attributeNames.forEach(this.servletRequest::removeAttribute); } @NotNull