rocksdb/util
Andrew Kryczka 94a0c32e73 Fix LRU Ref() for handles with external references only
Summary:
For case !handle->InCache() && handle->refs >= 1 (the third case mentioned in lru_cache.h), the key was overwritten by Insert(). In this case, the refcount can still be incremented, and the cache handle will never enter LRU list. Fix Ref() logic for this case.
Closes https://github.com/facebook/rocksdb/pull/1808

Differential Revision: D4467656

Pulled By: ajkr

fbshipit-source-id: c0784d8
2017-01-26 10:54:15 -08:00
..
aligned_buffer.h direct reads refactor 2017-01-11 16:54:12 -08:00
allocator.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
arena_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
arena.cc FreeBSD: malloc_usable_size is in <malloc_np.h> (#1428) 2016-10-28 10:44:52 -07:00
arena.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
autovector_test.cc Eliminate use of 'using namespace std'. Also remove a number of ADL references to std functions. 2016-05-20 07:42:18 -07:00
autovector.h Implement non-exclusive locks 2016-12-05 17:39:17 -08:00
bloom_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
bloom.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
build_version.cc.in Makefile: generate util/build_version.cc from .in file (#1384) 2016-10-25 11:31:39 -07:00
build_version.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
cache_bench.cc Introduce ClockCache 2016-08-19 12:28:19 -07:00
cache_test.cc Allow incrementing refcount on cache handles 2017-01-10 16:54:20 -08:00
cf_options.cc Range deletion microoptimizations 2016-11-21 12:24:13 -08:00
cf_options.h Range deletion microoptimizations 2016-11-21 12:24:13 -08:00
channel.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
clock_cache.cc Allow incrementing refcount on cache handles 2017-01-10 16:54:20 -08:00
clock_cache.h Introduce ClockCache 2016-08-19 12:28:19 -07:00
coding_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
coding.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
coding.h TableBuilder / TableReader support for range deletion 2016-08-19 15:10:31 -07:00
compaction_job_stats_impl.cc Single Delete Mismatch and Fallthrough statistics 2016-08-16 08:21:43 -07:00
comparator.cc Improve BytewiseComparatorImpl::FindShortestSeparator 2016-04-25 23:02:14 -07:00
compression.h Remove use of deprecated LZ4 function 2016-11-21 12:24:14 -08:00
concurrent_arena.cc Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
concurrent_arena.h Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
crc32c_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
crc32c.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
crc32c.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
db_options.cc direct io write support 2016-12-22 13:09:19 -08:00
db_options.h direct io write support 2016-12-22 13:09:19 -08:00
delete_scheduler_test.cc Remove sst_file_manager option from LITE 2016-12-21 17:54:21 -08:00
delete_scheduler.cc Remove sst_file_manager option from LITE 2016-12-21 17:54:21 -08:00
delete_scheduler.h Remove sst_file_manager option from LITE 2016-12-21 17:54:21 -08:00
dynamic_bloom_test.cc gcc-7 requires include <functional> for std::function 2016-12-16 11:24:18 -08:00
dynamic_bloom.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
dynamic_bloom.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
env_basic_test.cc Generalize Env registration framework 2017-01-25 16:09:14 -08:00
env_chroot.cc Support POSIX RandomRWFile 2016-09-13 12:08:22 -07:00
env_chroot.h Introduce chroot Env 2016-05-06 17:42:50 -07:00
env_hdfs.cc Return finer-granularity status from Env::GetChildren* 2016-12-12 12:54:13 -08:00
env_posix.cc direct reads refactor 2017-01-11 16:54:12 -08:00
env_test.cc EnvPosixTestWithParam should wait for all threads to finish 2017-01-25 15:54:13 -08:00
env.cc direct io write support 2016-12-22 13:09:19 -08:00
event_logger_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
event_logger.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
event_logger.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
fault_injection_test_env.cc Flush job should release reference current version if sync log failed 2017-01-19 23:09:15 -08:00
fault_injection_test_env.h [rocksdb] Recovery path sequence miscount fix 2016-05-10 14:06:07 -07:00
file_reader_writer_test.cc change UseDirectIO() to use_direct_io() 2017-01-13 12:09:15 -08:00
file_reader_writer.cc change UseDirectIO() to use_direct_io() 2017-01-13 12:09:15 -08:00
file_reader_writer.h change UseDirectIO() to use_direct_io() 2017-01-13 12:09:15 -08:00
file_util.cc Always fsync the file after file copying 2016-12-28 19:09:16 -08:00
file_util.h Always fsync the file after file copying 2016-12-28 19:09:16 -08:00
filelock_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
filter_policy.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
hash_map.h Use more efficient hash map for deadlock detection 2016-11-19 11:39:15 -08:00
hash.cc Fix travis (compile for clang < 3.9) 2016-12-01 10:09:22 -08:00
hash.h Optimize sequential insert into memtable - Part 1: Interface 2016-11-13 19:09:18 -08:00
heap_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
heap.h Cache heap::downheap() root comparison (optimize heap cmp call) 2016-12-01 13:39:14 -08:00
histogram_test.cc Fix Build Error 2016-03-11 22:56:25 -08:00
histogram_windowing.cc Fix in HistogramWindowingImpl 2016-03-17 14:28:41 -07:00
histogram_windowing.h Histogram Concurrency Improvement and Time-Windowing Support 2016-03-11 16:54:25 -08:00
histogram.cc util/histogram.cc: HistogramStat::toString buffer insufficient 2016-12-13 14:09:12 -08:00
histogram.h Histogram Concurrency Improvement and Time-Windowing Support 2016-03-11 16:54:25 -08:00
instrumented_mutex.cc DBSSTTest.RateLimitedDelete: not to use real clock 2016-10-24 10:35:00 -07:00
instrumented_mutex.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
io_posix.cc Remove fadvise with direct IO read 2017-01-18 12:09:10 -08:00
io_posix.h change UseDirectIO() to use_direct_io() 2017-01-13 12:09:15 -08:00
iostats_context_imp.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
iostats_context_test.cc IOStatsContext::ToString() add option to exclude zero counters 2016-02-23 10:26:24 -08:00
iostats_context.cc IOStatsContext::ToString() add option to exclude zero counters 2016-02-23 10:26:24 -08:00
kv_map.h Store internal keys in TombstoneMap 2016-11-09 15:09:18 -08:00
log_buffer.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
log_buffer.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
log_write_bench.cc direct io write support 2016-12-22 13:09:19 -08:00
logging.cc util/logging.cc: buffer of insufficient size (gcc-7 -Werror=format-length) 2016-12-13 18:39:14 -08:00
logging.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
lru_cache_test.cc LRU cache mid-point insertion 2016-08-19 16:43:31 -07:00
lru_cache.cc Fix LRU Ref() for handles with external references only 2017-01-26 10:54:15 -08:00
lru_cache.h Allow incrementing refcount on cache handles 2017-01-10 16:54:20 -08:00
memenv.cc direct io write support 2016-12-22 13:09:19 -08:00
memory_usage.h Report memory usage by memtable insert hints map. 2016-11-15 20:24:13 -08:00
mock_env_test.cc Create env_basic_test [pluggable Env part 2] 2016-06-03 15:13:03 -07:00
mock_env.cc direct io write support 2016-12-22 13:09:19 -08:00
mock_env.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
murmurhash.cc Gcc 7 fallthrough 2016-12-14 19:24:25 -08:00
murmurhash.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
mutexlock.h Persistent Read Cache (6) Persistent cache tier implentation - File layout 2016-07-19 12:01:46 -07:00
options_helper.cc Add GetSupportedCompressions() convenience function 2017-01-06 11:24:14 -08:00
options_helper.h direct io write support 2016-12-22 13:09:19 -08:00
options_parser.cc Remove function local statics that interfere with memory pooling (#1392) 2016-10-14 13:09:18 -07:00
options_parser.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
options_sanity_check.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
options_sanity_check.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
options_settable_test.cc direct io write support 2016-12-22 13:09:19 -08:00
options_test.cc direct io write support 2016-12-22 13:09:19 -08:00
options.cc Fix OptimizeForPointLookup() 2017-01-20 10:54:12 -08:00
perf_context_imp.h fix ios build error 2016-02-17 20:22:40 +08:00
perf_context.cc Less linear search in DBIter::Seek() when keys are overwritten a lot 2016-11-28 10:24:11 -08:00
perf_level_imp.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
perf_level.cc Assert boundary checks for SetPerfLevel() 2016-06-01 09:07:09 -07:00
perf_step_timer.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
posix_logger.h Show More DB Stats in info logs 2016-10-29 16:09:18 -07:00
random.cc Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
random.h Fixes warnings and ensure correct int behavior on 32-bit platforms. 2016-03-16 22:57:57 +01:00
rate_limiter_test.cc Relax the acceptable bias RateLimiterTest::Rate test be 25% 2016-10-13 14:26:12 -07:00
rate_limiter.cc fix rate limiter to avoid starvation 2016-07-01 00:16:29 -07:00
rate_limiter.h Handle overflow case of rate limiter's paramters 2016-05-27 16:15:28 -07:00
sharded_cache.cc Allow incrementing refcount on cache handles 2017-01-10 16:54:20 -08:00
sharded_cache.h Allow incrementing refcount on cache handles 2017-01-10 16:54:20 -08:00
slice_transform_test.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
slice.cc Merge db/slice.cc into util/slice.cc 2016-06-10 16:37:36 -07:00
sst_file_manager_impl.cc fixed typo 2017-01-23 12:54:13 -08:00
sst_file_manager_impl.h Remove sst_file_manager option from LITE 2016-12-21 17:54:21 -08:00
statistics_test.cc Fix Statistics TickersNameMap miss match with Tickers enum 2016-07-25 16:05:50 -07:00
statistics.cc Fix deadlock when calling getMergedHistogram 2016-11-20 18:24:12 -08:00
statistics.h Add Statistics::getAndResetTickerCount(). 2016-10-11 10:54:11 -07:00
status_message.cc Add NoSpace subcode to IOError (#1320) 2016-09-07 12:37:45 -07:00
status.cc Fix rocksdb::Status::getState 2017-01-03 18:39:14 -08:00
stderr_logger.h Stderr info logger 2016-04-01 11:06:06 -07:00
stop_watch.h Use StopWatch to do statistic job in db_impl_add_file.cc 2016-08-02 14:53:29 -07:00
string_util.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
string_util.h FreeBSD does not have std::to_string (#1190) 2016-06-29 07:35:17 -07:00
sync_point.cc gcc-7 requires include <functional> for std::function 2016-12-16 11:24:18 -08:00
sync_point.h gcc-7 requires include <functional> for std::function 2016-12-16 11:24:18 -08:00
testharness.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
testharness.h Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
testutil.cc Revert "PinnableSlice" 2017-01-08 14:24:12 -08:00
testutil.h Support SST files with Global sequence numbers [reland] 2016-10-18 16:59:37 -07:00
thread_list_test.cc Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
thread_local_test.cc Fix lambda expression for clang/windows 2016-08-23 13:34:56 -07:00
thread_local.cc Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
thread_local.h util/thread_local.h: silence a clang-build warning 2017-01-15 13:24:16 -08:00
thread_operation.h Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
thread_status_impl.cc Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
thread_status_updater_debug.cc Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
thread_status_updater.cc Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
thread_status_updater.h Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
thread_status_util_debug.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
thread_status_util.cc Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
thread_status_util.h Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
threadpool_imp.cc Gcc 7 error expansion to defined 2016-12-13 18:39:14 -08:00
threadpool_imp.h Expose ThreadPool under include/rocksdb/threadpool.h 2016-08-26 10:41:35 -07:00
transaction_test_util.cc Gcc-7 buffer size insufficient 2016-12-14 19:24:26 -08:00
transaction_test_util.h Fix AppVeyor build error 2016-03-15 10:57:33 -07:00
xfunc.cc Updated all copyright headers to the new format. 2016-02-09 15:12:00 -08:00
xfunc.h gcc-7 requires include <functional> for std::function 2016-12-16 11:24:18 -08:00
xxhash.cc Enable MS Warning C4804 : unsafe use of type 'bool' in operation 2015-11-18 16:23:19 -08:00
xxhash.h Prevent xxhash symbols from polluting global namespace 2015-03-12 12:07:10 -07:00