Previous versions of JBoss EAP 6 contained inefficiencies in the audit logging of management operations executed during server boot:
- Boot operations use special facilities that allow them to execute in parallel. The audit logging facility was not properly accounting for this leading to disorganized and confused logs.
- Log records that were queued pending execution of the operation that enables audit logging were flushed from the queue before execution of the operations that handle adding log handlers. These records did not appear in any log.
The consequences of these issues included the following:
- Logs for operations that occurred prior to the addition of audit log handlers were not recorded.
- Extension add operations were not logged.
- Internal execution details were logged that should not have been, giving the appearance that some operations executed twice.
- Parallel boot operations were not organized to reflect the logical stream of operations that come from the XML parsers, but instead were logged in per-subsystem chunks, with the chunks randomly ordered.
In this release of the product, queued log records are not flushed until any log handlers are given a chance to be installed and the way in which tracking events to log has been made more sophisticated, allowing proper tracking of the parallel execution of operations that occur during boot.
All operations that occur during boot are now recorded, without any extraneous internal details of their executing being included. Operations are coherently organized into the two groups that reflect how the server fundamentally organizes boot. The operations that execute in parallel during boot are reported in the order in which they were originally provided by the XML parser.
There are a number of problems with logging boot ops in the audit log:
1) Log records that are queued pending the op that executes to enable audit logging are flushed from the queue before the ops that handles adding log handlers. So the records are flushed to nowhere and don't end up in the log.
2) Extension add ops are dropped.
3) Steps that occur in the RUNTIME stage are logged and they should not be, as they are internal details.
4) Parallel boot ops (i.e. the subsystem stuff) are logged separately.
Verified in EAP 6.3.0.ER4.