- corosync-device-net as binary is gone. Replacement is
corosync-qdevice
- corosync-qdevice has support for multiple models (only net is
currently implemented)
- Completelly redesign qdevice-net main loop.
- Connect is non blocking
- Cmap and Votequorum events are handled even before connect to
qnetd. Algorithm gets send_node_list and vote set so it's not needed
to check connection status and also vote_timer is running and voting
until something changes (configuration or votequorum node list)
- If connect fails, algorithm_disconnected with new reason
CANT_CONNECT_TO_THE_SERVER is called
- Logging for qdevice is based on libqb logging functions. Also
logging configuration from corosync.conf is now used and dynamic
changes of configuration are handled.
- Added qdevice_net_algorithm_config_node_list_changed
- Changed qdevice_net_algorithm_votequorum_node_list_notify in respect
of adding send_node_list so it's similar to other functions.
Signed-off-by: Jan Friesse <jfriesse@redhat.com>
ring_id should only be copied into the client structure after the
algorithm has run (so the last one is also available), so fix the
algorithms to use the passed-in ring_id where available.
Also tidy some debug logging in algo-lms
Signed-off-by: Christine Caulfield <ccaulfie@redhat.com>
TAILQ_* doesn't have a safe iterator for use when freeing entries, so the
only safe way of doing it (without assuming implementation) is to
restart the iterator after freeing the structure.
Signed-off-by: Christine Caulfield <ccaulfie@redhat.com>
- Add support for cmap node list configuration change
- Add client side algorithms
- Check if currently received ring id in membership message
equals to last sent ring id
- Send config node list only if config node list really changes and not
after every reload
- Add tlv_ring_id_eq (replacing qnetd_algo_rings_eq) so it's usable in
client
- Move debug logs from algo-test into qnetd-log-debug.c and call them in
proper places (= logs are now algorithm independent)
- Fix memory leak in msg
Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Move several commonly used routines into their own
qnetd-algo-utils.[ch] files and change over to using
the ring_id held in the client structure rather than
managint it ourself.
Signed-off-by: Christine Caulfield <ccaulfie@redhat.com>
- Add option for forcing ip version 4 or 6
- Choose new default port. It's now 5403. Exactly one less than used by
corosync.
- Fix compiler warning
Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Tie-breaker can be used in algorithm to decide if algorithm should
prefer highest, lowest or some concrete node id.
Signed-off-by: Jan Friesse <jfriesse@redhat.com>
State used for informative only callbacks (quorum node list) and
possibly informative only callbacks (configuration node list). Client
doesn't change cast vote timer state.
Signed-off-by: Jan Friesse <jfriesse@redhat.com>
We were looking for us in other node lists, rather than
others in our nodelist.
Also, remove debug print in votequorum.c
Signed-off-by: Christine Caulfield <ccaulfie@redhat.com>
This patch tidies the two state change callbacks and explains them
in the man page:
The difference between votequorum_nodelist_notification_t and
votequorum_quorum_notification_t is subtle but important.
The 'nodelist' callback is sent at the start of a cluster state
transition and contains the new ring_id and only the list of
nodes that are included in the sync state - ie only active nodes. No
quorum information is included this callback because it is not
available at that time.
The 'quorum' callback is sent after the cluster state transition has
completed and does contain quorum information.
In addition, the nodelist contains a list of all nodes known to
votequorum (whether up or down) and their state as well
as information about the quorum device attached (if any). quorum
callbacks will not be sent for qdevice up and down
events unless they affect quorum.
Signed-off-by: Christine Caulfield <ccaulfie@redhat.com>
This split is needed for qdevice, so that it gets the ring_id and
nodelist as part of the sync process and not afterwards - when quorum
has been calculated.
As this is and unsupported API I'm not too worried about breaking
existing code - all the clients I know of are using the quorum API
anyway as they should be.
Signed-off-by: Christine Caulfield <ccaulfie@redhat.com>
- Add cast vote timer (qdevice-net now really votes)
- In sync phase it's impossible retreive cmap config version so it's no
longer sent in membership node list
- Refactor qdevice-net
Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Add the ring leader node_id to corosync_quorumtool. This is
only shown when votequorum is active
Signed-off-by: Christine Caulfield <ccaulfie@redhat.com>
- Location of certificates is now correctly set depending on operation
(qnetd/node)
- Added quick start mode
Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Put the algorithms into an array of structure pointers
(a bit like corosync services) so we can easily add more
without having huge switch statements.
I haven't added any code to the client end that parses the
name into the enum. Yet.
Signed-off-by: Christine Caulfield <ccaulfie@redhat.com>
- Move adding client to cluster to init phase instead of preinit
- Implement missing ask for vote and vote info messages
- Fix cluster name memory leak
- Refactor unexpected message handler to one generic function
- Move qnetd_client_send_err to new file
- Add qnetd_client_send_vote_info
Signed-off-by: Jan Friesse <jfriesse@redhat.com>
- Complete config and membership node list callbacks
- Add client disconnect callback
- Always send msg_seq_num in node list
- Store config and last membership node list
Signed-off-by: Jan Friesse <jfriesse@redhat.com>
corosync-quorumtool displays the votes of the qdevice whether
or not it is active. This is confusing because if it is not active
then the display looks like there is a vote being contributed to
quorum when there is not.
This patch displays 0 for qdevice votes if the device is present
(but inactive) and adds the votes after the name. If the device is
contributing votes then they are displayed as normal.
Signed-off-by: Christine Caulfield <ccaulfie@redhat.com>