Author: markt
Date: Sun Aug  7 10:47:38 2011
New Revision: 1154691

URL: http://svn.apache.org/viewvc?rev=1154691&view=rev
Log:
Correctly nest locks and unlocks to resolve FindBugs warning

Modified:
    tomcat/trunk/java/org/apache/juli/FileHandler.java

Modified: tomcat/trunk/java/org/apache/juli/FileHandler.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/juli/FileHandler.java?rev=1154691&r1=1154690&r2=1154691&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/juli/FileHandler.java (original)
+++ tomcat/trunk/java/org/apache/juli/FileHandler.java Sun Aug  7 10:47:38 2011
@@ -172,29 +172,29 @@ public class FileHandler
         String tsString = ts.toString().substring(0, 19);
         String tsDate = tsString.substring(0, 10);
 
-        writerLock.readLock().lock();
         try {
+            writerLock.readLock().lock();
             // If the date has changed, switch log files
             if (rotatable && !date.equals(tsDate)) {
-                // Update to writeLock before we switch
-                writerLock.readLock().unlock();
-                writerLock.writeLock().lock();
-
-                // Make sure another thread hasn't already done this
-                if (!date.equals(tsDate)) {
-                    closeWriter();
-                    date = tsDate;
-                    openWriter();
+                try {
+                    // Update to writeLock before we switch
+                    writerLock.readLock().unlock();
+                    writerLock.writeLock().lock();
+    
+                    // Make sure another thread hasn't already done this
+                    if (!date.equals(tsDate)) {
+                        closeWriter();
+                        date = tsDate;
+                        openWriter();
+                    }
+                } finally {
+                    writerLock.writeLock().unlock();
+                    // Down grade to read-lock. This ensures the writer 
remains valid
+                    // until the log message is written
+                    writerLock.readLock().lock();
                 }
-                // Down grade to read-lock. This ensures the writer remains 
valid
-                // until the log message is written
-                writerLock.readLock().lock();
             }
-        } finally {
-            writerLock.writeLock().unlock();
-        }
 
-        try {
             String result = null;
             try {
                 result = getFormatter().format(record);



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

Reply via email to