Author: violetagg
Date: Fri Oct 23 18:36:17 2015
New Revision: 1710277

URL: http://svn.apache.org/viewvc?rev=1710277&view=rev
Log:
Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=58522
Fixed concurrency issue when iterating web application's resources.

Modified:
    tomcat/tc7.0.x/trunk/java/org/apache/naming/resources/WARDirContext.java
    tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/naming/resources/WARDirContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/naming/resources/WARDirContext.java?rev=1710277&r1=1710276&r2=1710277&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/naming/resources/WARDirContext.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/naming/resources/WARDirContext.java 
Fri Oct 23 18:36:17 2015
@@ -760,7 +760,6 @@ public class WARDirContext extends BaseD
         
         ArrayList<NamingEntry> entries = new ArrayList<NamingEntry>();
         Entry[] children = entry.getChildren();
-        Arrays.sort(children);
         NamingEntry namingEntry = null;
         
         for (int i = 0; i < children.length; i++) {
@@ -811,6 +810,9 @@ public class WARDirContext extends BaseD
         protected Entry children[] = new Entry[0];
         
         
+        protected volatile boolean childrenSorted = false;
+
+
         // ----------------------------------------------------- Public Methods
         
         
@@ -849,10 +851,19 @@ public class WARDirContext extends BaseD
                 newChildren[i] = children[i];
             newChildren[children.length] = entry;
             children = newChildren;
+            childrenSorted = false;
         }
 
 
         public Entry[] getChildren() {
+            if (!childrenSorted) {
+                synchronized (children) {
+                    if (!childrenSorted) {
+                        Arrays.sort(children);
+                        childrenSorted = true;
+                    }
+                }
+            }
             return children;
         }
 

Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1710277&r1=1710276&r2=1710277&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Fri Oct 23 18:36:17 2015
@@ -58,6 +58,14 @@
   issues do not "pop up" wrt. others).
 -->
 <section name="Tomcat 7.0.66 (violetagg)">
+  <subsection name="Catalina">
+    <changelog>
+      <fix>
+        <bug>58522</bug>: Fixed concurrency issue when iterating web
+        application's resources. (violetagg)
+      </fix>
+    </changelog>
+  </subsection>
   <subsection name="Cluster">
     <changelog>
       <fix>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to