]
James Perkins moved WFLY-4178 to WFCORE-481:
--------------------------------------------
Project: WildFly Core (was: WildFly)
Key: WFCORE-481 (was: WFLY-4178)
Affects Version/s: (was: 8.0.0.Final)
Component/s: Logging
(was: Logging)
Logging async-handler improvement - report number dropped logs
--------------------------------------------------------------
Key: WFCORE-481
URL:
https://issues.jboss.org/browse/WFCORE-481
Project: WildFly Core
Issue Type: Enhancement
Components: Logging
Reporter: Todd Sandor
Assignee: James Perkins
The functional requirement is to know when logs are discarded and the number of logs
discarded.
When using a async-handler such as the one below, we do not know if/when logs are
discarded, thousands could be dropped and we do not know it.
<async-handler name="ASYNC">
<queue-length value="300000"/>
<overflow-action value="discard"/>
<subhandlers>
<handler name="FILE"/>
</subhandlers>
</async-handler>
Potential solution/suggestion:
Add a new property, call it max-discard-logs, with a default value of 1 - uses existing
behavior when = 1 (when queue full, drop any new log).
When > 1 and queue is full, at least max-discard-logs logs are removed from the queue
and display a log indicating the queue is full an N logs were dropped.
<async-handler name="ASYNC">
<queue-length value="300000"/>
<overflow-action value="discard"/>
<max-discard-logs value="1000"/>
<subhandlers>
<handler name="FILE"/>
</subhandlers>
</async-handler>
Depending upon the type of queue being used in the implementation, this could be a very
simple change.
e.g
https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQu...
int drainTo(Collection<? super E> c, int maxElements)
Removes at most the given number of available elements from this queue and adds them to
the given collection.