From fd07ff12e4ba9f8de40e65c9ec1372cf99ddbeba Mon Sep 17 00:00:00 2001 From: Alexey Yurchenko Date: Thu, 22 Nov 2018 17:16:28 +0200 Subject: [PATCH] Refs codership/wsrep-API#21 added support for the IMPLICIT_DEPS WS flag --- include/wsrep/provider.hpp | 1 + include/wsrep/transaction.hpp | 4 ++++ src/provider.cpp | 2 ++ src/transaction.cpp | 12 ++++++++++++ src/wsrep_provider_v26.cpp | 10 ++++++++-- wsrep-API/v26 | 2 +- 6 files changed, 28 insertions(+), 3 deletions(-) diff --git a/include/wsrep/provider.hpp b/include/wsrep/provider.hpp index d34e927..1250b24 100644 --- a/include/wsrep/provider.hpp +++ b/include/wsrep/provider.hpp @@ -219,6 +219,7 @@ namespace wsrep static const int native = (1 << 6); static const int prepare = (1 << 7); static const int snapshot = (1 << 8); + static const int implicit_deps = (1 << 9); }; /** diff --git a/include/wsrep/transaction.hpp b/include/wsrep/transaction.hpp index 70b8642..10e534e 100644 --- a/include/wsrep/transaction.hpp +++ b/include/wsrep/transaction.hpp @@ -109,6 +109,9 @@ namespace wsrep bool pa_unsafe() const { return pa_unsafe_; } void pa_unsafe(bool pa_unsafe) { pa_unsafe_ = pa_unsafe; } + bool implicit_deps() const { return implicit_deps_; } + void implicit_deps(bool implicit) { implicit_deps_ = implicit; } + int start_transaction(const wsrep::transaction_id& id); int start_transaction(const wsrep::ws_handle& ws_handle, @@ -204,6 +207,7 @@ namespace wsrep wsrep::ws_meta ws_meta_; int flags_; bool pa_unsafe_; + bool implicit_deps_; bool certified_; wsrep::streaming_context streaming_context_; wsrep::sr_key_set sr_keys_; diff --git a/src/provider.cpp b/src/provider.cpp index abe78c7..6bc855b 100644 --- a/src/provider.cpp +++ b/src/provider.cpp @@ -108,6 +108,8 @@ std::string wsrep::flags_to_string(int flags) oss << "prepare | "; if (flags & provider::flag::snapshot) oss << "snapshot | "; + if (flags & provider::flag::implicit_deps) + oss << "implicit_deps | "; std::string ret(oss.str()); if (ret.size() > 3) ret.erase(ret.size() - 3); diff --git a/src/transaction.cpp b/src/transaction.cpp index ef6d8dd..5065b2c 100644 --- a/src/transaction.cpp +++ b/src/transaction.cpp @@ -110,6 +110,7 @@ wsrep::transaction::transaction( , ws_meta_() , flags_() , pa_unsafe_(false) + , implicit_deps_(false) , certified_(false) , streaming_context_() , sr_keys_() @@ -1061,6 +1062,11 @@ int wsrep::transaction::certify_fragment( client_state_.server_state_.start_streaming_client(&client_state_); } + if (implicit_deps()) + { + flags(flags() | wsrep::provider::flag::implicit_deps); + } + int ret(0); enum wsrep::client_error error(wsrep::e_success); enum wsrep::provider::status cert_ret(wsrep::provider::success); @@ -1241,6 +1247,11 @@ int wsrep::transaction::certify_commit( flags(flags() | wsrep::provider::flag::pa_unsafe); } + if (implicit_deps()) + { + flags(flags() | wsrep::provider::flag::implicit_deps); + } + flags(flags() | wsrep::provider::flag::commit); if (client_service_.prepare_data_for_replication()) @@ -1472,6 +1483,7 @@ void wsrep::transaction::cleanup() flags_ = 0; certified_ = false; pa_unsafe_ = false; + implicit_deps_ = false; sr_keys_.clear(); streaming_context_.cleanup(); client_service_.cleanup_transaction(); diff --git a/src/wsrep_provider_v26.cpp b/src/wsrep_provider_v26.cpp index ea3793c..36a5a13 100644 --- a/src/wsrep_provider_v26.cpp +++ b/src/wsrep_provider_v26.cpp @@ -125,7 +125,10 @@ namespace WSREP_FLAG_TRX_PREPARE) | map_one(flags, provider::flag::snapshot, - WSREP_FLAG_SNAPSHOT)); + WSREP_FLAG_SNAPSHOT) | + map_one(flags, + provider::flag::implicit_deps, + WSREP_FLAG_IMPLICIT_DEPS)); } int map_flags_from_native(uint32_t flags) @@ -153,7 +156,10 @@ namespace provider::flag::prepare) | map_one(flags, WSREP_FLAG_SNAPSHOT, - provider::flag::snapshot)); + provider::flag::snapshot) | + map_one(flags, + WSREP_FLAG_IMPLICIT_DEPS, + provider::flag::implicit_deps)); } class mutable_ws_handle diff --git a/wsrep-API/v26 b/wsrep-API/v26 index 0c1da9e..57cde3a 160000 --- a/wsrep-API/v26 +++ b/wsrep-API/v26 @@ -1 +1 @@ -Subproject commit 0c1da9e7c04aebf00084f3e3e3855ec5fe635c21 +Subproject commit 57cde3a1f15fc42f9f77fdcbb457219cf2bca15b