mirror of
https://github.com/codership/wsrep-lib.git
synced 2025-04-19 21:02:17 +03:00
Streaming rollback for total order BF abort used regular BF abort codepath, which was not correct because the streaming rollback must fully complete before total order operation executes. Fixed this by adjusting bf_aborted_in_total_order_ before streaming_rollback() gets called.
56 lines
1.7 KiB
C++
56 lines
1.7 KiB
C++
/*
|
|
* Copyright (C) 2018 Codership Oy <info@codership.com>
|
|
*
|
|
* This file is part of wsrep-lib.
|
|
*
|
|
* Wsrep-lib is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Wsrep-lib is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with wsrep-lib. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
// Forward declarations
|
|
namespace wsrep
|
|
{
|
|
class client_state;
|
|
class mock_server_state;
|
|
}
|
|
|
|
#include "wsrep/transaction.hpp"
|
|
#include "wsrep/provider.hpp"
|
|
|
|
//
|
|
// Utility functions
|
|
//
|
|
namespace wsrep_test
|
|
{
|
|
|
|
// Simple BF abort method to BF abort unordered transasctions
|
|
void bf_abort_unordered(wsrep::client_state& cc);
|
|
|
|
// Simple BF abort method to BF abort unordered transasctions
|
|
void bf_abort_ordered(wsrep::client_state& cc);
|
|
|
|
// BF abort method to abort transactions via provider
|
|
void bf_abort_provider(wsrep::mock_server_state& sc,
|
|
const wsrep::transaction& tc,
|
|
wsrep::seqno bf_seqno);
|
|
|
|
// BF abort in total order
|
|
void bf_abort_in_total_order(wsrep::client_state&);
|
|
|
|
// Terminate streaming applier by applying rollback fragment.
|
|
void terminate_streaming_applier(
|
|
wsrep::mock_server_state& sc,
|
|
const wsrep::id& server_id,
|
|
wsrep::transaction_id transaction_id);
|
|
}
|