[logback-dev] [JIRA] Commented: (LBCORE-58) AppenderBase doAppend is synchronized causing significant performance problems when calling appenders.

Ceki Gulcu (JIRA) noreply-jira at qos.ch
Tue Oct 14 20:13:21 CEST 2008


    [ http://jira.qos.ch/browse/LBCORE-58?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=10767#action_10767 ] 

Ceki Gulcu commented on LBCORE-58:
----------------------------------

Current code in AppenderBase "forces" the doAppend method to be
synchronized, "liberating" derived appenders from worrying about
synchronization. Hypothetically speaking, an appender could ignore
AppenderBase and just implement the Appender interface on its own.

Although I like your patch, I am also a little worried that developers
(including myself) will forget to perform proper synchronization in
new appenders. Nevertheless, I also agree that synchronization in
doAppend method imposes too many restrictions on derived appenders.

As a test case, I suggest SocketAppender which does not have a layout
(one less component to worry about) and is very closely related to bug
LBCLASSIC-35. Can you think of an approach which would solve
LBCLASSIC-35 in presence of a very very very slow socket server?



> AppenderBase doAppend is synchronized causing significant performance problems when calling appenders.
> ------------------------------------------------------------------------------------------------------
>
>                 Key: LBCORE-58
>                 URL: http://jira.qos.ch/browse/LBCORE-58
>             Project: logback-core
>          Issue Type: Bug
>          Components: Appender
>    Affects Versions: 0.9.10
>         Environment: All
>            Reporter: Ralph Goers
>            Assignee: Ceki Gulcu
>         Attachments: appenderlock.txt
>
>
> Slow appenders cause Logback to be a significant bottleneck in the system.  AppenderBase doAppend is synchronized to allow Appenders to be threadsafe. This is an extremely poor way to accomplish that. Many Appenders are slow since they are dealing with I/O of some kind but may be thread safe. Where they are not they should deal with the issue at the smallest granularity possible. AppenderBase must be changed to not be synchronized and any Appenders that are not thread safe should be modified appropriately.

-- 
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

        


More information about the logback-dev mailing list