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

Pass transaction id instead of client id to storage service append_fragment()

This commit is contained in:
Teemu Ollakka
2018-07-07 21:34:58 +03:00
parent 178f70d3be
commit 2913aecebd
6 changed files with 95 additions and 88 deletions

View File

@ -14,7 +14,8 @@ namespace db
{ {
int start_transaction() override int start_transaction() override
{ throw wsrep::not_implemented_error(); } { throw wsrep::not_implemented_error(); }
int append_fragment(const wsrep::id&, wsrep::client_id, int append_fragment(const wsrep::id&,
wsrep::transaction_id,
int, int,
const wsrep::const_buffer&) override const wsrep::const_buffer&) override
{ throw wsrep::not_implemented_error(); } { throw wsrep::not_implemented_error(); }

View File

@ -14,7 +14,7 @@
#ifndef WSREP_STORAGE_SERVICE_HPP #ifndef WSREP_STORAGE_SERVICE_HPP
#define WSREP_STORAGE_SERVICE_HPP #define WSREP_STORAGE_SERVICE_HPP
#include "client_id.hpp" #include "transaction_id.hpp"
#include "id.hpp" #include "id.hpp"
#include "buffer.hpp" #include "buffer.hpp"
@ -46,7 +46,7 @@ namespace wsrep
* Append fragment into stable storage. * Append fragment into stable storage.
*/ */
virtual int append_fragment(const wsrep::id& server_id, virtual int append_fragment(const wsrep::id& server_id,
wsrep::client_id client_id, wsrep::transaction_id client_id,
int flags, int flags,
const wsrep::const_buffer& data) = 0; const wsrep::const_buffer& data) = 0;

View File

@ -5,6 +5,8 @@
#ifndef WSREP_STREAMING_CONTEXT_HPP #ifndef WSREP_STREAMING_CONTEXT_HPP
#define WSREP_STREAMING_CONTEXT_HPP #define WSREP_STREAMING_CONTEXT_HPP
#include "logger.hpp"
namespace wsrep namespace wsrep
{ {
class streaming_context class streaming_context
@ -28,6 +30,8 @@ namespace wsrep
void enable(enum fragment_unit fragment_unit, size_t fragment_size) void enable(enum fragment_unit fragment_unit, size_t fragment_size)
{ {
wsrep::log_info() << "Enabling streaming: "
<< fragment_unit << " " << fragment_size;
assert(fragment_size > 0); assert(fragment_size > 0);
fragment_unit_ = fragment_unit; fragment_unit_ = fragment_unit;
fragment_size_ = fragment_size; fragment_size_ = fragment_size;

View File

@ -194,6 +194,7 @@ int wsrep::client_state::after_statement()
// wsrep::unique_lock<wsrep::mutex> lock(mutex_); // wsrep::unique_lock<wsrep::mutex> lock(mutex_);
debug_log_state("after_statement: enter"); debug_log_state("after_statement: enter");
assert(state() == s_exec); assert(state() == s_exec);
assert(mode() == m_local);
#if 0 #if 0
/** /**
* @todo Check for replay state, do rollback if requested. * @todo Check for replay state, do rollback if requested.

View File

@ -195,6 +195,7 @@ int wsrep::transaction::append_data(const wsrep::const_buffer& data)
int wsrep::transaction::after_row() int wsrep::transaction::after_row()
{ {
wsrep::unique_lock<wsrep::mutex> lock(client_state_.mutex()); wsrep::unique_lock<wsrep::mutex> lock(client_state_.mutex());
debug_log_state("after_row_enter");
if (streaming_context_.fragment_size() > 0) if (streaming_context_.fragment_size() > 0)
{ {
switch (streaming_context_.fragment_unit()) switch (streaming_context_.fragment_unit())
@ -843,7 +844,7 @@ int wsrep::transaction::certify_fragment(
if (storage_service.append_fragment( if (storage_service.append_fragment(
client_state_.server_state().id(), client_state_.server_state().id(),
client_state_.id(), id(),
flags_, flags_,
wsrep::const_buffer(data.data(), data.size()))) wsrep::const_buffer(data.data(), data.size())))
{ {

View File

@ -21,7 +21,7 @@ class mock_server_state;
int start_transaction() WSREP_OVERRIDE; int start_transaction() WSREP_OVERRIDE;
int append_fragment(const wsrep::id&, int append_fragment(const wsrep::id&,
wsrep::client_id, wsrep::transaction_id,
int, int,
const wsrep::const_buffer&) const wsrep::const_buffer&)
WSREP_OVERRIDE WSREP_OVERRIDE