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:
@ -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;
|
||||
|
Reference in New Issue
Block a user