Locking issues when prudent logging to a (windows) clustered storage device on 
owner-switch
-------------------------------------------------------------------------------------------

                 Key: LBCORE-168
                 URL: http://jira.qos.ch/browse/LBCORE-168
             Project: logback-core
          Issue Type: Bug
          Components: Appender
    Affects Versions: 0.9.24
         Environment: Windows Server 2003 Enterprise edition
            Reporter: alex
            Assignee: Logback dev list
            Priority: Blocker


We have a clustered windows environment (2 nodes) and each node is logging to 
the same file which is stored on a clustered storage device (prudent is set to 
true)
Logging works great until we switch the owner of the storage device where the 
logs are being written to at which point one of two things happens:
- one or both servers go into a sort of deadlock state, meaning the code that 
logs just hangs indefinatly. it seems the safeWrite() in FileAppender may be to 
blame because of the "lock()" statement (note that a jvm reboot will fix this 
problem). I have been able to reproduce this locked state and verify that it is 
the lock() by trying to get a lock on the log file in the same jvm but without 
using logback code. This code will hang as well.
- if there is no deadlock, any log written after the switch will just vanish 
into thin air (I have no idea where the outputstream points to when you start 
switching the owner)

I have no idea how this can be fixed without resorting to a reload/reboot of 
our servers (which is not an option in production).

We used to log synchronously, but then each thread that called logback would 
hang resulting in a massive amount of idling threads, so now we log 
asynchronously (this was already an option in the system we built around it) 
which gives us one advantage: we never write concurrently to the same file, 
although different nodes may write serially.
As a temporary work around I am thinking to implement a simple appender that 
opens/closes the outputstream for each write (performance is less of an issue) 
and that does not implement locking.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.qos.ch/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        
_______________________________________________
logback-dev mailing list
[email protected]
http://qos.ch/mailman/listinfo/logback-dev

Reply via email to