rocksdb/db
Maysam Yabandeh 36651d14ee Moving static AdaptationContext to outside function
Summary:
Moving static AdaptationContext to outside function to bypass tsan's false report with static initializers.

It is because with optimization enabled std::atomic is simplified to as a simple read with no locks. The existing lock produced by static initializer is __cxa_guard_acquire which is apparently not understood by tsan as it is different from normal locks (__gthrw_pthread_mutex_lock).

This is a known problem with tsan:
https://stackoverflow.com/questions/27464190/gccs-tsan-reports-a-data-race-with-a-thread-safe-static-local
https://stackoverflow.com/questions/42062557/c-multithreading-is-initialization-of-a-local-static-lambda-thread-safe

A workaround that I tried was to move the static variable outside the function. It is not a good coding practice since it gives global visibility to variable but it is a hackish workaround until g++ tsan is improved.
Closes https://github.com/facebook/rocksdb/pull/2598

Differential Revision: D5445281

Pulled By: yiwu-arbug

fbshipit-source-id: 6142bd934eb5852d8fd7ce027af593ba697ed41d
2017-07-18 16:58:22 -07:00
..
builder.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
builder.h Change RocksDB License 2017-07-15 16:11:23 -07:00
c_test.c support merge and delete in file ingestion 2017-05-26 12:11:21 -07:00
c.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
column_family_test.cc Fix column_family_test with LITE build 2017-07-17 15:08:24 -07:00
column_family.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
column_family.h Change RocksDB License 2017-07-15 16:11:23 -07:00
compact_files_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
compacted_db_impl.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
compacted_db_impl.h Change RocksDB License 2017-07-15 16:11:23 -07:00
compaction_iteration_stats.h Change RocksDB License 2017-07-15 16:11:23 -07:00
compaction_iterator_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
compaction_iterator.cc Remove some left-over BSD headers 2017-07-18 11:56:57 -07:00
compaction_iterator.h Remove some left-over BSD headers 2017-07-18 11:56:57 -07:00
compaction_job_stats_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
compaction_job_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
compaction_job.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
compaction_job.h Change RocksDB License 2017-07-15 16:11:23 -07:00
compaction_picker_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
compaction_picker_universal.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
compaction_picker_universal.h Change RocksDB License 2017-07-15 16:11:23 -07:00
compaction_picker.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
compaction_picker.h Change RocksDB License 2017-07-15 16:11:23 -07:00
compaction.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
compaction.h Change RocksDB License 2017-07-15 16:11:23 -07:00
comparator_db_test.cc Remove some left-over BSD headers 2017-07-18 11:56:57 -07:00
convenience.cc Remove some left-over BSD headers 2017-07-18 11:56:57 -07:00
corruption_test.cc CodeMod: Prefer ADD_FAILURE() over EXPECT_TRUE(false), et cetera 2017-07-16 21:26:02 -07:00
cuckoo_table_db_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_basic_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_block_cache_test.cc CodeMod: Prefer ADD_FAILURE() over EXPECT_TRUE(false), et cetera 2017-07-16 21:26:02 -07:00
db_bloom_filter_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_compaction_filter_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_compaction_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_dynamic_level_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_encryption_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_filesnapshot.cc Remove some left-over BSD headers 2017-07-18 11:56:57 -07:00
db_flush_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_impl_compaction_flush.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_impl_debug.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_impl_experimental.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_impl_files.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_impl_open.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_impl_readonly.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_impl_readonly.h Change RocksDB License 2017-07-15 16:11:23 -07:00
db_impl_write.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_impl.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_impl.h Change RocksDB License 2017-07-15 16:11:23 -07:00
db_info_dumper.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_info_dumper.h Change RocksDB License 2017-07-15 16:11:23 -07:00
db_inplace_update_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_io_failure_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_iter_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_iter.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_iter.h Change RocksDB License 2017-07-15 16:11:23 -07:00
db_iterator_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_log_iter_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_memtable_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_merge_operator_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_options_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_properties_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_range_del_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_sst_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_statistics_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_table_properties_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_tailing_iter_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_test2.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_test_util.cc enable PinnableSlice for RowCache 2017-07-17 15:08:30 -07:00
db_test_util.h enable PinnableSlice for RowCache 2017-07-17 15:08:30 -07:00
db_test.cc enable PinnableSlice for RowCache 2017-07-17 15:08:30 -07:00
db_universal_compaction_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_wal_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
db_write_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
dbformat_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
dbformat.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
dbformat.h Change RocksDB License 2017-07-15 16:11:23 -07:00
deletefile_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
event_helpers.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
event_helpers.h Change RocksDB License 2017-07-15 16:11:23 -07:00
experimental.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
external_sst_file_basic_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
external_sst_file_ingestion_job.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
external_sst_file_ingestion_job.h Change RocksDB License 2017-07-15 16:11:23 -07:00
external_sst_file_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
fault_injection_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
file_indexer_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
file_indexer.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
file_indexer.h Change RocksDB License 2017-07-15 16:11:23 -07:00
filename_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
flush_job_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
flush_job.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
flush_job.h Change RocksDB License 2017-07-15 16:11:23 -07:00
flush_scheduler.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
flush_scheduler.h Change RocksDB License 2017-07-15 16:11:23 -07:00
forward_iterator_bench.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
forward_iterator.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
forward_iterator.h Change RocksDB License 2017-07-15 16:11:23 -07:00
internal_stats.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
internal_stats.h Change RocksDB License 2017-07-15 16:11:23 -07:00
job_context.h Change RocksDB License 2017-07-15 16:11:23 -07:00
listener_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
log_format.h Change RocksDB License 2017-07-15 16:11:23 -07:00
log_reader.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
log_reader.h Change RocksDB License 2017-07-15 16:11:23 -07:00
log_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
log_writer.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
log_writer.h Change RocksDB License 2017-07-15 16:11:23 -07:00
malloc_stats.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
malloc_stats.h Change RocksDB License 2017-07-15 16:11:23 -07:00
managed_iterator.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
managed_iterator.h Change RocksDB License 2017-07-15 16:11:23 -07:00
manual_compaction_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
memtable_list_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
memtable_list.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
memtable_list.h Change RocksDB License 2017-07-15 16:11:23 -07:00
memtable.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
memtable.h Change RocksDB License 2017-07-15 16:11:23 -07:00
merge_context.h Change RocksDB License 2017-07-15 16:11:23 -07:00
merge_helper_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
merge_helper.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
merge_helper.h Change RocksDB License 2017-07-15 16:11:23 -07:00
merge_operator.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
merge_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
options_file_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
perf_context_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
pinned_iterators_manager.h Change RocksDB License 2017-07-15 16:11:23 -07:00
plain_table_db_test.cc Remove some left-over BSD headers 2017-07-18 11:56:57 -07:00
prefix_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
range_del_aggregator_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
range_del_aggregator.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
range_del_aggregator.h Change RocksDB License 2017-07-15 16:11:23 -07:00
repair_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
repair.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
snapshot_impl.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
snapshot_impl.h Change RocksDB License 2017-07-15 16:11:23 -07:00
table_cache.cc enable PinnableSlice for RowCache 2017-07-17 15:08:30 -07:00
table_cache.h Change RocksDB License 2017-07-15 16:11:23 -07:00
table_properties_collector_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
table_properties_collector.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
table_properties_collector.h Change RocksDB License 2017-07-15 16:11:23 -07:00
transaction_log_impl.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
transaction_log_impl.h Change RocksDB License 2017-07-15 16:11:23 -07:00
version_builder_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
version_builder.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
version_builder.h Change RocksDB License 2017-07-15 16:11:23 -07:00
version_edit_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
version_edit.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
version_edit.h Change RocksDB License 2017-07-15 16:11:23 -07:00
version_set_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
version_set.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
version_set.h Change RocksDB License 2017-07-15 16:11:23 -07:00
wal_manager_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
wal_manager.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
wal_manager.h Change RocksDB License 2017-07-15 16:11:23 -07:00
write_batch_base.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
write_batch_internal.h Change RocksDB License 2017-07-15 16:11:23 -07:00
write_batch_test.cc CodeMod: Prefer ADD_FAILURE() over EXPECT_TRUE(false), et cetera 2017-07-16 21:26:02 -07:00
write_batch.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
write_callback_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
write_callback.h Change RocksDB License 2017-07-15 16:11:23 -07:00
write_controller_test.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
write_controller.cc Change RocksDB License 2017-07-15 16:11:23 -07:00
write_controller.h Change RocksDB License 2017-07-15 16:11:23 -07:00
write_thread.cc Moving static AdaptationContext to outside function 2017-07-18 16:58:22 -07:00
write_thread.h Change RocksDB License 2017-07-15 16:11:23 -07:00