1
0
mirror of https://github.com/codership/wsrep-lib.git synced 2025-08-05 04:01:12 +03:00

Squashed commit of the following:

commit 3b419aa6e2
Author: Teemu Ollakka <teemu.ollakka@galeracluster.com>
Date:   Sun Feb 19 10:29:34 2023 +0200

    Skip fetching config options if provider not loaded via wsrep-API

commit 044220cc06
Author: Teemu Ollakka <teemu.ollakka@galeracluster.com>
Date:   Wed Jul 13 10:31:03 2022 +0300

    Operation context pointer for client state

commit eeb05a9238
Author: Teemu Ollakka <teemu.ollakka@galeracluster.com>
Date:   Mon Jul 4 09:03:23 2022 +0300

    Add unit test log in gitignore

commit 92a04070fc
Author: Teemu Ollakka <teemu.ollakka@galeracluster.com>
Date:   Sun May 8 12:45:36 2022 +0300

    Added convenience method prev() to seqno

commit f83ca1917e
Author: Teemu Ollakka <teemu.ollakka@galeracluster.com>
Date:   Sun May 1 16:37:24 2022 +0300

    Pass victim context for provider on BF abort

    This change is needed for custom provider implementations to
    have a way to access the victim in the application context.

    Helper interface operation_context to pass caller context for
    service/provider callbacks in more type safe way.

commit 244eabe8cf
Author: Teemu Ollakka <teemu.ollakka@galeracluster.com>
Date:   Wed May 25 07:39:43 2022 +0300

    Handle disconnecting state in on_sync()

    When disconnecting from the group, the sync event from the
    provider must not change the state back to synced.

commit ba8e23df0d
Author: Teemu Ollakka <teemu.ollakka@galeracluster.com>
Date:   Tue Mar 22 17:43:52 2022 +0200

    Add provider position field to ws_meta and view

    Provider position is needed in coordinated recovery
    between application and provider. Pass the position
    info from provider to application to allow making
    it durable.

commit 53e60f64c9
Author: Teemu Ollakka <teemu.ollakka@galeracluster.com>
Date:   Sat Mar 19 14:45:57 2022 +0200

    Reset TOI meta after releasing total order in provider

    This is to keep the TOI meta available in case the provider
    implementation needs it.

commit bccb9997f2
Author: Teemu Ollakka <teemu.ollakka@galeracluster.com>
Date:   Mon Jan 3 11:19:58 2022 +0200

    Fixed id ostream operator to print human readable ids

commit 6d0b37daaf
Author: Teemu Ollakka <teemu.ollakka@galeracluster.com>
Date:   Wed Dec 15 16:37:45 2021 +0200

    Silence unused variable warning

commit 4b8616f3d1
Author: Denis Protivensky <denis.protivensky@galeracluster.com>
Date:   Wed Dec 15 16:43:31 2021 +0300

    Fix provider loading in test for release builds

commit 6df17812d9
Author: Denis Protivensky <denis.protivensky@galeracluster.com>
Date:   Tue Dec 14 20:28:56 2021 +0300

    Introduce set_provider_factory() method for server_state

    This allows injecting an application allocated provider into
    server_state.

    After this virtual provider getter is unnecessary. Made the getter
    normal method and fixed unit tests accordingly.
This commit is contained in:
Teemu Ollakka
2023-06-14 13:09:36 +03:00
parent 173693f2ee
commit a2dbde5d80
30 changed files with 570 additions and 415 deletions

View File

@@ -149,7 +149,8 @@ namespace wsrep
logged_view_.capabilities(),
my_idx,
logged_view_.protocol_version(),
logged_view_.members()
logged_view_.members(),
0
);
return my_view;
}
@@ -258,12 +259,28 @@ namespace wsrep
rollback_mode)
, mutex_()
, cond_()
, provider_(*this)
{ }
, provider_()
{
set_provider_factory([&](wsrep::server_state&,
const std::string&,
const std::string&,
const wsrep::provider::services&)
{
// The provider object is destroyed upon server state
// destruction, so using a raw pointer is safe.
provider_ = new wsrep::mock_provider(*this);
return std::unique_ptr<wsrep::provider>(provider_);
});
wsrep::mock_provider& provider() const WSREP_OVERRIDE
{ return provider_; }
const int ret WSREP_UNUSED = load_provider("mock", "");
assert(ret == 0);
assert(provider_ != nullptr);
}
wsrep::mock_provider& mock_provider() const
{
return *provider_;
}
// mock connected state for tests without overriding the connect()
// method.
int mock_connect(const std::string& own_id,
@@ -289,7 +306,8 @@ namespace wsrep
0,
0,
1,
members);
members,
0);
server_state::on_connect(bootstrap_view);
}
else
@@ -308,7 +326,7 @@ namespace wsrep
private:
wsrep::default_mutex mutex_;
wsrep::default_condition_variable cond_;
mutable wsrep::mock_provider provider_;
wsrep::mock_provider* provider_;
};
}