@@ -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
@@ -1682,8 +1682,7 @@ std::unique_ptr<BySeqnoScanContext> MagmaKVStore::initBySeqnoScanContext(
16821682 getDroppedStatus.String ());
16831683 }
16841684
1685- // @todo:assign this using magma->GetOldestHistorySeqno(snapshot);
1686- auto historyStartSeqno = 0 ;
1685+ auto historyStartSeqno = magma->GetOldestHistorySeqno (snapshot);
16871686 if (logger->should_log (spdlog::level::info)) {
16881687 logger->info (
16891688 " MagmaKVStore::initBySeqnoScanContext {} seqno:{} endSeqno:{}"
@@ -1796,8 +1795,7 @@ std::unique_ptr<ByIdScanContext> MagmaKVStore::initByIdScanContext(
17961795 return nullptr ;
17971796 }
17981797
1799- // @todo:assign this using magma->GetOldestHistorySeqno(snapshot);
1800- auto historyStartSeqno = 0 ;
1798+ auto historyStartSeqno = magma->GetOldestHistorySeqno (snapshot);
18011799 logger->info (
18021800 " MagmaKVStore::initByIdScanContext {} historyStartSeqno:{} "
18031801 " KeyIterator:{}" ,
@@ -1817,13 +1815,16 @@ std::unique_ptr<ByIdScanContext> MagmaKVStore::initByIdScanContext(
18171815 std::move (itr));
18181816}
18191817
1818+ scan_error_t MagmaKVStore::scan (BySeqnoScanContext& ctx) const {
1819+ return scan (ctx, magma::Magma::SeqIterator::Mode::Snapshot);
1820+ }
1821+
18201822scan_error_t MagmaKVStore::scanAllVersions (BySeqnoScanContext& ctx) const {
1821- // @todo use magma's mode
1822- // return scan(ctx, magma::Magma::SeqIterator::Mode::History);
1823- return scan (ctx);
1823+ return scan (ctx, magma::Magma::SeqIterator::Mode::History);
18241824}
18251825
1826- scan_error_t MagmaKVStore::scan (BySeqnoScanContext& ctx) const {
1826+ scan_error_t MagmaKVStore::scan (BySeqnoScanContext& ctx,
1827+ magma::Magma::SeqIterator::Mode mode) const {
18271828 if (ctx.lastReadSeqno == ctx.maxSeqno ) {
18281829 logger->TRACE (" MagmaKVStore::scan {} lastReadSeqno:{} == maxSeqno:{}" ,
18291830 ctx.vbid ,
@@ -1836,7 +1837,8 @@ scan_error_t MagmaKVStore::scan(BySeqnoScanContext& ctx) const {
18361837 startSeqno = ctx.lastReadSeqno + 1 ;
18371838 }
18381839 auto & mctx = dynamic_cast <MagmaScanContext&>(ctx);
1839- for (mctx.itr ->Seek (startSeqno, ctx.maxSeqno ); mctx.itr ->Valid ();
1840+ for (mctx.itr ->Initialize (startSeqno, ctx.maxSeqno , mode);
1841+ mctx.itr ->Valid ();
18401842 mctx.itr ->Next ()) {
18411843 Slice keySlice, metaSlice, valSlice;
18421844 uint64_t seqno;
@@ -3709,3 +3711,7 @@ std::pair<Status, uint64_t> MagmaKVStore::getOldestRollbackableHighSeqno(
37093711
37103712 return {status, seqno};
37113713}
3714+
3715+ void MagmaKVStore::setHistoryRetentionBytes (size_t size) {
3716+ magma->SetHistoryRetentionSize (size);
3717+ }
0 commit comments