1
0
mirror of https://github.com/codership/wsrep-lib.git synced 2025-07-31 18:24:25 +03:00

Fixed BF abort in sync rollback mode.

* Pass condition variable for client_state
* Notify all cond waiters when changing the transcation status to
  aborted
* Wait for aborting transaction state aborted in before_command
This commit is contained in:
Teemu Ollakka
2018-07-02 10:09:48 +03:00
parent db18e91c42
commit 658a84a7d4
7 changed files with 25 additions and 21 deletions

View File

@ -12,10 +12,11 @@ db::client::client(db::server& server,
enum wsrep::client_state::mode mode,
const db::params& params)
: mutex_()
, cond_()
, params_(params)
, server_(server)
, server_state_(server.server_state())
, client_state_(mutex_, this, server_state_, client_service_, client_id, mode)
, client_state_(mutex_, cond_, this, server_state_, client_service_, client_id, mode)
, client_service_(client_state_)
, se_trx_(server.storage_engine())
, stats_()

View File

@ -52,6 +52,7 @@ namespace db
void reset_error();
void report_progress(size_t) const;
wsrep::default_mutex mutex_;
wsrep::default_condition_variable cond_;
const db::params& params_;
db::server& server_;
db::server_state& server_state_;

View File

@ -15,16 +15,18 @@ namespace db
{
public:
client_state(wsrep::mutex& mutex,
db::client* client,
db::server_state& server_state,
wsrep::client_service& client_service,
const wsrep::client_id& client_id,
enum wsrep::client_state::mode mode)
wsrep::condition_variable& cond,
db::client* client,
db::server_state& server_state,
wsrep::client_service& client_service,
const wsrep::client_id& client_id,
enum wsrep::client_state::mode mode)
: wsrep::client_state(mutex,
server_state,
client_service,
client_id,
mode)
cond,
server_state,
client_service,
client_id,
mode)
, client_(client)
, is_autocommit_(false)
, do_2pc_(false)