The journal maintains a list of operations that occurred on Neutron and should be mirrored to the controller.

The journal entry is recorded in the pre-commit phase (when applicable) so that when a commit failure occurs, the journal entry and the original operation are deleted.

The journal is processed mainly by a journaling thread that runs periodically and checks whether the journal table has any entries that need to be processed. The thread is triggered in the post-commit phase of the operation (when applicable).

Take create network as an example. After it is stored in the Neutron DB by the ML2 plugin, the EFA mechanism driver stores a journal entry representing that operation and triggers the journaling thread to take care of the entry.



Journaling is available for the ML2 plugin and Layer 3 plugin.
The Journaling feature delivers additional capabilities:
  • EFA reachability and early failure of OpenStack commands.
  • A periodic thread updates the reachability of EFA in the Neutron database. This periodic thread runs every 150 seconds, by default, and it is user configurable via the efa_status_interval field in the ml2_extreme_conf file. If EFA reachability is down, then the driver does not queue the operations into the journal and the corresponding operation is returned as failed.
  • EFA errors are classified as non-retriable and retriable, based on the error code. If the errors are non-retriable, the journal entries are marked as FAILED immediately, without retrying. Currently, except for the connectivity and authorization issue, all other EFA errors are considered as non-retriable.
  • If the parent entry moves to FAILED state, then all the dependent entries will also be marked as FAILED there by avoiding unnecessary processing.
  • Dependencies for a new journal entry are created at the time of recording with the pending and processing entries in the journal. While a journal entry is being processed, if the parent entry failed, the child entry is made to fail immediately, without trying to process.

For more information, see

Several commands are available for journaling.
  • efa-journal list
  • efa-journal reset
  • efa-journal clear
For more information, see EFA OpenStack Service Command Reference.