@@ -869,7 +869,7 @@ StorageProperties MagmaKVStore::getStorageProperties() const {
869869 StorageProperties::AutomaticDeduplication::No,
870870 StorageProperties::PrepareCounting::No,
871871 StorageProperties::CompactionStaleItemCallbacks::Yes,
872- StorageProperties::HistoryRetentionAvailable::No );
872+ StorageProperties::HistoryRetentionAvailable::Yes );
873873 return rv;
874874}
875875
@@ -1695,8 +1695,7 @@ std::unique_ptr<BySeqnoScanContext> MagmaKVStore::initBySeqnoScanContext(
16951695 getDroppedStatus.String ());
16961696 }
16971697
1698- // @todo:assign this using magma->GetOldestHistorySeqno(snapshot);
1699- auto historyStartSeqno = 0 ;
1698+ auto historyStartSeqno = magma->GetOldestHistorySeqno (snapshot);
17001699 if (logger->should_log (spdlog::level::info)) {
17011700 logger->info (
17021701 " MagmaKVStore::initBySeqnoScanContext {} seqno:{} endSeqno:{}"
@@ -1809,8 +1808,7 @@ std::unique_ptr<ByIdScanContext> MagmaKVStore::initByIdScanContext(
18091808 return nullptr ;
18101809 }
18111810
1812- // @todo:assign this using magma->GetOldestHistorySeqno(snapshot);
1813- auto historyStartSeqno = 0 ;
1811+ auto historyStartSeqno = magma->GetOldestHistorySeqno (snapshot);
18141812 logger->info (
18151813 " MagmaKVStore::initByIdScanContext {} historyStartSeqno:{} "
18161814 " KeyIterator:{}" ,
@@ -1830,13 +1828,16 @@ std::unique_ptr<ByIdScanContext> MagmaKVStore::initByIdScanContext(
18301828 historyStartSeqno);
18311829}
18321830
1831+ scan_error_t MagmaKVStore::scan (BySeqnoScanContext& ctx) const {
1832+ return scan (ctx, magma::Magma::SeqIterator::Mode::Snapshot);
1833+ }
1834+
18331835scan_error_t MagmaKVStore::scanAllVersions (BySeqnoScanContext& ctx) const {
1834- // @todo use magma's mode
1835- // return scan(ctx, magma::Magma::SeqIterator::Mode::History);
1836- return scan (ctx);
1836+ return scan (ctx, magma::Magma::SeqIterator::Mode::History);
18371837}
18381838
1839- scan_error_t MagmaKVStore::scan (BySeqnoScanContext& ctx) const {
1839+ scan_error_t MagmaKVStore::scan (BySeqnoScanContext& ctx,
1840+ magma::Magma::SeqIterator::Mode mode) const {
18401841 if (ctx.lastReadSeqno == ctx.maxSeqno ) {
18411842 logger->TRACE (" MagmaKVStore::scan {} lastReadSeqno:{} == maxSeqno:{}" ,
18421843 ctx.vbid ,
@@ -1849,7 +1850,8 @@ scan_error_t MagmaKVStore::scan(BySeqnoScanContext& ctx) const {
18491850 startSeqno = ctx.lastReadSeqno + 1 ;
18501851 }
18511852 auto & mctx = dynamic_cast <MagmaScanContext&>(ctx);
1852- for (mctx.itr ->Seek (startSeqno, ctx.maxSeqno ); mctx.itr ->Valid ();
1853+ for (mctx.itr ->Initialize (startSeqno, ctx.maxSeqno , mode);
1854+ mctx.itr ->Valid ();
18531855 mctx.itr ->Next ()) {
18541856 Slice keySlice, metaSlice, valSlice;
18551857 uint64_t seqno;
@@ -3722,3 +3724,7 @@ std::pair<Status, uint64_t> MagmaKVStore::getOldestRollbackableHighSeqno(
37223724
37233725 return {status, seqno};
37243726}
3727+
3728+ void MagmaKVStore::setHistoryRetentionBytes (size_t size) {
3729+ magma->SetHistoryRetentionSize (size);
3730+ }
0 commit comments