Author: fschumacher Date: Sun Feb 1 15:38:42 2015 New Revision: 1656319 URL: http://svn.apache.org/r1656319 Log: Guard the digester with its own lock object. Otherwise two threads could create two digester instances, lock on them and then use still the same one at the same time. Remove the now unneeded volatile marker from digester. Issue reported by Coverity Scan.
Modified: tomcat/trunk/java/org/apache/tomcat/util/modeler/modules/MbeansDescriptorsDigesterSource.java Modified: tomcat/trunk/java/org/apache/tomcat/util/modeler/modules/MbeansDescriptorsDigesterSource.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/modeler/modules/MbeansDescriptorsDigesterSource.java?rev=1656319&r1=1656318&r2=1656319&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/modeler/modules/MbeansDescriptorsDigesterSource.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/modeler/modules/MbeansDescriptorsDigesterSource.java Sun Feb 1 15:38:42 2015 @@ -36,10 +36,11 @@ public class MbeansDescriptorsDigesterSo { private static final Log log = LogFactory.getLog(MbeansDescriptorsDigesterSource.class); + private static final Object dLock = new Object(); private Registry registry; private final List<ObjectName> mbeans = new ArrayList<>(); - private static volatile Digester digester = null; + private static Digester digester = null; private static Digester createDigester() { @@ -156,12 +157,11 @@ public class MbeansDescriptorsDigesterSo InputStream stream = (InputStream) source; - if (digester == null) { - digester = createDigester(); - } ArrayList<ManagedBean> loadedMbeans = new ArrayList<>(); - - synchronized (digester) { + synchronized(dLock) { + if (digester == null) { + digester = createDigester(); + } // Process the input file to configure our registry try { --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org