Skip to content

Commit b38f956

Browse files
committed
Add on_repl_devs_init_completed cb.
A stable callback is needed regardless whether we have repl_dev created. This CB is a nice place for upper layer to recover those depends on repl_dev. Signed-off-by: Xiaoxi Chen <[email protected]>
1 parent 4f4df87 commit b38f956

File tree

5 files changed

+9
-1
lines changed

5 files changed

+9
-1
lines changed

conanfile.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
class HomestoreConan(ConanFile):
1111
name = "homestore"
12-
version = "6.5.21"
12+
version = "6.5.22"
1313

1414
homepage = "https://github.com/eBay/Homestore"
1515
description = "HomeStore Storage Engine"

src/include/homestore/replication_service.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,10 @@ class ReplApplication {
7575
// Listener corresponding to the ReplDev which will be used to perform the precommit/commit/rollback.
7676
virtual shared< ReplDevListener > create_repl_dev_listener(group_id_t group_id) = 0;
7777

78+
// Called after all the repl devs are found upon restart of the homestore instance.
79+
// it is a nice place for upper layer to recovery anything depends on repl_devs
80+
virtual void on_repl_devs_init_completed() = 0;
81+
7882
// Given the uuid of the peer, get their address and port
7983
virtual std::pair< std::string, uint16_t > lookup_peer(replica_id_t uuid) const = 0;
8084

src/lib/replication/service/raft_repl_service.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ void RaftReplService::start() {
131131
rdev->on_restart();
132132
}
133133
m_config_sb_bufs.clear();
134+
LOGINFO("Repl devs load completed, calling upper layer on_repl_devs_init_completed");
135+
m_repl_app->on_repl_devs_init_completed();
134136

135137
// Step 5: Start the data and logstore service now. This step is essential before we can ask Raft to join groups etc
136138

src/tests/test_common/hs_repl_test_common.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ class HSReplTestHelper : public HSTestHelper {
115115
create_repl_dev_listener(homestore::group_id_t group_id) override {
116116
return helper_.get_listener(group_id);
117117
}
118+
void on_repl_devs_init_completed() { LOGINFO("Repl dev init completed CB called"); }
118119

119120
std::pair< std::string, uint16_t > lookup_peer(homestore::replica_id_t replica_id) const override {
120121
uint16_t port;

src/tests/test_solo_repl_dev.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ class SoloReplDevTest : public testing::Test {
153153
shared< ReplDevListener > create_repl_dev_listener(uuid_t) override {
154154
return std::make_shared< Listener >(m_test);
155155
}
156+
void on_repl_devs_init_completed() { LOGINFO("Repl dev init completed CB called"); }
156157
std::pair< std::string, uint16_t > lookup_peer(uuid_t uuid) const override { return std::make_pair("", 0u); }
157158
replica_id_t get_my_repl_id() const override { return hs_utils::gen_random_uuid(); }
158159
};

0 commit comments

Comments
 (0)