5c19a441c4
Summary: This PR implements a fault injection mechanism for injecting errors in reads in db_stress. The FaultInjectionTestFS is used for this purpose. A thread local structure is used to track the errors, so that each db_stress thread can independently enable/disable error injection and verify observed errors against expected errors. This is initially enabled only for Get and MultiGet, but can be extended to iterator as well once its proven stable. Pull Request resolved: https://github.com/facebook/rocksdb/pull/6538 Test Plan: crash_test make check Reviewed By: riversand963 Differential Revision: D20714347 Pulled By: anand1976 fbshipit-source-id: d7598321d4a2d72bda0ced57411a337a91d87dc7
28 lines
1023 B
C++
28 lines
1023 B
C++
// Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
|
|
// This source code is licensed under both the GPLv2 (found in the
|
|
// COPYING file in the root directory) and Apache 2.0 License
|
|
// (found in the LICENSE.Apache file in the root directory).
|
|
//
|
|
// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
//
|
|
|
|
#ifdef GFLAGS
|
|
#include "db_stress_tool/db_stress_shared_state.h"
|
|
|
|
namespace ROCKSDB_NAMESPACE {
|
|
const uint32_t SharedState::UNKNOWN_SENTINEL = 0xfffffffe;
|
|
const uint32_t SharedState::DELETION_SENTINEL = 0xffffffff;
|
|
#if defined(ROCKSDB_SUPPORT_THREAD_LOCAL)
|
|
#if defined(OS_SOLARIS)
|
|
__thread bool SharedState::filter_read_error;
|
|
#else
|
|
thread_local bool SharedState::filter_read_error;
|
|
#endif // OS_SOLARIS
|
|
#else
|
|
bool SharedState::filter_read_error;
|
|
#endif // ROCKSDB_SUPPORT_THREAD_LOCAL
|
|
} // namespace ROCKSDB_NAMESPACE
|
|
#endif // GFLAGS
|