Re: Race condition stopping context

2014-12-19 Thread Remko Popma
We used to have this problem in older versions but these issues have been 
addressed in 2.1 as far as I know. Which version are you using? 

Sent from my iPhone

 On 2014/12/19, at 22:01, Mariano Gonzalez mariano.l.gonza...@gmail.com 
 wrote:
 
 Hello,
 
 I have an application in which I'm using all async loggers. When I stop the
 LoggerContext, there're still some events waiting in disruptor's buffer and
 when it tries to execute them the context is already closed and thus those
 events are lost.
 
 Is there some kind of hook, callback or whatever I can use so that when the
 context is stopped:
 
 
   - the loggers stop accepting new messages
   - the context waits for disruptor's buffer to be empty before actually
   stopping
 
 
 Thanks

-
To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-user-h...@logging.apache.org



Re: Race condition stopping context

2014-12-19 Thread Mariano Gonzalez
Hello Remko,

I'm using 2.1. Any pointers ?

On Fri, Dec 19, 2014 at 11:20 AM, Remko Popma remko.po...@gmail.com wrote:

 We used to have this problem in older versions but these issues have been
 addressed in 2.1 as far as I know. Which version are you using?

 Sent from my iPhone

  On 2014/12/19, at 22:01, Mariano Gonzalez mariano.l.gonza...@gmail.com
 wrote:
 
  Hello,
 
  I have an application in which I'm using all async loggers. When I stop
 the
  LoggerContext, there're still some events waiting in disruptor's buffer
 and
  when it tries to execute them the context is already closed and thus
 those
  events are lost.
 
  Is there some kind of hook, callback or whatever I can use so that when
 the
  context is stopped:
 
 
- the loggers stop accepting new messages
- the context waits for disruptor's buffer to be empty before actually
stopping
 
 
  Thanks

 -
 To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
 For additional commands, e-mail: log4j-user-h...@logging.apache.org




Re: Race condition stopping context

2014-12-19 Thread Mariano Gonzalez
Hello,

I've been taking a look at LoggerContext#stop() and for what I see there's
code to prevent disruptor to take new messages but there's nothing making
sure that the ring buffer is empty before actually closing up.

I did a simple test with an Appender wrapper like this:

final class StopConditionSafeAppenderWrapper extends BaseAppenderWrapper
{
private final LoggerContext loggerContext;

StopConditionSafeAppenderWrapper(Appender delegate, LoggerContext
loggerContext)
{
super(delegate);
this.loggerContext = loggerContext;
}

@Override
public void append(LogEvent event)
{
if (!loggerContext.isStarted()) {
 return;
}

super.append(event);
}
}

Using this appender wrapper I still get the same error, because at the time
that append was closed the context was started but by the time disruptor
processed it it was already stopped (this I could verify with a debugger).

Should I open a bug? Any workaround you could suggest?

Thanks!