1
0
mirror of https://github.com/codership/wsrep-lib.git synced 2025-07-28 20:02:00 +03:00

- Initialize member cluster ID only on connection to cluster and forget

it on disconnect.
 - Don't rely on own index from the view because the view may come from
   another member (IST/SST), instead always determine own index from own ID.

Refs codership/wsrep-lib#13
This commit is contained in:
Alexey Yurchenko
2018-11-06 15:21:48 +02:00
parent a942811ce7
commit ea9971d54b
13 changed files with 185 additions and 52 deletions

View File

@ -32,11 +32,12 @@ namespace
{
replicating_client_fixture_sync_rm()
: server_service(sc)
, sc("s1", "s1", wsrep::server_state::rm_sync, server_service)
, sc("s1", wsrep::server_state::rm_sync, server_service)
, cc(sc, wsrep::client_id(1),
wsrep::client_state::m_local)
, tc(cc.transaction())
{
sc.mock_connect();
cc.open(cc.id());
BOOST_REQUIRE(cc.before_command() == 0);
BOOST_REQUIRE(cc.before_statement() == 0);
@ -54,11 +55,12 @@ namespace
{
replicating_client_fixture_async_rm()
: server_service(sc)
, sc("s1", "s1", wsrep::server_state::rm_async, server_service)
, sc("s1", wsrep::server_state::rm_async, server_service)
, cc(sc, wsrep::client_id(1),
wsrep::client_state::m_local)
, tc(cc.transaction())
{
sc.mock_connect();
cc.open(cc.id());
BOOST_REQUIRE(cc.before_command() == 0);
BOOST_REQUIRE(cc.before_statement() == 0);
@ -76,11 +78,12 @@ namespace
{
replicating_client_fixture_2pc()
: server_service(sc)
, sc("s1", "s1", wsrep::server_state::rm_sync, server_service)
, sc("s1", wsrep::server_state::rm_sync, server_service)
, cc(sc, wsrep::client_id(1),
wsrep::client_state::m_local)
, tc(cc.transaction())
{
sc.mock_connect();
cc.open(cc.id());
cc.do_2pc_ = true;
BOOST_REQUIRE(cc.before_command() == 0);
@ -99,11 +102,12 @@ namespace
{
replicating_client_fixture_autocommit()
: server_service(sc)
, sc("s1", "s1", wsrep::server_state::rm_sync, server_service)
, sc("s1", wsrep::server_state::rm_sync, server_service)
, cc(sc, wsrep::client_id(1),
wsrep::client_state::m_local)
, tc(cc.transaction())
{
sc.mock_connect();
cc.open(cc.id());
cc.is_autocommit_ = true;
BOOST_REQUIRE(cc.before_command() == 0);
@ -122,13 +126,14 @@ namespace
{
applying_client_fixture()
: server_service(sc)
, sc("s1", "s1",
, sc("s1",
wsrep::server_state::rm_async, server_service)
, cc(sc,
wsrep::client_id(1),
wsrep::client_state::m_high_priority)
, tc(cc.transaction())
{
sc.mock_connect();
cc.open(cc.id());
BOOST_REQUIRE(cc.before_command() == 0);
BOOST_REQUIRE(cc.before_statement() == 0);
@ -155,13 +160,14 @@ namespace
{
applying_client_fixture_2pc()
: server_service(sc)
, sc("s1", "s1",
, sc("s1",
wsrep::server_state::rm_async, server_service)
, cc(sc,
wsrep::client_id(1),
wsrep::client_state::m_high_priority)
, tc(cc.transaction())
{
sc.mock_connect();
cc.open(cc.id());
cc.do_2pc_ = true;
BOOST_REQUIRE(cc.before_command() == 0);
@ -189,12 +195,13 @@ namespace
{
streaming_client_fixture_row()
: server_service(sc)
, sc("s1", "s1", wsrep::server_state::rm_sync, server_service)
, sc("s1", wsrep::server_state::rm_sync, server_service)
, cc(sc,
wsrep::client_id(1),
wsrep::client_state::m_local)
, tc(cc.transaction())
{
sc.mock_connect();
cc.open(cc.id());
BOOST_REQUIRE(cc.before_command() == 0);
BOOST_REQUIRE(cc.before_statement() == 0);
@ -214,12 +221,13 @@ namespace
{
streaming_client_fixture_byte()
: server_service(sc)
, sc("s1", "s1", wsrep::server_state::rm_sync, server_service)
, sc("s1", wsrep::server_state::rm_sync, server_service)
, cc(sc,
wsrep::client_id(1),
wsrep::client_state::m_local)
, tc(cc.transaction())
{
sc.mock_connect();
cc.open(cc.id());
BOOST_REQUIRE(cc.before_command() == 0);
BOOST_REQUIRE(cc.before_statement() == 0);
@ -238,12 +246,13 @@ namespace
{
streaming_client_fixture_statement()
: server_service(sc)
, sc("s1", "s1", wsrep::server_state::rm_sync, server_service)
, sc("s1", wsrep::server_state::rm_sync, server_service)
, cc(sc,
wsrep::client_id(1),
wsrep::client_state::m_local)
, tc(cc.transaction())
{
sc.mock_connect();
cc.open(cc.id());
BOOST_REQUIRE(cc.before_command() == 0);
BOOST_REQUIRE(cc.before_statement() == 0);