anchor.diff:    io.aeron.cluster.ClusterTool node0/consensus-module list-members
   ----
   
  -This will show a list of all of the members in the cluster, similar to the following:
  +This will show a list of all the members in the cluster, similar to the following:
   
   ----
   currentTimeNs=1579564309666000000, leaderMemberId=0, memberId=0, activeMembers=[ClusterMember{isBallotSent=false,
  
positive.code: onSessionOpen(ClientSession{id=2, responseStreamId=102, responseChannel='aeron:udp?endpoint=localhost:19132', encodedPrincipal=[], clusteredServiceAgent=io.aeron.cluster.service.ClusteredServiceAgent@19a05123, responsePublication=null, isClosing=false})
  ----
  
  You can see that the new node looks like it is re-executing application messages.  That is because it is.  It is
  replaying the log of the messages that have been sent into the cluster up to this point in order to restore its
  in-memory to what it was before the failure.
  
  === Snapshots
  
  Earlier in the tutorial we looked at how a node can store a snapshot of its current state so that it would not need to
  replay every single application message since the beginning of time.  We can look at the recording log for a node to see
  the logs and the snapshots that are stored for a node in the cluster.  We can also use the tools to trigger a snapshot.
  
  Firstly lets look at the recording log.
  
  
negative.code: include::{sampleSourceDir}/io/aeron/samples/tutorial/cluster/BasicAuctionClusteredServiceNode.java[tag=consensus_module]
  ----
  
  This is first of the two configuration sections that specific to Cluster. The Consensus Module is responsible for
  handling the main aspects of the Raft protocol, e.g. leader election, ensuring consensus-based consistency of the data
  in the log and passing properly replicated messages onto the Cluster Container.
  
  <1> Each Consensus Module needs an identifier within the Cluster, we are going to use the `nodeId` that we have used to
  separate each of the nodes.
  
  <2> This is probably the trickiest part of the configuration. It specifies all the static members of the cluster
  along with all the endpoints that they require for the various operations of the Consensus Module. These are encoded
  into a single string of the form.
  +
  ----
  