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

Fixes to streaming rollback

* Check fragment removal error code in prepare phase. It is possible
  that the transaction gets BF aborted during fragment removal.
* Mark fragment certified in certify_fragment() even if the provider
  returns cert failed error. With current wsrep-API error codes
  it may not be possible to distinquish certification failure
  and BF abort during fragment replication. This may also be a
  provider bug. As a result rollback fragment may sometimes be
  replicated when it would not be necessary.
This commit is contained in:
Teemu Ollakka
2018-07-17 14:34:24 +03:00
parent b054c7320c
commit b02200b1ef
8 changed files with 87 additions and 40 deletions

View File

@ -19,46 +19,29 @@ namespace db
client_service(db::client& client);
bool do_2pc() const override;
bool interrupted() const override
{
return false;
}
bool interrupted() const override { return false; }
void reset_globals() override { }
void store_globals() override { }
int prepare_data_for_replication() override
{
return 0;
}
void cleanup_transaction() override { }
size_t bytes_generated() const override
{
return 0;
}
bool statement_allowed_for_streaming() const override
{
return true;
}
int prepare_fragment_for_replication(wsrep::mutable_buffer&) override
{
return 0;
}
void remove_fragments() override
{ }
int remove_fragments() override { return 0; }
int bf_rollback() override;
void will_replay() override
{ }
void will_replay() override { }
void wait_for_replayers(wsrep::unique_lock<wsrep::mutex>&) override { }
enum wsrep::provider::status replay()
override;