There are no users.
Signed-off-by: Sage Weil <sage@redhat.com>
return std::make_shared<IteratorImpl>(prefix, get_iterator());
}
- WholeSpaceIterator get_snapshot_iterator() {
- return _get_snapshot_iterator();
- }
-
- Iterator get_snapshot_iterator(const std::string &prefix) {
- return std::make_shared<IteratorImpl>(prefix, get_snapshot_iterator());
- }
-
virtual uint64_t get_estimated_size(std::map<std::string,uint64_t> &extra) = 0;
virtual int get_statfs(struct store_statfs_t *buf) {
return -EOPNOTSUPP;
std::shared_ptr<MergeOperator> > > merge_ops;
virtual WholeSpaceIterator _get_iterator() = 0;
- virtual WholeSpaceIterator _get_snapshot_iterator() = 0;
};
#endif
WholeSpaceIterator _get_iterator() {
return std::make_shared<KineticWholeSpaceIteratorImpl>(kinetic_conn.get());
}
-
- // TODO: remove snapshots from interface
- WholeSpaceIterator _get_snapshot_iterator() {
- return _get_iterator();
- }
-
};
#endif
}
};
- class LevelDBSnapshotIteratorImpl : public LevelDBWholeSpaceIteratorImpl {
- leveldb::DB *db;
- const leveldb::Snapshot *snapshot;
- public:
- LevelDBSnapshotIteratorImpl(leveldb::DB *db, const leveldb::Snapshot *s,
- leveldb::Iterator *iter) :
- LevelDBWholeSpaceIteratorImpl(iter), db(db), snapshot(s) { }
-
- ~LevelDBSnapshotIteratorImpl() {
- assert(snapshot != NULL);
- db->ReleaseSnapshot(snapshot);
- }
- };
-
/// Utility
static string combine_strings(const string &prefix, const string &value);
static int split_key(leveldb::Slice in, string *prefix, string *key);
db->NewIterator(leveldb::ReadOptions()));
}
- WholeSpaceIterator _get_snapshot_iterator() {
- const leveldb::Snapshot *snapshot;
- leveldb::ReadOptions options;
-
- snapshot = db->GetSnapshot();
- options.snapshot = snapshot;
-
- return std::make_shared<LevelDBSnapshotIteratorImpl>(
- db.get(), snapshot,
- db->NewIterator(options));
- }
-
};
#endif
free_last();
}
-KeyValueDB::WholeSpaceIterator MemDB::_get_snapshot_iterator()
-{
- assert(0);
-}
-
int MemDB::MDBWholeSpaceIteratorImpl::upper_bound(const std::string &prefix,
const std::string &after) {
return std::shared_ptr<KeyValueDB::WholeSpaceIteratorImpl>(
new MDBWholeSpaceIteratorImpl(&m_map, &m_lock, &iterator_seq_no, m_using_btree));
}
-
- WholeSpaceIterator _get_snapshot_iterator();
};
#endif
db->NewIterator(rocksdb::ReadOptions()));
}
-RocksDBStore::WholeSpaceIterator RocksDBStore::_get_snapshot_iterator()
-{
- const rocksdb::Snapshot *snapshot;
- rocksdb::ReadOptions options;
-
- snapshot = db->GetSnapshot();
- options.snapshot = snapshot;
-
- return std::make_shared<RocksDBSnapshotIteratorImpl>(
- db, snapshot, db->NewIterator(options));
-}
-
-RocksDBStore::RocksDBSnapshotIteratorImpl::~RocksDBSnapshotIteratorImpl()
-{
- db->ReleaseSnapshot(snapshot);
-}
int status();
};
- class RocksDBSnapshotIteratorImpl : public RocksDBWholeSpaceIteratorImpl {
- rocksdb::DB *db;
- const rocksdb::Snapshot *snapshot;
- public:
- RocksDBSnapshotIteratorImpl(rocksdb::DB *db, const rocksdb::Snapshot *s,
- rocksdb::Iterator *iter) :
- RocksDBWholeSpaceIteratorImpl(iter), db(db), snapshot(s) { }
-
- ~RocksDBSnapshotIteratorImpl();
- };
-
/// Utility
static string combine_strings(const string &prefix, const string &value);
static int split_key(rocksdb::Slice in, string *prefix, string *key);
protected:
WholeSpaceIterator _get_iterator();
-
- WholeSpaceIterator _get_snapshot_iterator();
-
};
}
};
-KeyValueDB::WholeSpaceIterator KeyValueDBMemory::_get_snapshot_iterator() {
- KeyValueDBMemory *snap_db = new KeyValueDBMemory(this);
- return ceph::shared_ptr<KeyValueDB::WholeSpaceIteratorImpl>(
- new WholeSpaceSnapshotMemIterator(snap_db)
- );
-}
protected:
WholeSpaceIterator _get_iterator();
- WholeSpaceIterator _get_snapshot_iterator();
};
}
void clear(KeyValueDB *store) {
- KeyValueDB::WholeSpaceIterator it = store->get_snapshot_iterator();
+ KeyValueDB::WholeSpaceIterator it = store->get_iterator();
it->seek_to_first();
KeyValueDB::Transaction t = store->get_transaction();
while (it->valid()) {
<< "over the mock store without using snapshots" << std::endl;
}
-TEST_F(RmKeysTest, RmKeysWhileIteratingSnapshotLevelDB)
-{
- SCOPED_TRACE("LevelDB -- WholeSpaceSnapshotIterator");
- RmKeysWhileIteratingSnapshot(db.get(), db->get_snapshot_iterator());
- ASSERT_FALSE(HasFatalFailure());
-}
-
-TEST_F(RmKeysTest, RmKeysWhileIteratingSnapshotMockDB)
-{
- SCOPED_TRACE("Mock DB -- WholeSpaceSnapshotIterator");
- RmKeysWhileIteratingSnapshot(mock.get(), mock->get_snapshot_iterator());
- ASSERT_FALSE(HasFatalFailure());
-}
-
// ------- Set Keys / Update Values -------
class SetKeysTest : public IteratorTest
{
ASSERT_FALSE(HasFatalFailure());
}
-TEST_F(SetKeysTest, SetKeysWhileIteratingSnapshotLevelDB)
-{
- SCOPED_TRACE("LevelDB: SetKeysWhileIteratingSnapshotLevelDB");
- SetKeysWhileIteratingSnapshot(db.get(), db->get_snapshot_iterator());
- ASSERT_FALSE(HasFatalFailure());
-}
-
-TEST_F(SetKeysTest, SetKeysWhileIteratingSnapshotMockDB)
-{
- SCOPED_TRACE("MockDB: SetKeysWhileIteratingSnapshotMockDB");
- SetKeysWhileIteratingSnapshot(mock.get(), mock->get_snapshot_iterator());
- ASSERT_FALSE(HasFatalFailure());
-}
-
TEST_F(SetKeysTest, DISABLED_UpdateValuesWhileIteratingLevelDB)
{
SCOPED_TRACE("LevelDB: UpdateValuesWhileIteratingLevelDB");
ASSERT_FALSE(HasFatalFailure());
}
-TEST_F(SetKeysTest, UpdateValuesWhileIteratingSnapshotLevelDB)
-{
- SCOPED_TRACE("LevelDB: UpdateValuesWhileIteratingSnapshotLevelDB");
- UpdateValuesWhileIteratingSnapshot(db.get(), db->get_snapshot_iterator());
- ASSERT_FALSE(HasFatalFailure());
-}
-
-TEST_F(SetKeysTest, UpdateValuesWhileIteratingSnapshotMockDB)
-{
- SCOPED_TRACE("MockDB: UpdateValuesWhileIteratingSnapshotMockDB");
- UpdateValuesWhileIteratingSnapshot(mock.get(), mock->get_snapshot_iterator());
- ASSERT_FALSE(HasFatalFailure());
-}
-
-
class BoundsTest : public IteratorTest
{
public: