mirror of
https://github.com/codership/wsrep-lib.git
synced 2025-07-27 09:01:50 +03:00
Work around GCC 12 warning of uninitialized use
Use pointers to pass state objects to service constructors to work around GCC 12 warning error: member ‘wsrep::mock_storage_service::client_state_’ is used uninitialized
This commit is contained in:
@ -108,7 +108,6 @@ wsrep::view db::storage_engine::get_view() const
|
|||||||
|
|
||||||
void db::storage_engine::validate_position(const wsrep::gtid& gtid) const
|
void db::storage_engine::validate_position(const wsrep::gtid& gtid) const
|
||||||
{
|
{
|
||||||
using std::rel_ops::operator<=;
|
|
||||||
if (position_.id() == gtid.id() && gtid.seqno() <= position_.seqno())
|
if (position_.id() == gtid.id() && gtid.seqno() <= position_.seqno())
|
||||||
{
|
{
|
||||||
std::ostringstream os;
|
std::ostringstream os;
|
||||||
|
@ -22,10 +22,12 @@
|
|||||||
#include "wsrep/logger.hpp"
|
#include "wsrep/logger.hpp"
|
||||||
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
#include <cstdint>
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <atomic>
|
#include <atomic>
|
||||||
|
#include <array>
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
|
@ -553,8 +553,7 @@ namespace wsrep
|
|||||||
return state(lock);
|
return state(lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
enum state state(wsrep::unique_lock<wsrep::mutex>&
|
enum state state(wsrep::unique_lock<wsrep::mutex>& lock) const;
|
||||||
lock WSREP_UNUSED) const;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get provider status variables.
|
* Get provider status variables.
|
||||||
|
@ -165,7 +165,7 @@ namespace wsrep
|
|||||||
void cleanup();
|
void cleanup();
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void check_fragment_seqno(wsrep::seqno seqno WSREP_UNUSED);
|
void check_fragment_seqno(wsrep::seqno seqno);
|
||||||
|
|
||||||
size_t fragments_certified_;
|
size_t fragments_certified_;
|
||||||
std::vector<wsrep::seqno> fragments_;
|
std::vector<wsrep::seqno> fragments_;
|
||||||
|
@ -31,7 +31,7 @@ namespace
|
|||||||
struct replicating_client_fixture_sync_rm
|
struct replicating_client_fixture_sync_rm
|
||||||
{
|
{
|
||||||
replicating_client_fixture_sync_rm()
|
replicating_client_fixture_sync_rm()
|
||||||
: server_service(sc)
|
: server_service(&sc)
|
||||||
, sc("s1", wsrep::server_state::rm_sync, server_service)
|
, sc("s1", wsrep::server_state::rm_sync, server_service)
|
||||||
, cc(sc, wsrep::client_id(1),
|
, cc(sc, wsrep::client_id(1),
|
||||||
wsrep::client_state::m_local)
|
wsrep::client_state::m_local)
|
||||||
@ -54,7 +54,7 @@ namespace
|
|||||||
struct replicating_two_clients_fixture_sync_rm
|
struct replicating_two_clients_fixture_sync_rm
|
||||||
{
|
{
|
||||||
replicating_two_clients_fixture_sync_rm()
|
replicating_two_clients_fixture_sync_rm()
|
||||||
: server_service(sc)
|
: server_service(&sc)
|
||||||
, sc("s1", wsrep::server_state::rm_sync, server_service)
|
, sc("s1", wsrep::server_state::rm_sync, server_service)
|
||||||
, cc1(sc, wsrep::client_id(1),
|
, cc1(sc, wsrep::client_id(1),
|
||||||
wsrep::client_state::m_local)
|
wsrep::client_state::m_local)
|
||||||
@ -83,7 +83,7 @@ namespace
|
|||||||
struct replicating_client_fixture_async_rm
|
struct replicating_client_fixture_async_rm
|
||||||
{
|
{
|
||||||
replicating_client_fixture_async_rm()
|
replicating_client_fixture_async_rm()
|
||||||
: server_service(sc)
|
: server_service(&sc)
|
||||||
, sc("s1", wsrep::server_state::rm_async, server_service)
|
, sc("s1", wsrep::server_state::rm_async, server_service)
|
||||||
, cc(sc, wsrep::client_id(1),
|
, cc(sc, wsrep::client_id(1),
|
||||||
wsrep::client_state::m_local)
|
wsrep::client_state::m_local)
|
||||||
@ -106,7 +106,7 @@ namespace
|
|||||||
struct replicating_client_fixture_2pc
|
struct replicating_client_fixture_2pc
|
||||||
{
|
{
|
||||||
replicating_client_fixture_2pc()
|
replicating_client_fixture_2pc()
|
||||||
: server_service(sc)
|
: server_service(&sc)
|
||||||
, sc("s1", wsrep::server_state::rm_sync, server_service)
|
, sc("s1", wsrep::server_state::rm_sync, server_service)
|
||||||
, cc(sc, wsrep::client_id(1),
|
, cc(sc, wsrep::client_id(1),
|
||||||
wsrep::client_state::m_local)
|
wsrep::client_state::m_local)
|
||||||
@ -130,7 +130,7 @@ namespace
|
|||||||
struct replicating_client_fixture_autocommit
|
struct replicating_client_fixture_autocommit
|
||||||
{
|
{
|
||||||
replicating_client_fixture_autocommit()
|
replicating_client_fixture_autocommit()
|
||||||
: server_service(sc)
|
: server_service(&sc)
|
||||||
, sc("s1", wsrep::server_state::rm_sync, server_service)
|
, sc("s1", wsrep::server_state::rm_sync, server_service)
|
||||||
, cc(sc, wsrep::client_id(1),
|
, cc(sc, wsrep::client_id(1),
|
||||||
wsrep::client_state::m_local)
|
wsrep::client_state::m_local)
|
||||||
@ -154,7 +154,7 @@ namespace
|
|||||||
struct applying_client_fixture
|
struct applying_client_fixture
|
||||||
{
|
{
|
||||||
applying_client_fixture()
|
applying_client_fixture()
|
||||||
: server_service(sc)
|
: server_service(&sc)
|
||||||
, sc("s1",
|
, sc("s1",
|
||||||
wsrep::server_state::rm_async, server_service)
|
wsrep::server_state::rm_async, server_service)
|
||||||
, cc(sc,
|
, cc(sc,
|
||||||
@ -193,7 +193,7 @@ namespace
|
|||||||
struct applying_client_fixture_2pc
|
struct applying_client_fixture_2pc
|
||||||
{
|
{
|
||||||
applying_client_fixture_2pc()
|
applying_client_fixture_2pc()
|
||||||
: server_service(sc)
|
: server_service(&sc)
|
||||||
, sc("s1",
|
, sc("s1",
|
||||||
wsrep::server_state::rm_async, server_service)
|
wsrep::server_state::rm_async, server_service)
|
||||||
, cc(sc,
|
, cc(sc,
|
||||||
@ -228,7 +228,7 @@ namespace
|
|||||||
struct streaming_client_fixture_row
|
struct streaming_client_fixture_row
|
||||||
{
|
{
|
||||||
streaming_client_fixture_row()
|
streaming_client_fixture_row()
|
||||||
: server_service(sc)
|
: server_service(&sc)
|
||||||
, sc("s1", wsrep::server_state::rm_sync, server_service)
|
, sc("s1", wsrep::server_state::rm_sync, server_service)
|
||||||
, cc(sc,
|
, cc(sc,
|
||||||
wsrep::client_id(1),
|
wsrep::client_id(1),
|
||||||
@ -254,7 +254,7 @@ namespace
|
|||||||
struct streaming_client_fixture_byte
|
struct streaming_client_fixture_byte
|
||||||
{
|
{
|
||||||
streaming_client_fixture_byte()
|
streaming_client_fixture_byte()
|
||||||
: server_service(sc)
|
: server_service(&sc)
|
||||||
, sc("s1", wsrep::server_state::rm_sync, server_service)
|
, sc("s1", wsrep::server_state::rm_sync, server_service)
|
||||||
, cc(sc,
|
, cc(sc,
|
||||||
wsrep::client_id(1),
|
wsrep::client_id(1),
|
||||||
@ -279,7 +279,7 @@ namespace
|
|||||||
struct streaming_client_fixture_statement
|
struct streaming_client_fixture_statement
|
||||||
{
|
{
|
||||||
streaming_client_fixture_statement()
|
streaming_client_fixture_statement()
|
||||||
: server_service(sc)
|
: server_service(&sc)
|
||||||
, sc("s1", wsrep::server_state::rm_sync, server_service)
|
, sc("s1", wsrep::server_state::rm_sync, server_service)
|
||||||
, cc(sc,
|
, cc(sc,
|
||||||
wsrep::client_id(1),
|
wsrep::client_id(1),
|
||||||
|
@ -24,11 +24,11 @@
|
|||||||
int wsrep::mock_client_service::bf_rollback()
|
int wsrep::mock_client_service::bf_rollback()
|
||||||
{
|
{
|
||||||
int ret(0);
|
int ret(0);
|
||||||
if (client_state_.before_rollback())
|
if (client_state_->before_rollback())
|
||||||
{
|
{
|
||||||
ret = 1;
|
ret = 1;
|
||||||
}
|
}
|
||||||
else if (client_state_.after_rollback())
|
else if (client_state_->after_rollback())
|
||||||
{
|
{
|
||||||
ret = 1;
|
ret = 1;
|
||||||
}
|
}
|
||||||
@ -38,11 +38,11 @@ int wsrep::mock_client_service::bf_rollback()
|
|||||||
enum wsrep::provider::status
|
enum wsrep::provider::status
|
||||||
wsrep::mock_client_service::replay()
|
wsrep::mock_client_service::replay()
|
||||||
{
|
{
|
||||||
wsrep::mock_high_priority_service hps(client_state_.server_state(),
|
wsrep::mock_high_priority_service hps(client_state_->server_state(),
|
||||||
&client_state_, true);
|
client_state_, true);
|
||||||
enum wsrep::provider::status ret(
|
enum wsrep::provider::status ret(
|
||||||
client_state_.provider().replay(
|
client_state_->provider().replay(
|
||||||
client_state_.transaction().ws_handle(),
|
client_state_->transaction().ws_handle(),
|
||||||
&hps));
|
&hps));
|
||||||
++replays_;
|
++replays_;
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -60,7 +60,7 @@ namespace wsrep
|
|||||||
class mock_client_service : public wsrep::client_service
|
class mock_client_service : public wsrep::client_service
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
mock_client_service(wsrep::mock_client_state& client_state)
|
mock_client_service(wsrep::mock_client_state* client_state)
|
||||||
: wsrep::client_service()
|
: wsrep::client_service()
|
||||||
, is_autocommit_()
|
, is_autocommit_()
|
||||||
, do_2pc_()
|
, do_2pc_()
|
||||||
@ -79,6 +79,8 @@ namespace wsrep
|
|||||||
, unordered_replays_()
|
, unordered_replays_()
|
||||||
, aborts_()
|
, aborts_()
|
||||||
{ }
|
{ }
|
||||||
|
mock_client_service(const mock_client_service&) = delete;
|
||||||
|
mock_client_service& operator=(const mock_client_service&) = delete;
|
||||||
|
|
||||||
int bf_rollback() WSREP_OVERRIDE;
|
int bf_rollback() WSREP_OVERRIDE;
|
||||||
|
|
||||||
@ -93,8 +95,8 @@ namespace wsrep
|
|||||||
{
|
{
|
||||||
if (bf_abort_during_fragment_removal_)
|
if (bf_abort_during_fragment_removal_)
|
||||||
{
|
{
|
||||||
client_state_.before_rollback();
|
client_state_->before_rollback();
|
||||||
client_state_.after_rollback();
|
client_state_->after_rollback();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -122,7 +124,7 @@ namespace wsrep
|
|||||||
lock.unlock();
|
lock.unlock();
|
||||||
if (bf_abort_during_wait_)
|
if (bf_abort_during_wait_)
|
||||||
{
|
{
|
||||||
wsrep_test::bf_abort_unordered(client_state_);
|
wsrep_test::bf_abort_unordered(*client_state_);
|
||||||
}
|
}
|
||||||
lock.lock();
|
lock.lock();
|
||||||
}
|
}
|
||||||
@ -135,7 +137,7 @@ namespace wsrep
|
|||||||
}
|
}
|
||||||
static const char buf[1] = { 1 };
|
static const char buf[1] = { 1 };
|
||||||
wsrep::const_buffer data = wsrep::const_buffer(buf, 1);
|
wsrep::const_buffer data = wsrep::const_buffer(buf, 1);
|
||||||
return client_state_.append_data(data);
|
return client_state_->append_data(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cleanup_transaction() WSREP_OVERRIDE { }
|
void cleanup_transaction() WSREP_OVERRIDE { }
|
||||||
@ -158,7 +160,7 @@ namespace wsrep
|
|||||||
buffer.push_back(&buf[0], &buf[1]);
|
buffer.push_back(&buf[0], &buf[1]);
|
||||||
wsrep::const_buffer data(buffer.data(), buffer.size());
|
wsrep::const_buffer data(buffer.data(), buffer.size());
|
||||||
position = buffer.size();
|
position = buffer.size();
|
||||||
return client_state_.append_data(data);
|
return client_state_->append_data(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void store_globals() WSREP_OVERRIDE { }
|
void store_globals() WSREP_OVERRIDE { }
|
||||||
@ -186,10 +188,10 @@ namespace wsrep
|
|||||||
switch (sync_point_action_)
|
switch (sync_point_action_)
|
||||||
{
|
{
|
||||||
case spa_bf_abort_unordered:
|
case spa_bf_abort_unordered:
|
||||||
wsrep_test::bf_abort_unordered(client_state_);
|
wsrep_test::bf_abort_unordered(*client_state_);
|
||||||
break;
|
break;
|
||||||
case spa_bf_abort_ordered:
|
case spa_bf_abort_ordered:
|
||||||
wsrep_test::bf_abort_ordered(client_state_);
|
wsrep_test::bf_abort_ordered(*client_state_);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -228,7 +230,7 @@ namespace wsrep
|
|||||||
size_t unordered_replays() const { return unordered_replays_; }
|
size_t unordered_replays() const { return unordered_replays_; }
|
||||||
size_t aborts() const { return aborts_; }
|
size_t aborts() const { return aborts_; }
|
||||||
private:
|
private:
|
||||||
wsrep::mock_client_state& client_state_;
|
wsrep::mock_client_state* client_state_;
|
||||||
bool will_replay_called_;
|
bool will_replay_called_;
|
||||||
size_t replays_;
|
size_t replays_;
|
||||||
size_t unordered_replays_;
|
size_t unordered_replays_;
|
||||||
@ -244,7 +246,7 @@ namespace wsrep
|
|||||||
const wsrep::client_id& id,
|
const wsrep::client_id& id,
|
||||||
enum wsrep::client_state::mode mode)
|
enum wsrep::client_state::mode mode)
|
||||||
: mock_client_state(server_state, *this, id, mode)
|
: mock_client_state(server_state, *this, id, mode)
|
||||||
, mock_client_service(static_cast<mock_client_state&>(*this))
|
, mock_client_service(static_cast<mock_client_state*>(this))
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
int after_row()
|
int after_row()
|
||||||
|
@ -34,7 +34,7 @@ namespace wsrep
|
|||||||
class mock_server_service : public wsrep::server_service
|
class mock_server_service : public wsrep::server_service
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
mock_server_service(wsrep::server_state& server_state)
|
mock_server_service(wsrep::server_state* server_state)
|
||||||
: sync_point_enabled_()
|
: sync_point_enabled_()
|
||||||
, sync_point_action_()
|
, sync_point_action_()
|
||||||
, sst_before_init_()
|
, sst_before_init_()
|
||||||
@ -44,18 +44,20 @@ namespace wsrep
|
|||||||
, logged_view_()
|
, logged_view_()
|
||||||
, position_()
|
, position_()
|
||||||
{ }
|
{ }
|
||||||
|
mock_server_service(const mock_server_service&) = delete;
|
||||||
|
mock_server_service& operator=(const mock_server_service&) = delete;
|
||||||
|
|
||||||
wsrep::storage_service* storage_service(wsrep::client_service&)
|
wsrep::storage_service* storage_service(wsrep::client_service&)
|
||||||
WSREP_OVERRIDE
|
WSREP_OVERRIDE
|
||||||
{
|
{
|
||||||
return new wsrep::mock_storage_service(server_state_,
|
return new wsrep::mock_storage_service(*server_state_,
|
||||||
wsrep::client_id(++last_client_id_));
|
wsrep::client_id(++last_client_id_));
|
||||||
}
|
}
|
||||||
|
|
||||||
wsrep::storage_service* storage_service(wsrep::high_priority_service&)
|
wsrep::storage_service* storage_service(wsrep::high_priority_service&)
|
||||||
WSREP_OVERRIDE
|
WSREP_OVERRIDE
|
||||||
{
|
{
|
||||||
return new wsrep::mock_storage_service(server_state_,
|
return new wsrep::mock_storage_service(*server_state_,
|
||||||
wsrep::client_id(++last_client_id_));
|
wsrep::client_id(++last_client_id_));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,11 +72,11 @@ namespace wsrep
|
|||||||
WSREP_OVERRIDE
|
WSREP_OVERRIDE
|
||||||
{
|
{
|
||||||
wsrep::mock_client* cs(new wsrep::mock_client(
|
wsrep::mock_client* cs(new wsrep::mock_client(
|
||||||
server_state_,
|
*server_state_,
|
||||||
wsrep::client_id(++last_client_id_),
|
wsrep::client_id(++last_client_id_),
|
||||||
wsrep::client_state::m_high_priority));
|
wsrep::client_state::m_high_priority));
|
||||||
wsrep::mock_high_priority_service* ret(
|
wsrep::mock_high_priority_service* ret(
|
||||||
new wsrep::mock_high_priority_service(server_state_,
|
new wsrep::mock_high_priority_service(*server_state_,
|
||||||
cs, false));
|
cs, false));
|
||||||
cs->open(cs->id());
|
cs->open(cs->id());
|
||||||
cs->before_command();
|
cs->before_command();
|
||||||
@ -85,11 +87,11 @@ namespace wsrep
|
|||||||
wsrep::high_priority_service&) WSREP_OVERRIDE
|
wsrep::high_priority_service&) WSREP_OVERRIDE
|
||||||
{
|
{
|
||||||
wsrep::mock_client* cs(new wsrep::mock_client(
|
wsrep::mock_client* cs(new wsrep::mock_client(
|
||||||
server_state_,
|
*server_state_,
|
||||||
wsrep::client_id(++last_client_id_),
|
wsrep::client_id(++last_client_id_),
|
||||||
wsrep::client_state::m_high_priority));
|
wsrep::client_state::m_high_priority));
|
||||||
wsrep::mock_high_priority_service* ret(
|
wsrep::mock_high_priority_service* ret(
|
||||||
new wsrep::mock_high_priority_service(server_state_,
|
new wsrep::mock_high_priority_service(*server_state_,
|
||||||
cs, false));
|
cs, false));
|
||||||
cs->open(cs->id());
|
cs->open(cs->id());
|
||||||
cs->before_command();
|
cs->before_command();
|
||||||
@ -115,7 +117,7 @@ namespace wsrep
|
|||||||
void log_message(enum wsrep::log::level level, const char* message)
|
void log_message(enum wsrep::log::level level, const char* message)
|
||||||
WSREP_OVERRIDE
|
WSREP_OVERRIDE
|
||||||
{
|
{
|
||||||
wsrep::log(level, server_state_.name().c_str()) << message;
|
wsrep::log(level, server_state_->name().c_str()) << message;
|
||||||
}
|
}
|
||||||
void log_dummy_write_set(wsrep::client_state&,
|
void log_dummy_write_set(wsrep::client_state&,
|
||||||
const wsrep::ws_meta&)
|
const wsrep::ws_meta&)
|
||||||
@ -196,7 +198,7 @@ namespace wsrep
|
|||||||
case spa_none:
|
case spa_none:
|
||||||
break;
|
break;
|
||||||
case spa_initialize:
|
case spa_initialize:
|
||||||
server_state_.initialized();
|
server_state_->initialized();
|
||||||
break;
|
break;
|
||||||
case spa_initialize_error:
|
case spa_initialize_error:
|
||||||
throw wsrep::runtime_error("Inject initialization error");
|
throw wsrep::runtime_error("Inject initialization error");
|
||||||
@ -224,7 +226,7 @@ namespace wsrep
|
|||||||
position_ = position;
|
position_ = position;
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
wsrep::server_state& server_state_;
|
wsrep::server_state* server_state_;
|
||||||
unsigned long long last_client_id_;
|
unsigned long long last_client_id_;
|
||||||
unsigned long long last_transaction_id_;
|
unsigned long long last_transaction_id_;
|
||||||
wsrep::view logged_view_;
|
wsrep::view logged_view_;
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
wsrep::mock_storage_service::mock_storage_service(
|
wsrep::mock_storage_service::mock_storage_service(
|
||||||
wsrep::server_state& server_state,
|
wsrep::server_state& server_state,
|
||||||
wsrep::client_id client_id)
|
wsrep::client_id client_id)
|
||||||
: client_service_(client_state_)
|
: client_service_(&client_state_)
|
||||||
, client_state_(server_state, client_service_, client_id,
|
, client_state_(server_state, client_service_, client_id,
|
||||||
wsrep::client_state::m_high_priority)
|
wsrep::client_state::m_high_priority)
|
||||||
{
|
{
|
||||||
|
@ -26,7 +26,7 @@ namespace
|
|||||||
struct server_fixture_base
|
struct server_fixture_base
|
||||||
{
|
{
|
||||||
server_fixture_base()
|
server_fixture_base()
|
||||||
: server_service(ss)
|
: server_service(&ss)
|
||||||
, ss("s1",
|
, ss("s1",
|
||||||
wsrep::server_state::rm_sync, server_service)
|
wsrep::server_state::rm_sync, server_service)
|
||||||
, cc(ss,
|
, cc(ss,
|
||||||
|
Reference in New Issue
Block a user