From fcaf42507a2e8750a5e7318ba6c9a0ec68f872bb Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Tue, 14 Feb 2017 12:10:00 +0100 Subject: [PATCH] Synchronise PathPatternParser access This commit adds a synchronized block around the PathPatternParser, since it is not thread-safe. --- .../web/reactive/function/server/RequestPredicates.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RequestPredicates.java b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RequestPredicates.java index 3d64a2aac57..ced3a433651 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RequestPredicates.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RequestPredicates.java @@ -77,7 +77,7 @@ public abstract class RequestPredicates { */ public static RequestPredicate path(String pattern) { Assert.notNull(pattern, "'pattern' must not be null"); - return new PathPatternPredicate(DEFAULT_PATTERN_PARSER.parse(pattern)); + return pathPredicates(DEFAULT_PATTERN_PARSER).apply(pattern); } /** @@ -91,7 +91,11 @@ public abstract class RequestPredicates { */ public static Function pathPredicates(PathPatternParser patternParser) { Assert.notNull(patternParser, "'patternParser' must not be null"); - return pattern -> new PathPatternPredicate(patternParser.parse(pattern)); + return pattern -> { + synchronized (patternParser) { + return new PathPatternPredicate(patternParser.parse(pattern)); + } + }; } /**