forward port commit 1752405 to trunk using
    svn merge -c1752405 ^/tiles/framework/branches/TILES_3_0_X .

TILES-585 – Definition cascade attributes duplicated values under high load


git-svn-id: https://svn.apache.org/repos/asf/tiles/framework/trunk@1752407 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java b/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java
index cee95a3..20f13db 100644
--- a/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java
+++ b/tiles-core/src/main/java/org/apache/tiles/definition/dao/CachingLocaleUrlDefinitionDAO.java
@@ -167,6 +167,11 @@
      * @since 2.1.0
      */
     protected synchronized Map<String, Definition> checkAndloadDefinitions(Locale customizationKey) {
+        Map<String, Definition> existingDefinitions = locale2definitionMap.get(customizationKey);
+        boolean definitionsAlreadyLoaded = existingDefinitions != null;
+        if (definitionsAlreadyLoaded) {
+            return existingDefinitions;
+        }
         if (checkRefresh && refreshRequired()) {
             locale2definitionMap.clear();
             definitionResolver.clearPatternPaths(customizationKey);