GetSequence API in write batch.

Summary:
WriteBatch is now used by the GetUpdatesSinceAPI. This API is external
and will be used by the rocks server. Rocks Server and others will need
to know about the Sequence Number in the WriteBatch. This public method
will allow for that.

Test Plan: make all check.

Reviewers: dhruba

Reviewed By: dhruba

CC: leveldb

Differential Revision: https://reviews.facebook.net/D7293
main
Abhishek Kona 12 years ago
parent d0a30935c6
commit 2ba866e0c5
  1. 8
      db/db_test.cc
  2. 4
      db/transaction_log_iterator_impl.cc
  3. 2
      db/transaction_log_iterator_impl.h
  4. 5
      include/leveldb/transaction_log_iterator.h

@ -2284,8 +2284,8 @@ TEST(DBTest, TransactionLogIterator) {
SequenceNumber lastSequence = 0;
while (iter->Valid()) {
WriteBatch batch;
iter->GetBatch(&batch);
SequenceNumber current = WriteBatchInternal::Sequence(&batch);
SequenceNumber current;
iter->GetBatch(&batch, &current);
ASSERT_TRUE(current > lastSequence);
++i;
lastSequence = current;
@ -2310,8 +2310,8 @@ TEST(DBTest, TransactionLogIterator) {
SequenceNumber lastSequence = 0;
while (iter->Valid()) {
WriteBatch batch;
iter->GetBatch(&batch);
SequenceNumber current = WriteBatchInternal::Sequence(&batch);
SequenceNumber current;
iter->GetBatch(&batch, &current);
ASSERT_TRUE(current > lastSequence);
lastSequence = current;
ASSERT_TRUE(iter->status().ok());

@ -51,9 +51,11 @@ Status TransactionLogIteratorImpl::OpenLogFile(const LogFile& logFile,
}
}
void TransactionLogIteratorImpl::GetBatch(WriteBatch* batch) {
void TransactionLogIteratorImpl::GetBatch(WriteBatch* batch,
SequenceNumber* seq) {
assert(isValid_); // cannot call in a non valid state.
WriteBatchInternal::SetContents(batch, currentRecord_);
*seq = WriteBatchInternal::Sequence(batch);
}
Status TransactionLogIteratorImpl::status() {

@ -43,7 +43,7 @@ class TransactionLogIteratorImpl : public TransactionLogIterator {
virtual Status status();
virtual void GetBatch(WriteBatch* batch);
virtual void GetBatch(WriteBatch* batch, SequenceNumber* seq);
private:
const std::string& dbname_;

@ -26,8 +26,9 @@ class TransactionLogIterator {
// Return the Error Status when the iterator is not Valid.
virtual Status status() = 0;
// If valid return's the current write_batch.
virtual void GetBatch(WriteBatch* batch) = 0;
// If valid return's the current write_batch and the sequence number of the
// latest transaction contained in the batch.
virtual void GetBatch(WriteBatch* batch, SequenceNumber* seq) = 0;
};
} // namespace leveldb

Loading…
Cancel
Save