Journaling

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.

Note

Note

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 https://docs.openstack.org/networking-odl/latest/contributor/drivers_architecture.html.

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