![]() |
MySQL 8.0.43
Source Code Documentation
|
The set of expels we have issued but that have not yet taken effect. More...
#include <gcs_xcom_expels_in_progress.h>
Public Member Functions | |
| Gcs_xcom_expels_in_progress ()=default | |
| Gcs_xcom_expels_in_progress (Gcs_xcom_expels_in_progress const &)=default | |
| Gcs_xcom_expels_in_progress (Gcs_xcom_expels_in_progress &&)=default | |
| Gcs_xcom_expels_in_progress & | operator= (Gcs_xcom_expels_in_progress const &)=default |
| Gcs_xcom_expels_in_progress & | operator= (Gcs_xcom_expels_in_progress &&)=default |
| void | remember_expels_issued (synode_no const config_id_where_expels_were_issued, Gcs_xcom_nodes const &expels_issued) |
Keep track of members we expelled expels_issued together with the XCom configuration config_id_where_expels_were_issued that triggered the expel. More... | |
| void | forget_expels_that_have_taken_effect (synode_no const config_id_where_members_under_effect, std::vector< Gcs_member_identifier * > const &members_under_effect) |
Forget about any expel we issued for the members that have taken effect in the XCom configuration identified by config_id_where_members_under_effect. More... | |
| std::size_t | number_of_expels_not_about_suspects (std::vector< Gcs_member_identifier * > const &suspected_members, std::vector< Gcs_member_identifier * > const &suspected_nonmembers) const |
| How many of the expels in progress do not pertain to suspected nodes. More... | |
| bool | all_still_in_view (Gcs_xcom_nodes const &xcom_nodes) const |
Whether all expels in progress are for members in xcom_nodes. More... | |
| std::size_t | size () const |
| How many expels are in progress. More... | |
| bool | contains (Gcs_member_identifier const &member, synode_no const synode) const |
Whether there is an expel in progress for member issued during the XCom configuration identified by synode. More... | |
| bool | contains (Gcs_member_identifier const &member) const |
Whether there is an expel in progress for member issued. More... | |
Private Attributes | |
| std::vector< std::pair< Gcs_member_identifier, synode_no > > | m_expels_in_progress |
The set of expels we have issued but that have not yet taken effect.
An expel is identified as the pair (m, c), which means that we expelled the member m based on view(s) pertaining to the XCom configuration/membership c.
Whenever we issue the expel of some member m, we take note in this structure; see remember_expels_issued.
Whenever we process a view where some member m that we have expelled is no longer present, we remove m from this structure; see forget_expels_that_have_taken_effect.
Please note that we keep track of the configuration ID c where we expelled m to guard against the possibility of removing m from this structure due to receiving a view "from the past," e.g. receiving a view from configuration b < c where m is not a member, after having expelled m due to views from configuration c. It is unclear whether XCom can sometimes deliver views "from the past," so we account for this situation by only removing m from this structure if we receive a view from a configuration d > c where m is no longer present.
|
default |
|
default |
|
default |
| bool Gcs_xcom_expels_in_progress::all_still_in_view | ( | Gcs_xcom_nodes const & | xcom_nodes | ) | const |
Whether all expels in progress are for members in xcom_nodes.
| xcom_nodes | XCom view |
| true | if all expels in progress are for members in xcom_nodes |
| false | otherwise |
| bool Gcs_xcom_expels_in_progress::contains | ( | Gcs_member_identifier const & | member | ) | const |
Whether there is an expel in progress for member issued.
| member | member to check |
| true | there is an expel in progress for member |
| false | otherwise |
| bool Gcs_xcom_expels_in_progress::contains | ( | Gcs_member_identifier const & | member, |
| synode_no const | synode | ||
| ) | const |
Whether there is an expel in progress for member issued during the XCom configuration identified by synode.
| member | member to check |
| synode | XCom configuration to check |
| true | there is an expel in progress for member issued during the configuration identified by synode |
| false | otherwise |
| void Gcs_xcom_expels_in_progress::forget_expels_that_have_taken_effect | ( | synode_no const | config_id_where_members_under_effect, |
| std::vector< Gcs_member_identifier * > const & | members_under_effect | ||
| ) |
Forget about any expel we issued for the members that have taken effect in the XCom configuration identified by config_id_where_members_under_effect.
| config_id_where_members_under_effect | XCom configuration where the nodes that have left or rejoined |
| members_under_effect | nodes that have left or rejoined |
| std::size_t Gcs_xcom_expels_in_progress::number_of_expels_not_about_suspects | ( | std::vector< Gcs_member_identifier * > const & | suspected_members, |
| std::vector< Gcs_member_identifier * > const & | suspected_nonmembers | ||
| ) | const |
How many of the expels in progress do not pertain to suspected nodes.
| suspected_members | suspected nodes that are members in the current GCS view |
| suspected_nonmembers | suspected nodes that are not yet members in the current GCS view |
|
default |
|
default |
| void Gcs_xcom_expels_in_progress::remember_expels_issued | ( | synode_no const | config_id_where_expels_were_issued, |
| Gcs_xcom_nodes const & | expels_issued | ||
| ) |
Keep track of members we expelled expels_issued together with the XCom configuration config_id_where_expels_were_issued that triggered the expel.
| config_id_where_expels_were_issued | XCom configuration that triggered the expel |
| expels_issued | members expelled |
| std::size_t Gcs_xcom_expels_in_progress::size | ( | ) | const |
How many expels are in progress.
|
private |