You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "Vladimir Hudec (JIRA)" <ji...@apache.org> on 2015/12/22 13:13:46 UTC

[jira] [Created] (LOG4J2-1230) Concatenated SYSLOG Messages

Vladimir Hudec created LOG4J2-1230:
--------------------------------------

             Summary: Concatenated SYSLOG Messages
                 Key: LOG4J2-1230
                 URL: https://issues.apache.org/jira/browse/LOG4J2-1230
             Project: Log4j 2
          Issue Type: Bug
          Components: Core
    Affects Versions: 2.5
         Environment: Linux, Java7, WebLogic 12
            Reporter: Vladimir Hudec


Under heavy traffic load several SYSLOG messages can be concatenated, which is not correct.

The problem is, several threads in AbstractOutputStreamAppender can reach in the next code write() before one thread reaches flush() (the readLock.lock() is not lock at all)

    @Override
    public void append(final LogEvent event) {
        readLock.lock();
        try {
            final byte[] bytes = getLayout().toByteArray(event);
            if (bytes.length > 0) {
                manager.write(bytes);
                if (this.immediateFlush || event.isEndOfBatch()) {
                    manager.flush();
                }
            }
        } catch (final AppenderLoggingException ex) {
            error("Unable to write to stream " + manager.getName() + " for appender " + getName());
            throw ex;
        } finally {
            readLock.unlock();
        }
    }
 
In DatagramOutputStream all messages are cumulated in instance variable 
    private byte[] data;

Synchronized methods don't help and in this case the synchronization in DatagramOutputStream is useless, as the correct synchronization should be provided in AbstractOutputStreamAppender.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org