Skip to content

Commit ef5d7b6

Browse files
committed
bug server: fix lns mismatch in replication
Signed-off-by: adi_holden <adi@dragonflydb.io>
1 parent 3b013f8 commit ef5d7b6

File tree

3 files changed

+15
-8
lines changed

3 files changed

+15
-8
lines changed

src/server/snapshot.cc

+1
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ void SliceSnapshot::FinalizeJournalStream(bool cancel) {
131131
journal->UnregisterOnChange(cb_id);
132132
if (!cancel) {
133133
// always succeeds because serializer_ flushes to string.
134+
VLOG(1) << "FinalizeJournalStream lsn: " << journal->GetLsn();
134135
std::ignore = serializer_->SendJournalOffset(journal->GetLsn());
135136
PushSerialized(true);
136137
}

src/server/transaction.cc

+9-7
Original file line numberDiff line numberDiff line change
@@ -149,18 +149,20 @@ cv_status Transaction::BatonBarrier::Wait(time_point tp) {
149149

150150
Transaction::Guard::Guard(Transaction* tx) : tx(tx) {
151151
DCHECK(tx->cid_->opt_mask() & CO::GLOBAL_TRANS);
152-
tx->Execute([](auto*, auto*) { return OpStatus::OK; }, false);
153-
shard_set->RunBriefInParallel([](EngineShard* shard) {
152+
auto cb = [&](Transaction* t, EngineShard* shard) {
154153
namespaces->GetDefaultNamespace().GetDbSlice(shard->shard_id()).SetExpireAllowed(false);
155-
});
154+
return OpStatus::OK;
155+
};
156+
tx->Execute(cb, false);
156157
}
157158

158159
Transaction::Guard::~Guard() {
159-
tx->Conclude();
160-
tx->Refurbish();
161-
shard_set->RunBriefInParallel([](EngineShard* shard) {
160+
auto cb = [&](Transaction* t, EngineShard* shard) {
162161
namespaces->GetDefaultNamespace().GetDbSlice(shard->shard_id()).SetExpireAllowed(true);
163-
});
162+
return OpStatus::OK;
163+
};
164+
tx->Execute(cb, true);
165+
tx->Refurbish();
164166
}
165167

166168
void Transaction::Init(unsigned num_shards) {

tests/dragonfly/replication_test.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -2963,7 +2963,11 @@ async def test_bug_in_json_memory_tracking(df_factory: DflyInstanceFactory):
29632963
"""
29642964
This test reproduces a bug in the JSON memory tracking.
29652965
"""
2966-
master = df_factory.create(proactor_threads=2, serialization_max_chunk_size=1)
2966+
master = df_factory.create(
2967+
proactor_threads=2,
2968+
serialization_max_chunk_size=1,
2969+
vmodule="replica=2,dflycmd=2,snapshot=1,rdb_save=1,rdb_load=1,journal_slice=2",
2970+
)
29672971
replicas = [df_factory.create(proactor_threads=2) for i in range(2)]
29682972

29692973
# Start instances and connect clients

0 commit comments

Comments
 (0)