1. 19 6月, 2020 2 次提交
  2. 18 6月, 2020 2 次提交
    • S
      Fix the bug that compressed cache is disabled in read-only DBs (#6990) · 223b57ee
      sdong 提交于
      Summary:
      Compressed block cache is disabled in https://github.com/facebook/rocksdb/pull/4650 for no good reason. Re-enable it.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6990
      
      Test Plan: Add a unit test to make sure a general function works with read-only DB + compressed block cache.
      
      Reviewed By: ltamasi
      
      Differential Revision: D22072755
      
      fbshipit-source-id: 2a55df6363de23a78979cf6c747526359e5dc7a1
      223b57ee
    • Z
      Store DB identity and DB session ID in SST files (#6983) · 94d04529
      Zitan Chen 提交于
      Summary:
      `db_id` and `db_session_id` are now part of the table properties for all formats and stored in SST files. This adds about 99 bytes to each new SST file.
      
      The `TablePropertiesNames` for these two identifiers are `rocksdb.creating.db.identity` and `rocksdb.creating.session.identity`.
      
      In addition, SST files generated from SstFileWriter and Repairer have DB identity “SST Writer” and “DB Repairer”, respectively. Their DB session IDs are generated in the same way as `DB::GetDbSessionId`.
      
      A table property test is added.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6983
      
      Test Plan: make check and some manual tests.
      
      Reviewed By: zhichao-cao
      
      Differential Revision: D22048826
      
      Pulled By: gg814
      
      fbshipit-source-id: afdf8c11424a6f509b5c0b06dafad584a80103c9
      94d04529
  3. 17 6月, 2020 2 次提交
  4. 16 6月, 2020 3 次提交
    • Y
      Let best-efforts recovery ignore CURRENT file (#6970) · 9bfd46d0
      Yanqin Jin 提交于
      Summary:
      Best-efforts recovery does not check the content of CURRENT file to determine which MANIFEST to recover from. However, it still checks the presence of CURRENT file to determine whether to create a new DB during `open()`. Therefore, we can tweak the logic in `open()` a little bit so that best-efforts recovery does not rely on CURRENT file at all.
      
      Test plan (dev server):
      make check
      ./db_basic_test --gtest_filter=DBBasicTest.RecoverWithNoCurrentFile
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6970
      
      Reviewed By: anand1976
      
      Differential Revision: D22013990
      
      Pulled By: riversand963
      
      fbshipit-source-id: db552a1868c60ed70e1f7cd252a3a076eb8ea58f
      9bfd46d0
    • L
      Fix uninitialized memory read in table_test (#6980) · aa8f1331
      Levi Tamasi 提交于
      Summary:
      When using parameterized tests, `gtest` sometimes prints the test
      parameters. If no other printing method is available, it essentially
      produces a hex dump of the object. This can cause issues with valgrind
      with types like `TestArgs` in `table_test`, where the object layout has
      gaps (with uninitialized contents) due to the members' alignment
      requirements. The patch fixes the uninitialized reads by providing an
      `operator<<` for `TestArgs` and also makes sure all members are
      initialized (in a consistent order) on all code paths.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6980
      
      Test Plan: `valgrind --leak-check=full ./table_test`
      
      Reviewed By: siying
      
      Differential Revision: D22045536
      
      Pulled By: ltamasi
      
      fbshipit-source-id: 6f5920ac28c712d0aa88162fffb80172ed769c32
      aa8f1331
    • Z
      Add a DB Session ID (#6959) · 88db97b0
      Zitan Chen 提交于
      Summary:
      Added DB::GetDbSessionId by using the same format and machinery as DB::GetDbIdentity.
      The DB Session ID is generated (and therefore, updated) each time a DB object is opened. It is written to the LOG file right after the line of “DB SUMMARY”.
      A test for the uniqueness, for different openings and during the same opening, is also added.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6959
      
      Test Plan: Passed make check
      
      Reviewed By: zhichao-cao
      
      Differential Revision: D21951721
      
      Pulled By: gg814
      
      fbshipit-source-id: 958a48a612db49a39998ea703cded45987d3fa8b
      88db97b0
  5. 14 6月, 2020 2 次提交
    • Z
      Fix persistent cache on windows (#6932) · 9c24a5cb
      Zhen Li 提交于
      Summary:
      Persistent cache feature caused rocks db crash on windows. I posted a issue for it, https://github.com/facebook/rocksdb/issues/6919. I found this is because no "persistent_cache_key_prefix" is generated for persistent cache. Looking repo history, "GetUniqueIdFromFile" is not implemented on Windows. So my fix is adding "NewId()" function in "persistent_cache" and using it to generate prefix for persistent cache. In this PR, i also re-enable related test cases defined in "db_test2" and "persistent_cache_test" for windows.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6932
      
      Test Plan:
      1. run related test cases in "db_test2" and "persistent_cache_test" on windows and see it passed.
      2. manually run db_bench.exe with "read_cache_path" and verified.
      
      Reviewed By: riversand963
      
      Differential Revision: D21911608
      
      Pulled By: cheng-chang
      
      fbshipit-source-id: cdfd938d54a385edbb2836b13aaa1d39b0a6f1c2
      9c24a5cb
    • C
      Make it able to lower cpu priority to specific level in threadpool (#6969) · f7613e2a
      Cheng Chang 提交于
      Summary:
      `Env::LowerThreadPoolCPUPriority` takes a new parameter `CpuPriority` to be able to lower to a specific priority such as `CpuPriority::kIdle`, previously, the priority is always lowered to `CpuPriority::kLow`.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6969
      
      Test Plan: unit test `EnvPosixTest::LowerThreadPoolCpuPriority` added to `env_test.cc`.
      
      Reviewed By: siying
      
      Differential Revision: D22011169
      
      Pulled By: cheng-chang
      
      fbshipit-source-id: 568878c24a924912e35cef00c552d4a63431cdf4
      f7613e2a
  6. 13 6月, 2020 7 次提交
    • Y
      Add stress test for best-efforts recovery (#6819) · 15d9f28d
      Yanqin Jin 提交于
      Summary:
      Add crash test for the case of best-efforts recovery.
      After a certain amount of time, we kill the db_stress process, randomly delete some certain table files and restart db_stress. Given the randomness of file deletion, it is difficult to verify against a reference for data correctness. Therefore, we just check that the db can restart successfully.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6819
      
      Test Plan:
      ```
      ./db_stress -best_efforts_recovery=true -disable_wal=1 -reopen=0
      ./db_stress -best_efforts_recovery=true -disable_wal=0 -skip_verifydb=1 -verify_db_one_in=0 -continuous_verification_interval=0
      make crash_test_with_best_efforts_recovery
      ```
      
      Reviewed By: anand1976
      
      Differential Revision: D21436753
      
      Pulled By: riversand963
      
      fbshipit-source-id: 0b3605c922a16c37ed17d5ab6682ca4240e47926
      15d9f28d
    • L
      Turn HarnessTest in table_test into a parameterized test (#6974) · bacd6edc
      Levi Tamasi 提交于
      Summary:
      `HarnessTest` in `table_test.cc` currently tests many parameter
      combinations sequentially in a loop. This is problematic from
      a testing perspective, since if the test fails, we have no way of
      knowing how many/which combinations have failed. It can also cause timeouts on
      our test system due to the sheer number of combinations tested.
      (Specifically, the parallel compression threads parameter added by
      https://github.com/facebook/rocksdb/pull/6262 seems to have been the last straw.)
      There is some DIY code there that splits the load among eight test cases
      but that does not appear to be sufficient anymore.
      
      Instead, the patch turns `HarnessTest` into a parameterized test, so all the
      parameter combinations can be tested separately and potentially
      concurrently. It also cleans up the tests a little, fixes
      `RandomizedLongDB`, which did not get updated when the parallel
      compression threads parameter was added, and turns `FooterTests` into a
      standalone test case (since it does not actually need a fixture class).
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6974
      
      Test Plan: `make check`
      
      Reviewed By: siying
      
      Differential Revision: D22029572
      
      Pulled By: ltamasi
      
      fbshipit-source-id: 51baea670771c33928f2eb3902bd69dcf540aa41
      bacd6edc
    • S
      Reduce test coverage in older VS versions (#6966) · 7e2ac0c3
      sdong 提交于
      Summary:
      With Appveyor we run the same set of tests for older versions of VS as the latest version. It creates extra hanging which we don't plan to investigate. Instead, minimize tests run there. The full tests on Windows are already covered in CircleCI.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6966
      
      Test Plan: Watch appveyor runs.
      
      Reviewed By: pdillinger
      
      Differential Revision: D22025383
      
      fbshipit-source-id: 079dff9e8213bc750a47f4add90fdbf18de9d737
      7e2ac0c3
    • Z
      fix build with 'USE_HDFS' on windows (#6950) · d63f86e5
      Zhen Li 提交于
      Summary:
      Build with "USE_HDFS" failed with below errors on Windows. This PR is trying to fix them
      Severity	Code	Description	Project	File	Line	Suppression State
      Error (active)	E0020	identifier "ssize_t" is undefined	rocksdb	D:\Git\rocksdb\rocksdb\env\env_hdfs.cc	127
      Error (active)	E1696	cannot open source file "sys/time.h"	rocksdb	D:\Git\rocksdb\rocksdb\env\env_hdfs.cc	15
      Error	C2065	'pthread_t': undeclared identifier	rocksdb	d:\git\rocksdb\rocksdb\hdfs\env_hdfs.h	166
      Error	C3861	'pthread_self': identifier not found	rocksdb	d:\git\rocksdb\rocksdb\hdfs\env_hdfs.h	167
      Error	C1083	Cannot open include file: 'sys/time.h': No such file or directory	rocksdb	d:\git\rocksdb\rocksdb\env\env_hdfs.cc	15
      Error	C2065	'pthread_t': undeclared identifier	db_bench	d:\git\rocksdb\rocksdb\hdfs\env_hdfs.h	166
      Error	C3861	'pthread_self': identifier not found	db_bench	d:\git\rocksdb\rocksdb\hdfs\env_hdfs.h	167
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6950
      
      Test Plan:
      1. manually test build with "USE_HDFS" on Windows, verified HDFS Env related function by db_bench.exe.
      D:\Git\rocksdb\build\Debug>db_bench.exe --hdfs="abfs://test@rdbtest2.dfs.core.windows.net" --num=100 --benchmarks="fillseq,readseq,fillseekseq" --db="abfs://test@rdbtest2.dfs.core.windows.net/test"
      2020-06-05 20:42:21,102 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
      2020-06-05 20:42:22,646 WARN utils.SSLSocketFactoryEx: Failed to load OpenSSL. Falling back to the JSSE default.
      Initializing RocksDB Options from the specified file
      Initializing RocksDB Options from command-line flags
      RocksDB:    version 6.10
      Keys:       16 bytes each
      Values:     100 bytes each (50 bytes after compression)
      Entries:    100
      Prefix:    0 bytes
      Keys per prefix:    0
      RawSize:    0.0 MB (estimated)
      FileSize:   0.0 MB (estimated)
      Write rate: 0 bytes/second
      Read rate: 0 ops/second
      Compression: Snappy
      Compression sampling rate: 0
      Memtablerep: skip_list
      Perf Level: 1
      WARNING: Assertions are enabled; benchmarks unnecessarily slow
      ------------------------------------------------
      Initializing RocksDB Options from the specified file
      Initializing RocksDB Options from command-line flags
      DB path: [abfs://test@rdbtest2.dfs.core.windows.net/test]
      fillseq      :    1138.350 micros/op 877 ops/sec;    0.1 MB/s
      DB path: [abfs://test@rdbtest2.dfs.core.windows.net/test]
      readseq      :      63.580 micros/op 15627 ops/sec;    1.7 MB/s
      DB path: [abfs://test@rdbtest2.dfs.core.windows.net/test]
      fillseekseq  :      45.615 micros/op 21762 ops/sec;
      
      Reviewed By: cheng-chang
      
      Differential Revision: D21964806
      
      Pulled By: riversand963
      
      fbshipit-source-id: 9d7413178ece0113d11bc4398583f7d0590d5dbd
      d63f86e5
    • S
      Circle CI's clang build to really use clang (#6965) · 9810f400
      sdong 提交于
      Summary:
      The CircleCI's Clang flavor has a bug that doesn't really use CLANG. Fix it.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6965
      
      Test Plan: See CI results.
      
      Reviewed By: pdillinger
      
      Differential Revision: D22025355
      
      fbshipit-source-id: e86922b9152e9f5732e5099d0ce41da9226ff806
      9810f400
    • A
      update HISTORY.md for 6.11 release (#6972) · af58d927
      Andrew Kryczka 提交于
      Summary: Pull Request resolved: https://github.com/facebook/rocksdb/pull/6972
      
      Reviewed By: zhichao-cao
      
      Differential Revision: D22021953
      
      Pulled By: ajkr
      
      fbshipit-source-id: 4debbafe45b5939fd28549230eebf6006eb43440
      af58d927
    • L
      Maintain the set of linked SSTs in BlobFileMetaData (#6945) · 83833637
      Levi Tamasi 提交于
      Summary:
      The `FileMetaData` objects associated with table files already contain the
      number of the oldest blob file referenced by the SST in question. This patch
      adds the inverse mapping to `BlobFileMetaData`, namely the set of table file
      numbers for which the oldest blob file link points to the given blob file (these
      are referred to as *linked SSTs*). This mapping will be used by the GC logic.
      
      Implementation-wise, the patch builds on the `BlobFileMetaDataDelta`
      functionality introduced in https://github.com/facebook/rocksdb/pull/6835: newly linked/unlinked SSTs are
      accumulated in `BlobFileMetaDataDelta`, and the changes to the linked SST set
      are applied in one shot when the new `Version` is saved. The patch also reworks
      the blob file related consistency checks in `VersionBuilder` so they validate the
      consistency of the forward table file -> blob file links and the backward blob file ->
      table file links for blob files that are part of the `Version`.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6945
      
      Test Plan: `make check`
      
      Reviewed By: riversand963
      
      Differential Revision: D21912228
      
      Pulled By: ltamasi
      
      fbshipit-source-id: c5bc7acf6e729a8fccbb12672dd5cd00f6f000f8
      83833637
  7. 12 6月, 2020 4 次提交
    • Y
      Fail point-in-time WAL recovery upon IOError reading WAL (#6963) · 717749f4
      Yanqin Jin 提交于
      Summary:
      If `options.wal_recovery_mode == WALRecoveryMode::kPointInTimeRecovery`, RocksDB stops replaying WAL once hitting an error and discards the rest of the WAL. This can lead to data loss if the error occurs at an offset smaller than the last sync'ed offset.
      Ideally, RocksDB point-in-time recovery should permit recovery if the error occurs after last synced offset while fail recovery if error occurs before the last synced offset. However, RocksDB does not track the synced offset of WALs. Consequently, RocksDB does not know whether an error occurs before or after the last synced offset. An error can be one of the following.
      - WAL record checksum mismatch. This can result from both corruption of synced data and dropping of unsynced data during shutdown. We cannot be sure which one. In order not to defeat the original motivation to permit the latter case, we keep the original behavior of point-in-time WAL recovery.
      - IOError. This means the WAL can be bad, an indicator of whole file becoming unavailable, not to mention synced part of the WAL. Therefore, we choose to modify the behavior of point-in-time recovery and fail the database recovery.
      
      Test plan (devserver):
      make check
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6963
      
      Reviewed By: ajkr
      
      Differential Revision: D22011083
      
      Pulled By: riversand963
      
      fbshipit-source-id: f9cbf29a37dc5cc40d3fa62f89eed1ad67ca1536
      717749f4
    • L
      Revisit the handling of the case when a file is re-added to the same level (#6939) · d854abad
      Levi Tamasi 提交于
      Summary:
      https://github.com/facebook/rocksdb/pull/6901 subtly changed the handling of the corner case
      when a table file is deleted from a level, then re-added to the same level. (Note: this
      should be extremely rare; one scenario that comes to mind is a trivial move followed by
      a call to `ReFitLevel` that moves the file back to the original level.) Before that change,
      a new `FileMetaData` object was created as a result of this sequence; after the change,
      the original `FileMetaData` was essentially resurrected (since the deletion and the addition
      simply cancel each other out with the change). This patch restores the original behavior,
      which is more intuitive considering the interface, and in sync with how trivial moves are handled.
      (Also note that `FileMetaData` contains some mutable data members, the values of which
      might be different in the resurrected object and the freshly created one.)
      The PR also fixes a bug in this area: with the original pre-6901 code, `VersionBuilder`
      would add the same file twice to the same level in the scenario described above.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6939
      
      Test Plan: `make check`
      
      Reviewed By: ajkr
      
      Differential Revision: D21905580
      
      Pulled By: ltamasi
      
      fbshipit-source-id: da07ae45384ecf3c6c53506d106432d88a7ec9df
      d854abad
    • L
      Turn DBTest2.CompressionFailures into a parameterized test (#6968) · 722ebba8
      Levi Tamasi 提交于
      Summary:
      `DBTest2.CompressionFailures` currently tests many configurations
      sequentially using nested loops, which often leads to timeouts
      in our test system. The patch turns it into a parameterized test
      instead.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6968
      
      Test Plan: `make check`
      
      Reviewed By: siying
      
      Differential Revision: D22006954
      
      Pulled By: ltamasi
      
      fbshipit-source-id: f71f2f7108086b7651ecfce3d79a7fab24620b2c
      722ebba8
    • Z
      Ingest SST files with checksum information (#6891) · b3585a11
      Zhichao Cao 提交于
      Summary:
      Application can ingest SST files with file checksum information, such that during ingestion, DB is able to check data integrity and identify of the SST file. The PR introduces generate_and_verify_file_checksum to IngestExternalFileOption to control if the ingested checksum information should be verified with the generated checksum.
      
          1. If generate_and_verify_file_checksum options is *FALSE*: *1)* if DB does not enable SST file checksum, the checksum information ingested will be ignored; *2)* if DB enables the SST file checksum and the checksum function name matches the checksum function name in DB, we trust the ingested checksum, store it in Manifest. If the checksum function name does not match, we treat that as an error and fail the IngestExternalFile() call.
          2. If generate_and_verify_file_checksum options is *TRUE*: *1)* if DB does not enable SST file checksum, the checksum information ingested will be ignored; *2)* if DB enable the SST file checksum, we will use the checksum generator from DB to calculate the checksum for each ingested SST files after they are copied or moved. Then, compare the checksum results with the ingested checksum information: _A)_ if the checksum function name does not match, _verification always report true_ and we store the DB generated checksum information in Manifest. _B)_ if the checksum function name mach, and checksum match, ingestion continues and stores the checksum information in the Manifest. Otherwise, terminate file ingestion and report file corruption.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6891
      
      Test Plan: added unit test, pass make asan_check
      
      Reviewed By: pdillinger
      
      Differential Revision: D21935988
      
      Pulled By: zhichao-cao
      
      fbshipit-source-id: 7b55f486632db467e76d72602218d0658aa7f6ed
      b3585a11
  8. 11 6月, 2020 2 次提交
    • L
      Use a per-thread path for the export directory in import_column_family_test (#6962) · fbe2d259
      Levi Tamasi 提交于
      Summary:
      This is required so that the test cases can safely be run in parallel.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6962
      
      Test Plan: `make check`
      
      Reviewed By: zhichao-cao
      
      Differential Revision: D21980060
      
      Pulled By: ltamasi
      
      fbshipit-source-id: 616b7a0b686155d3874848b9098c67ad3f47efcc
      fbe2d259
    • A
      save a key comparison in block seeks (#6646) · e6be168a
      Andrew Kryczka 提交于
      Summary:
      This saves up to two key comparisons in block seeks. The first key
      comparison saved is a redundant key comparison against the restart key
      where the linear scan starts. This comparison is saved in all cases
      except when the found key is in the first restart interval. The
      second key comparison saved is a redundant key comparison against the
      restart key where the linear scan ends. This is only saved in cases
      where all keys in the restart interval are less than the target
      (probability roughly `1/restart_interval`).
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6646
      
      Test Plan:
      ran a benchmark with mostly default settings and counted key comparisons
      
      before: `user_key_comparison_count = 19399529`
      after: `user_key_comparison_count = 18431498`
      
      setup command:
      
      ```
      $ TEST_TMPDIR=/dev/shm/dbbench ./db_bench -benchmarks=fillrandom,compact -write_buffer_size=1048576 -target_file_size_base=1048576 -max_bytes_for_level_base=4194304 -max_background_jobs=12 -level_compaction_dynamic_level_bytes=true -num=10000000
      ```
      
      benchmark command:
      
      ```
      $ TEST_TMPDIR=/dev/shm/dbbench/ ./db_bench -use_existing_db=true -benchmarks=readrandom -disable_auto_compactions=true -num=10000000 -compression_type=none -reads=1000000 -perf_level=3
      ```
      
      Reviewed By: pdillinger
      
      Differential Revision: D20849707
      
      Pulled By: ajkr
      
      fbshipit-source-id: 1f01c5cd99ea771fd27974046e37b194f1cdcfac
      e6be168a
  9. 10 6月, 2020 3 次提交
  10. 09 6月, 2020 5 次提交
    • S
      Introduce some Linux build to CircleCI (#6937) · 6a8ddd37
      sdong 提交于
      Summary:
      Moving towards the long term goal of moving most CI build to CircleCI when possible, add some Linux tests in CircleCI. This is not all what we can include to CircleCI. For example, Java builds are not includ
      ed.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6937
      
      Test Plan: Watch CI build results.
      
      Reviewed By: pdillinger
      
      Differential Revision: D21941605
      
      fbshipit-source-id: db6aead3c45f523386d4fb30d224cfde573cccad
      6a8ddd37
    • A
      Fix a bug in looking up duplicate keys with MultiGet (#6953) · 1fb3593f
      anand76 提交于
      Summary:
      When MultiGet is called with duplicate keys, and the key matches the
      largest key in an SST file and the value type is merge, only the first
      instance of the duplicate key is returned with correct results. This is
      due to the incorrect assumption that if a key in a batch is equal to the
      largest key in the file, the next key cannot be present in that file.
      
      Tests:
      Add a new unit test
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6953
      
      Reviewed By: cheng-chang
      
      Differential Revision: D21935898
      
      Pulled By: anand1976
      
      fbshipit-source-id: a2cc327a15150e23fd997546ca64d1c33021cb4c
      1fb3593f
    • L
      Add convenience method GetFileMetaDataByNumber (#6940) · f5e64945
      Levi Tamasi 提交于
      Summary:
      The patch adds a convenience method `GetFileMetaDataByNumber` that
      builds on the `FileLocation` functionality introduced recently (see
      https://github.com/facebook/rocksdb/pull/6862). This method makes it possible to
      retrieve the `FileMetaData` directly as opposed to having to go through
      `LevelFiles` and friends.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6940
      
      Test Plan: `make check`
      
      Reviewed By: cheng-chang
      
      Differential Revision: D21905946
      
      Pulled By: ltamasi
      
      fbshipit-source-id: af99e19de21242b2b4a87594a535c6028d16ee72
      f5e64945
    • Z
      Implement a new subcommand "identify" for sst_dump (#6943) · 119b26fa
      Zitan Chen 提交于
      Summary:
      Implemented a subcommand of sst_dump called identify, which determines whether a file is an SST file or identifies and lists all the SST files in a directory;
      
      This update also fixes the problem that sst_dump exits with a success state even if target file/directory does not exist/is not an SST file/is empty/is corrupted.
      
      One test is added to sst_dump_test.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6943
      
      Test Plan: Passed make check and a few manual tests
      
      Reviewed By: pdillinger
      
      Differential Revision: D21928985
      
      Pulled By: gg814
      
      fbshipit-source-id: 9a8b48e0cf1a0e96b13f42b690aba8ad981afad3
      119b26fa
    • Z
      decouple the dependency of trace_analyzer_test unit test (#6941) · fb08330f
      Zhichao Cao 提交于
      Summary:
      Since gflags use the global variable to store the flags passed in. In the unit test, if we git one flag per unit test, the result is that all the flags are combined together in the following tests. Therefore, it has the dependency. In this PR, we pass the full arguments each time to ensure that the old arguments will be overwritten by the new one such that the dependency is removed.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6941
      
      Test Plan: make asan_check. run each unit test in trace_analyzer_test independently and in arbitrary orders.
      
      Reviewed By: pdillinger
      
      Differential Revision: D21909176
      
      Pulled By: zhichao-cao
      
      fbshipit-source-id: dca550a0a4a205c30faa620e258a020a3b5b4e13
      fb08330f
  11. 08 6月, 2020 1 次提交
    • Y
      Remove unnecessary inclusion of version_edit.h in env (#6952) · 3020df9d
      Yanqin Jin 提交于
      Summary:
      In db_options.c, we should avoid including header files in the `db` directory to avoid introducing unnecessary dependency. The reason why `version_edit.h` has been included in `db_options.cc` is because we need two constants, `kUnknownChecksum` and `kUnknownChecksumFuncName`. We can put these two constants as `constexpr` in the public header `file_checksum.h`.
      
      Test plan (devserver):
      make check
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6952
      
      Reviewed By: zhichao-cao
      
      Differential Revision: D21925341
      
      Pulled By: riversand963
      
      fbshipit-source-id: 2902f3b74c97f0cf16c58ad24c095c787c3a40e2
      3020df9d
  12. 06 6月, 2020 7 次提交
    • L
      Do not print messages to stderr in VersionBuilder (#6948) · f8c2e5a6
      Levi Tamasi 提交于
      Summary:
      RocksDB is an embedded library; we should not write to the application's
      console. Note: in each case, the same information is returned in the form of a
      `Status::Corruption` object.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6948
      
      Test Plan: `make check`
      
      Reviewed By: ajkr
      
      Differential Revision: D21914965
      
      Pulled By: ltamasi
      
      fbshipit-source-id: ae4b66789aa6b659eb8cc2ed4a048187962c86cc
      f8c2e5a6
    • L
      Fix up a VersionBuilder test case (#6942) · 8988f831
      Levi Tamasi 提交于
      Summary:
      We currently do not have any validation that would ensure that the `FileMetaData`
      objects are equivalent when a file gets deleted from the LSM tree and then re-added
      (think trivial moves); however, if we did, this test case would be in violation. The patch
      changes the values used in the test case so they are consistent.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6942
      
      Test Plan: `make check`
      
      Reviewed By: zhichao-cao
      
      Differential Revision: D21911366
      
      Pulled By: ltamasi
      
      fbshipit-source-id: 2f0486f8337373a6a111b6f28433d70507857104
      8988f831
    • Z
      Clean up the dead code (#6946) · f941adef
      Zhichao Cao 提交于
      Summary:
      Remove the dead code in table test.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6946
      
      Test Plan: run table_test
      
      Reviewed By: riversand963
      
      Differential Revision: D21913563
      
      Pulled By: zhichao-cao
      
      fbshipit-source-id: c0aa9f3b95dfe87dd7fb2cd4823784f08cb3ddd3
      f941adef
    • Z
      Disable OpenForReadOnly tests in the LITE mode (#6947) · 23e446a1
      Zitan Chen 提交于
      Summary:
      Disable two OpenForReadOnly tests in the LITE mode
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6947
      
      Test Plan: passed db_test2
      
      Reviewed By: cheng-chang
      
      Differential Revision: D21914345
      
      Pulled By: gg814
      
      fbshipit-source-id: 58e81baf5d8cf8adcedaef3966aa3a427bbdf7c2
      23e446a1
    • S
      Directly use unit test tempalte buck (#6926) · 2e7070b1
      sdong 提交于
      Summary:
      Make RocksDB run a predefined unit test so that it can be integrated with better tools.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6926
      
      Test Plan: Watch tests
      
      Reviewed By: pdillinger
      
      Differential Revision: D21866216
      
      fbshipit-source-id: cafca82efdf0b72671be8d30b665e88a75ae6000
      2e7070b1
    • A
      Check iterator status BlockBasedTableReader::VerifyChecksumInBlocks() (#6909) · 98b0cbea
      anand76 提交于
      Summary:
      The ```for``` loop in ```VerifyChecksumInBlocks``` only checks ```index_iter->Valid()``` which could be ```false``` either due to reaching the end of the index or, in case of partitioned index, it could be due to a checksum mismatch error when reading a 2nd level index block. Instead of throwing away the index iterator status, we need to return any errors back to the caller.
      
      Tests:
      Add a test in block_based_table_reader_test.cc.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6909
      
      Reviewed By: pdillinger
      
      Differential Revision: D21833922
      
      Pulled By: anand1976
      
      fbshipit-source-id: bc778ebf1121dbbdd768689de5183f07a9f0beae
      98b0cbea
    • C
      Make DestroyDir destroy directories recursively (#6934) · 1bee0fca
      Cheng Chang 提交于
      Summary:
      Currently, `DeleteDir` only deletes the directory if there are no other directories under the target dir. This PR makes it delete directories recursively.
      Pull Request resolved: https://github.com/facebook/rocksdb/pull/6934
      
      Test Plan:
      Added a new unit test in testutil_test.cc.
      `make testutil_test`
      
      Reviewed By: zhichao-cao
      
      Differential Revision: D21884211
      
      Pulled By: cheng-chang
      
      fbshipit-source-id: 0b9a48a200f494ee007aef5d1763b4aa331f8b5a
      1bee0fca