Fix clang failure (#8621)

Summary:
Fixed clang failure because of memory leak

Pull Request resolved: https://github.com/facebook/rocksdb/pull/8621

Test Plan: CircleCI clang job

Reviewed By: pdillinger

Differential Revision: D30114337

Pulled By: akankshamahajan15

fbshipit-source-id: 16572b9bcbaa053c2ab7bc1c344148d0e6f8039c
main
Akanksha Mahajan 4 years ago committed by Facebook GitHub Bot
parent c268859aaa
commit a074d46a5a
  1. 42
      table/block_based/block_based_table_builder.cc

@ -1501,24 +1501,30 @@ Status BlockBasedTableBuilder::InsertBlockInCache(const Slice& block_contents,
const size_t read_amp_bytes_per_bit = const size_t read_amp_bytes_per_bit =
rep_->table_options.read_amp_bytes_per_bit; rep_->table_options.read_amp_bytes_per_bit;
TBlocklike* block_holder = BlocklikeTraits<TBlocklike>::Create( // TODO akanksha:: Dedup below code by calling
std::move(results), read_amp_bytes_per_bit, // BlockBasedTable::PutDataBlockToCache.
rep_->ioptions.statistics.get(), std::unique_ptr<TBlocklike> block_holder(
false /*rep_->blocks_definitely_zstd_compressed*/, BlocklikeTraits<TBlocklike>::Create(
rep_->table_options.filter_policy.get()); std::move(results), read_amp_bytes_per_bit,
rep_->ioptions.statistics.get(),
if (block_holder->own_bytes()) { false /*rep_->blocks_definitely_zstd_compressed*/,
size_t charge = block_holder->ApproximateMemoryUsage(); rep_->table_options.filter_policy.get()));
s = block_cache->Insert(key, block_holder, charge,
&DeleteEntryCached<TBlocklike>); assert(block_holder->own_bytes());
size_t charge = block_holder->ApproximateMemoryUsage();
if (s.ok()) { s = block_cache->Insert(
BlockBasedTable::UpdateCacheInsertionMetrics( key, block_holder.get(),
block_type, nullptr /*get_context*/, charge, s.IsOkOverwritten(), BlocklikeTraits<TBlocklike>::GetCacheItemHelper(block_type), charge,
rep_->ioptions.stats); nullptr, Cache::Priority::LOW);
} else {
RecordTick(rep_->ioptions.stats, BLOCK_CACHE_ADD_FAILURES); if (s.ok()) {
} // Release ownership of block_holder.
block_holder.release();
BlockBasedTable::UpdateCacheInsertionMetrics(
block_type, nullptr /*get_context*/, charge, s.IsOkOverwritten(),
rep_->ioptions.stats);
} else {
RecordTick(rep_->ioptions.stats, BLOCK_CACHE_ADD_FAILURES);
} }
} }
return s; return s;

Loading…
Cancel
Save