} else {
last_flushed_sequence_ = versions_->LastSequence();
}
+ SetTickerCount(options_.statistics, SEQUENCE_NUMBER,
+ versions_->LastSequence());
}
}
// have succeeded in memtable but Status reports error for all writes.
throw std::runtime_error("In memory WriteBatch corruption!");
}
+ RecordTick(options_.statistics, SEQUENCE_NUMBER, my_batch_count);
versions_->SetLastSequence(last_sequence);
last_flushed_sequence_ = current_sequence;
}
return allTickers_[tickerType].getCount();
}
+ virtual void setTickerCount(Tickers tickerType, uint64_t count) {
+ assert(tickerType < TICKER_ENUM_MAX);
+ allTickers_[tickerType].setTickerCount(count);
+ }
+
virtual void recordTick(Tickers tickerType, uint64_t count) {
assert(tickerType < TICKER_ENUM_MAX);
allTickers_[tickerType].recordTick(count);
NUMBER_MULTIGET_BYTES_READ = 20,
NUMBER_FILTERED_DELETES = 21,
-
NUMBER_MERGE_FAILURES = 22,
+ SEQUENCE_NUMBER = 23,
- TICKER_ENUM_MAX = 23
+ TICKER_ENUM_MAX = 24
};
const std::vector<std::pair<Tickers, std::string>> TickersNameMap = {
{ NUMBER_MULTIGET_KEYS_READ, "rocksdb.number.multiget.keys.read" },
{ NUMBER_MULTIGET_BYTES_READ, "rocksdb.number.multiget.bytes.read" },
{ NUMBER_FILTERED_DELETES, "rocksdb.number.deletes.filtered" },
- { NUMBER_MERGE_FAILURES, "rocksdb.number.merge.failures" }
+ { NUMBER_MERGE_FAILURES, "rocksdb.number.merge.failures" },
+ { SEQUENCE_NUMBER, "rocksdb.sequence.number" }
};
/**
public:
Ticker() : count_(0) { }
- inline void recordTick() {
- count_++;
+ inline void setTickerCount(uint64_t count) {
+ count_ = count;
}
- inline void recordTick(int count) {
+ inline void recordTick(int count = 1) {
count_ += count;
}
virtual long getTickerCount(Tickers tickerType) = 0;
virtual void recordTick(Tickers tickerType, uint64_t count = 0) = 0;
+ virtual void setTickerCount(Tickers tickerType, uint64_t count) = 0;
virtual void measureTime(Histograms histogramType, uint64_t time) = 0;
virtual void histogramData(Histograms type, HistogramData * const data) = 0;
statistics->recordTick(ticker, count);
}
}
+
+inline void SetTickerCount(std::shared_ptr<Statistics> statistics,
+ Tickers ticker,
+ uint64_t count) {
+ assert(HistogramsNameMap.size() == HISTOGRAM_ENUM_MAX);
+ assert(TickersNameMap.size() == TICKER_ENUM_MAX);
+ if (statistics) {
+ statistics->setTickerCount(ticker, count);
+ }
+}
+
} // namespace leveldb
#endif // STORAGE_LEVELDB_INCLUDE_STATISTICS_H_