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!