@@ -863,7 +863,7 @@ StorageProperties MagmaKVStore::getStorageProperties() const {
863863 StorageProperties::AutomaticDeduplication::No,
864864 StorageProperties::PrepareCounting::No,
865865 StorageProperties::CompactionStaleItemCallbacks::Yes,
866- StorageProperties::HistoryRetentionAvailable::No );
866+ StorageProperties::HistoryRetentionAvailable::Yes );
867867 return rv;
868868}
869869
@@ -1683,8 +1683,7 @@ std::unique_ptr<BySeqnoScanContext> MagmaKVStore::initBySeqnoScanContext(
16831683 getDroppedStatus.String ());
16841684 }
16851685
1686- // @todo:assign this using magma->GetOldestHistorySeqno(snapshot);
1687- auto historyStartSeqno = 0 ;
1686+ auto historyStartSeqno = magma->GetOldestHistorySeqno (snapshot);
16881687 if (logger->should_log (spdlog::level::info)) {
16891688 logger->info (
16901689 " MagmaKVStore::initBySeqnoScanContext {} seqno:{} endSeqno:{}"
@@ -1797,8 +1796,7 @@ std::unique_ptr<ByIdScanContext> MagmaKVStore::initByIdScanContext(
17971796 return nullptr ;
17981797 }
17991798
1800- // @todo:assign this using magma->GetOldestHistorySeqno(snapshot);
1801- auto historyStartSeqno = 0 ;
1799+ auto historyStartSeqno = magma->GetOldestHistorySeqno (snapshot);
18021800 logger->info (
18031801 " MagmaKVStore::initByIdScanContext {} historyStartSeqno:{} "
18041802 " KeyIterator:{}" ,
@@ -1818,13 +1816,16 @@ std::unique_ptr<ByIdScanContext> MagmaKVStore::initByIdScanContext(
18181816 historyStartSeqno);
18191817}
18201818
1819+ scan_error_t MagmaKVStore::scan (BySeqnoScanContext& ctx) const {
1820+ return scan (ctx, magma::Magma::SeqIterator::Mode::Snapshot);
1821+ }
1822+
18211823scan_error_t MagmaKVStore::scanAllVersions (BySeqnoScanContext& ctx) const {
1822- // @todo use magma's mode
1823- // return scan(ctx, magma::Magma::SeqIterator::Mode::History);
1824- return scan (ctx);
1824+ return scan (ctx, magma::Magma::SeqIterator::Mode::History);
18251825}
18261826
1827- scan_error_t MagmaKVStore::scan (BySeqnoScanContext& ctx) const {
1827+ scan_error_t MagmaKVStore::scan (BySeqnoScanContext& ctx,
1828+ magma::Magma::SeqIterator::Mode mode) const {
18281829 if (ctx.lastReadSeqno == ctx.maxSeqno ) {
18291830 logger->TRACE (" MagmaKVStore::scan {} lastReadSeqno:{} == maxSeqno:{}" ,
18301831 ctx.vbid ,
@@ -1837,7 +1838,8 @@ scan_error_t MagmaKVStore::scan(BySeqnoScanContext& ctx) const {
18371838 startSeqno = ctx.lastReadSeqno + 1 ;
18381839 }
18391840 auto & mctx = dynamic_cast <MagmaScanContext&>(ctx);
1840- for (mctx.itr ->Seek (startSeqno, ctx.maxSeqno ); mctx.itr ->Valid ();
1841+ for (mctx.itr ->Initialize (startSeqno, ctx.maxSeqno , mode);
1842+ mctx.itr ->Valid ();
18411843 mctx.itr ->Next ()) {
18421844 Slice keySlice, metaSlice, valSlice;
18431845 uint64_t seqno;
@@ -3710,3 +3712,7 @@ std::pair<Status, uint64_t> MagmaKVStore::getOldestRollbackableHighSeqno(
37103712
37113713 return {status, seqno};
37123714}
3715+
3716+ void MagmaKVStore::setHistoryRetentionBytes (size_t size) {
3717+ magma->SetHistoryRetentionSize (size);
3718+ }
0 commit comments