WriteUnPrepared: Enable auto-compaction after max_evicted_seq_ init (#5128)
Summary: Compaction would depend on max_evicted_seq_ value. The ::Initialize method should do that after max_evicted_seq_ is properly initialized. The patch also back ports #4853 from WritePrepared txn to WriteUnPrepared. Pull Request resolved: https://github.com/facebook/rocksdb/pull/5128 Differential Revision: D14686562 Pulled By: maysamyabandeh fbshipit-source-id: b2355025712a72676ac3b20a95258adcf4774490
This commit is contained in:
parent
f29dc1b906
commit
a703f16da9
@ -234,11 +234,6 @@ Status WriteUnpreparedTxnDB::Initialize(
|
|||||||
compaction_enabled_cf_handles.push_back(handles[index]);
|
compaction_enabled_cf_handles.push_back(handles[index]);
|
||||||
}
|
}
|
||||||
|
|
||||||
Status s = EnableAutoCompaction(compaction_enabled_cf_handles);
|
|
||||||
if (!s.ok()) {
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
|
|
||||||
// create 'real' transactions from recovered shell transactions
|
// create 'real' transactions from recovered shell transactions
|
||||||
auto rtxns = dbimpl->recovered_transactions();
|
auto rtxns = dbimpl->recovered_transactions();
|
||||||
for (auto rtxn : rtxns) {
|
for (auto rtxn : rtxns) {
|
||||||
@ -270,7 +265,7 @@ Status WriteUnpreparedTxnDB::Initialize(
|
|||||||
|
|
||||||
real_trx->SetLogNumber(first_log_number);
|
real_trx->SetLogNumber(first_log_number);
|
||||||
real_trx->SetId(first_seq);
|
real_trx->SetId(first_seq);
|
||||||
s = real_trx->SetName(recovered_trx->name_);
|
Status s = real_trx->SetName(recovered_trx->name_);
|
||||||
if (!s.ok()) {
|
if (!s.ok()) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -308,6 +303,20 @@ Status WriteUnpreparedTxnDB::Initialize(
|
|||||||
SequenceNumber prev_max = max_evicted_seq_;
|
SequenceNumber prev_max = max_evicted_seq_;
|
||||||
SequenceNumber last_seq = db_impl_->GetLatestSequenceNumber();
|
SequenceNumber last_seq = db_impl_->GetLatestSequenceNumber();
|
||||||
AdvanceMaxEvictedSeq(prev_max, last_seq);
|
AdvanceMaxEvictedSeq(prev_max, last_seq);
|
||||||
|
// Create a gap between max and the next snapshot. This simplifies the logic
|
||||||
|
// in IsInSnapshot by not having to consider the special case of max ==
|
||||||
|
// snapshot after recovery. This is tested in IsInSnapshotEmptyMapTest.
|
||||||
|
if (last_seq) {
|
||||||
|
db_impl_->versions_->SetLastAllocatedSequence(last_seq + 1);
|
||||||
|
db_impl_->versions_->SetLastSequence(last_seq + 1);
|
||||||
|
db_impl_->versions_->SetLastPublishedSequence(last_seq + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compaction should start only after max_evicted_seq_ is set.
|
||||||
|
Status s = EnableAutoCompaction(compaction_enabled_cf_handles);
|
||||||
|
if (!s.ok()) {
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
// Rollback unprepared transactions.
|
// Rollback unprepared transactions.
|
||||||
for (auto rtxn : rtxns) {
|
for (auto rtxn : rtxns) {
|
||||||
|
Loading…
Reference in New Issue
Block a user