Skip to content

Frequently Asked Questions

Richard Warburton edited this page Sep 19, 2016 · 13 revisions

How do I easily see the internal messages and debug things?

You can switch on debug logging by passing the following commandline parameter: -Dfix.core.debug=true

You control the Aeron client in the , so how do I alter its configuration options?

If you want to configure the channel through which the Library and Engine talk to each other then you can set the aeronChannel configuration property, if you want more detailed configuration then both the Library and Engine have an aeronContext configuration property.

What are these Engine, Library and Media Driver processes that you refer to?

See the Key Concepts page.

How can I control the replication of messages in a cluster?

In a cluster by default all messages are replicated throughout the cluster. This replication system is a derivative of Raft and provides a linearizable log of the messages.

You can implement a custom SessionReplicationStrategy in order to determine on a session-by-session basis whether the messages of a given session are replicated. If a session's messages isn't replicated they will only be sent out by a node that considers itself to be the leader. However because we don't wait for an acknowledgement before reading or writing the non-replicated messages there is no guarantee that a quorum of cluster members consider this node to be the leader.

How do I know what the leader of the cluster is?

You can register an implementation of the RoleHandler interface on the FixEngine. This will receive callbacks when a node transitions to a leader, follower or candidate. A node that used to be the leader but which has been netsplit can believe that it is still the leader until it re-establishes contact with the rest of the cluster. So the node that is the leader is the one that has the most recent onTransitionToLeader callback invoked. Ordering is defined by the leadershipTerm. If you are communicating with an external system from several nodes (for example updating a virtual IP address that is pointing at the leader) then this ordering can be used to disambiguate out of order messages.

Do you make any assumptions about the hardware that you're running on?

We don't checksum in flight messages, which means that any non-ECC memory is vulnerable to message corruption.

Clone this wiki locally