1. 26 3月, 2015 1 次提交
    • J
      TSAN: avoid new link failure with -pg · ff1ff7c6
      Jim Meyering 提交于
      Summary:
      * Makefile (COMPILE_WITH_TSAN): Avoid a link failure by disabling
      -pg when building with TSAN enabled.
      Now that "make check" builds all $(PROGRAMS), it is linking
      a few programs that were not normally linked before.
      For example, this would fail to link with the following diagnostic:
      
        COMPILE_WITH_TSAN=1 make -j40 log_and_apply_bench
      
          CCLD     log_and_apply_bench
        ld: /usr/lib/../lib64/gcrt1.o: relocation R_X86_64_32S against `__libc_csu_fini' can not be used when making a shared object; recompile with -fPIC
        /usr/lib/../lib64/gcrt1.o: error adding symbols: Bad value
        collect2: error: ld returned 1 exit status
        Makefile:511: recipe for target 'log_and_apply_bench' failed
        make: *** [log_and_apply_bench] Error 1
      
      Since removing -pg is sufficient to get past this link
      failure, and no one cares about profiling TSAN-enabled
      binaries anyway, we will refrain from linking with -pg
      when TSAN testing is enabled.  Use a new variable, "pg"
      which is set to "-pg" in most cases, but that is made
      empty when COMPILE_WITH_TSAN is set.
      
      Test Plan:
        Now, this succeeds:
      
          rm -f log_and_apply_bench
          COMPILE_WITH_TSAN=1 make -j40 log_and_apply_bench
      
      Reviewers: igor.sugak, rven, sdong, ljin, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D35943
      ff1ff7c6
  2. 25 3月, 2015 2 次提交
  3. 19 3月, 2015 2 次提交
    • I
      rocksdb: fix make unity · 67d99580
      Igor Sugak 提交于
      Summary:
      changed make unity target to use $LIB_SOURCES as a source of library source code. In the old way (using find) table/mock_table.h was added to a list of library objects and this was a course of `make unity` break.
      
      `build_tools/unity` contains some redundant code, I deleted it and moved the functionality in the Makefile.
      
      Test Plan:
      Make sure unity completes with no errors.
      ```lang=bash
      % make unity
      ```
      
      Reviewers: sdong, rven, igor, meyering
      
      Reviewed By: igor, meyering
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D35385
      67d99580
    • S
      A build option to run through all check-in requirements. · 9720ea4d
      sdong 提交于
      Summary: Make it easier for people to run all the tests.
      
      Test Plan: Run it.
      
      Reviewers: rven, yhchiang, igor, MarkCallaghan, IslamAbdelRahman, igor.sugak, anthony, kradhakrishnan, meyering
      
      Reviewed By: meyering
      
      Subscribers: meyering, leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D35319
      9720ea4d
  4. 17 3月, 2015 1 次提交
    • I
      rocksdb: Add gtest · a7aba2ef
      Igor Sugak 提交于
      Summary:
      Adds gtest fused source code into `third-party` directory. No manual changes.
      
      gtest latest released 1.7 has clang dev compilation errors. Trunk version requires only one disabled warning (-Wno-missing-field-initializers)
      
      Fused code is made as described here https://fburl.com/90806322
      Details about why we need gtest source code instead of precompiled library https://fburl.com/90805763
      Source used from http://googletest.googlecode.com/svn/trunk
      
      Test Plan:
      Build and notice no errors. Also check in logs that gtest-all.o being compiled gtest-all.o.
      ```lang=bash
      % USE_CLANG=1 make all
      ```
      
      Reviewers: lgalanis, yufei.zhu, rven, sdong, igor, meyering
      
      Reviewed By: meyering
      
      Subscribers: meyering, yhchiang, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D33345
      a7aba2ef
  5. 14 3月, 2015 1 次提交
    • I
      EventLogger · 52d8347a
      Igor Canadi 提交于
      Summary:
      Here's my proposal for making our LOGs easier to read by machines.
      
      The idea is to dump all events as JSON objects. JSON is easy to read by humans, but more importantly, it's easy to read by machines. That way, we can parse this, load into SQLite/mongo and then query or visualize.
      
      I started with table_create and table_delete events, but if everybody agrees, I'll continue by adding more events (flush/compaction/etc etc)
      
      Test Plan:
      Ran db_bench. Observed:
      2015/01/15-14:13:25.788019 1105ef000 EVENT_LOG_v1 {"time_micros": 1421360005788015, "event": "table_file_creation", "file_number": 12, "file_size": 1909699}
      2015/01/15-14:13:25.956500 110740000 EVENT_LOG_v1 {"time_micros": 1421360005956498, "event": "table_file_deletion", "file_number": 12}
      
      Reviewers: yhchiang, rven, dhruba, MarkCallaghan, lgalanis, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D31647
      52d8347a
  6. 12 3月, 2015 1 次提交
  7. 07 3月, 2015 1 次提交
    • J
      build: fix missing dependency problems · ebc647de
      Jim Meyering 提交于
      Summary:
      Any time one would modify a dependent of any *test*.cc file,
      "make" would fail to rebuild the affected test binaries,
      e.g., db_test.  That was due to the fact that we deliberately
      excluded those test-related files from the definition of SOURCES
      and only $(SOURCES) was used to create the automatically-generated
      .d dependency files.  The fix is to generate a .d file for every
      source file.
      * src.mk: New file.  Defines LIB_SOURCES, MOCK_SOURCES
      and TEST_BENCH_SOURCES.
      * Makefile: Include src.mk.
      Reflect s/SOURCES/LIB_SOURCES/ renaming.
      * build_tools/build_detect_platform: Remove the code
      that was used to generate SOURCES= and MOCK_SOURCES=
      definitions in make_config.mk. Those lists of files
      are now hard-coded in src.mk. Hard-coding this list of
      sources is desirable, because without that, one risks
      including stray .cc files in a build.  Not reproducible.
      
      Test Plan:
      Touch a file used by db_test's dependent .o files and ensure that
      they are all recompiled.  Before, none would be:
      
        $ touch db/db_impl.h && make db_test
          CC       db/db_test.o
          CC       db/column_family.o
          CC       db/db_filesnapshot.o
          CC       db/db_impl.o
          CC       db/db_impl_debug.o
          CC       db/db_impl_readonly.o
          CC       db/forward_iterator.o
          CC       db/internal_stats.o
          CC       db/managed_iterator.o
          CC       db/repair.o
          CC       db/write_batch.o
          CC       utilities/compacted_db/compacted_db_impl.o
          CC       utilities/ttl/db_ttl_impl.o
          CC       util/ldb_cmd.o
          CC       util/ldb_tool.o
          CC       util/sst_dump_tool.o
          CC       util/xfunc.o
          CCLD     db_test
      
      Reviewers: ljin, igor.sugak, igor, rven, sdong
      
      Reviewed By: sdong
      
      Subscribers: yhchiang, adamretter, fyrz, dhruba
      
      Differential Revision: https://reviews.facebook.net/D33849
      ebc647de
  8. 28 2月, 2015 1 次提交
  9. 27 2月, 2015 1 次提交
  10. 25 2月, 2015 1 次提交
  11. 24 2月, 2015 1 次提交
    • I
      rocksdb: changes to support 'make analyze' in Jenkins · 6fdda8ac
      Igor Sugak 提交于
      Summary:
      * Updated Makefile to exit `make analyze` with status 1 if scan-build detected any bugs.
      * scan-build automatically detects which c++ compiler to use, and some times is uses wrong ones (from $CPP). Added implicit parameters to use $CC and $CXX.
      * Added `scan_build_report` directory to .gitignore file.
      * Added `scan_build_report` directory to clean target.
      
      Test Plan:
      Run `make analyze` and verify that exit status is 1, if there are scan-build bugs detected.
      Run `make clean` and verify that files in `scan_build_report` directory are deleted.
      After running `make analyze; git status` and verify that no untracked files in `scan_build_report` directory.
      
      Reviewers: meyering, sdong, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D33831
      6fdda8ac
  12. 21 2月, 2015 1 次提交
    • J
      build: enable more compiler warnings · 4f514a53
      Jim Meyering 提交于
      Summary:
      * Makefile (WARNING_FLAGS): Add -W and -Wextra, and at least for now,
      -Wno-unused-parameter.  Without that latter one, there would be
      many errors/warnings about unused parameters.
      
      Test Plan:
      run these and ensure there is no warning:
        make clean && make
        make clean && USE_CLANG=1 make
      
      Reviewers: ljin, sdong, igor.sugak, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D33819
      4f514a53
  13. 20 2月, 2015 2 次提交
    • J
      build: do not relink every single binary just for a timestamp · a42324e3
      Jim Meyering 提交于
      Summary:
      Prior to this change, "make check" would always waste a lot of
      time relinking 60+ binaries. With this change, it does that
      only when the generated file, util/build_version.cc, changes,
      and that happens only when the date changes or when the
      current git SHA changes.
      
      This change makes some other improvements: before, there was no
      rule to build a deleted util/build_version.cc. If it was somehow
      removed, any attempt to link a program would fail.
      There is no longer any need for the separate file,
      build_tools/build_detect_version.  Its functionality is
      now in the Makefile.
      
      * Makefile (DEPFILES): Don't filter-out util/build_version.cc.
      No need, and besides, removing that dependency was wrong.
      (date, git_sha, gen_build_version): New helper variables.
      (util/build_version.cc): New rule, to create this file
      and update it only if it would contain new information.
      * build_tools/build_detect_platform: Remove file.
      * db/db_impl.cc: Now, print only date (not the time).
      * util/build_version.h (rocksdb_build_compile_time): Remove
      declaration.  No longer used.
      
      Test Plan:
      - Run "make check" twice, and note that the second time no linking is performed.
      - Remove util/build_version.cc and ensure that any "make"
      command regenerates it before doing anything else.
      - Run this: strings librocksdb.a|grep _build_.
      That prints output including the following:
      
        rocksdb_build_git_date:2015-02-19
        rocksdb_build_git_sha:2.8.fb-1792-g3cb6cc0
      
      Reviewers: ljin, sdong, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D33591
      a42324e3
    • J
      build: abbreviate AR command, too · 11581b74
      Jim Meyering 提交于
      Summary:
      The "ar" command was excessively verbose.
      This abbreviates it to be like CC and LD.
      Also, factor "rs" options into ARFLAGS.
      
      Test Plan:
        $ rm librocksdb.a
        $ make librocksdb.a
        AR       librocksdb.a
        ar: creating librocksdb.a
      
      Reviewers: ljin, sdong, igor.sugak, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D33699
      11581b74
  14. 19 2月, 2015 4 次提交
    • J
      build: factor out AM_LINK command (trivial) · b4b8c25a
      Jim Meyering 提交于
      Summary:
        Many link commands were identical.
        Factor that out into a variable, AM_LINK, and use
        it in place of all of those open-coded commands.
      
      Test Plan: run "make check"
      
      Reviewers: ljin, igor, sdong
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D33585
      b4b8c25a
    • J
      build: make "make" output readable by default · dc885c6e
      Jim Meyering 提交于
      Summary:
      With this change, make now prints a summary line for each
      compiler and linker invocation, e.g.,:
      
        CC       db/builder.o
        CC       db/c.o
        CC       db/column_family.o
      
      To see full commands, insert "V=1" into your make command.
      E.g., run "make V=1 all" if you want it to print each command
      in its full glory.
      
      $^ is GNU make's abbreviation for the prerequisites of the current target.
      These AM_V_... variables expand to some very short string like "CC" or
      "LD", by default, so that the output of "make" is readable.  If/when you
      want more details, just build with "make V=1 ...", and make will print
      each full command as it is executed.  If you prefer to see the noise
      all the time, and only want to optionally see the abbreviated output,
      set AM_DEFAULT_VERBOSITY=1 in your environment, and then build with
      V=0 to see the abbreviated command indicators.
      
      Test Plan:
      invoke make a few different ways and observe:
        make clean; make       # abbreviated
        make clean; make V=0   # also abbreviated
        make clean; make V=1   # full detail
      
      Reviewers: sdong, ljin, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D33579
      dc885c6e
    • J
      build: fix Makefile inconsistencies (trivial) · a37b46ae
      Jim Meyering 提交于
      Summary:
      This is in preparation for some factorization.
      * Makefile (deletefile_test): Add $(COVERAGEFLAGS) to link command.
      (options_test): Remove explicit (redundant) dependency on
      options_helper.o: that is already a dependent, via $(LIBOBJECTS)
      
      Test Plan: run make
      
      Reviewers: sdong, ljin, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D33573
      a37b46ae
    • J
      build: remove unused rules: rocksdb_shell, DBClientProxy_test · 55277c32
      Jim Meyering 提交于
      Summary:
      There were Makefile rules to build those two targets,
      but neither rule has worked for a long time, due to missing
      dependent source files.  Remove those rules.
      
      Test Plan: run "make"
      
      Reviewers: sdong, ljin, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D33567
      55277c32
  15. 18 2月, 2015 1 次提交
    • J
      build: running "make" with no arguments must not "uninstall" · daebb1f9
      Jim Meyering 提交于
      Summary:
      Before this change, running "make" with no arguments would
      silently run the rules for the "uninstall" target(!).  Don't do that.
      * Makefile (default): New, first target; depend on "all".
      (uninstall, install): Do not hide the commands we run.
      
      Test Plan:
        Run "make" and verify that the rules for "uninstall" are no longer run.
        Instead, note that many files are compiled and linked.  Before, none were.
      
      Reviewers: sdong, ljin, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D33531
      daebb1f9
  16. 14 2月, 2015 2 次提交
    • J
      build: fix unportable Makefile syntax · b9a0213c
      Jim Meyering 提交于
      Summary:
      * Makefile (dummy): Prefix this statement with "dummy := ",
      so that it no longer triggers a syntax error from GNU make 3.80
      and earlier.  Reported by nielsl in
      https://github.com/facebook/rocksdb/issues/509
      
      Test Plan: run make
      
      Reviewers: sdong, ljin, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D33429
      b9a0213c
    • J
      build: remove unportable use of sed in favor of $(CXX)'s -MT · b3fd1622
      Jim Meyering 提交于
      Summary:
      The code being removed would invoke sed differently to work
      around a portability difference in how sed -i works (different
      on MacOS).  Yet performing a host-type-based ifdef fails when
      the tools installed do not match.  That sed use was solely to
      post-process the .d file.  Instead, generate the desired output
      directly, by using the compiler's -MT<FILE> option.
      * Makefile (%.d: %.cc): With the prior use of Makefile-ifdef'd
      sed, when building on MacOS with gnu sed, every run of this rule
      would fail with a sed usage error.  Also list each .d file as a
      dependent.
      
      Test Plan:
        Ensure that a selected .d file is the same as before both with
        g++ and with clang++.  However, note that the new .d files each
        contain a new reference to the .d file itself.
      
      Reviewers: sdong, ljin, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D33369
      b3fd1622
  17. 05 2月, 2015 2 次提交
  18. 04 2月, 2015 1 次提交
    • I
      rocksdb: Enable scan-build static analysis · 4d98e293
      Igor Sugak 提交于
      Summary:
      Added new target ##make analyze## into Makefile. This command runs clang static analyzer and builds the sources as ##make all##. The result report is put into ##$(RocksDbSourceRoot)/can_build_report/##
      
      If the development environment is a Facebook devserver and ##ROCKSDB_NO_FBCODE## is not set, then scan-build is used from fbcode. If it is run not on a Facebook devserver, scan-build should be available in ##$PATH##. I'll add details to wiki how to install scan-build on a non Facebook devserver environment.
      
      Test Plan:
      Run the fallowing commands on a Facebook devserver and Mac OS, and ensure no build or test errors.
      
      ```
      % make all check -j32
      % make clean
      % USE_CLANG=1 make all -j32
      % make analyze
      % USE_CLANG=1 make analyze
      ```
      
      Reviewers: sdong, lgalanis, leveldb, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D32799
      4d98e293
  19. 02 2月, 2015 1 次提交
  20. 31 1月, 2015 1 次提交
  21. 30 1月, 2015 1 次提交
  22. 29 1月, 2015 1 次提交
  23. 28 1月, 2015 1 次提交
    • I
      Remove blob store from the codebase · e8bf2310
      Igor Canadi 提交于
      Summary: We don't have plans to work on this in the short term. If we ever resurrect the project, we can find the code in the history. No need for it to linger around
      
      Test Plan: no test
      
      Reviewers: yhchiang, rven, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D32349
      e8bf2310
  24. 27 1月, 2015 1 次提交
    • S
      Sync WAL Directory and DB Path if different from DB directory · d888c957
      sdong 提交于
      Summary:
      1. If WAL directory is different from db directory. Sync the directory after creating a log file under it.
      2. After creating an SST file, sync its parent directory instead of DB directory.
      3. change the check of kResetDeleteUnsyncedFiles in fault_injection_test. Since we changed the behavior to sync log files' parent directory after first WAL sync, instead of creating, kResetDeleteUnsyncedFiles will not guarantee to show post sync updates.
      
      Test Plan: make all check
      
      Reviewers: yhchiang, rven, igor
      
      Reviewed By: igor
      
      Subscribers: leveldb, dhruba
      
      Differential Revision: https://reviews.facebook.net/D32067
      d888c957
  25. 24 1月, 2015 1 次提交
    • I
      Add thread sanitizer · 401d4205
      Igor Canadi 提交于
      Summary: When you compile with COMPILE_WITH_TSAN=1, we will compile the code with -fsanitize=thread. This will resolve bunch of data race issues we might have.
      
      Test Plan: COMPILE_WITH_TSAN=1 m db_test
      
      Reviewers: yhchiang, rven, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D32019
      401d4205
  26. 16 1月, 2015 1 次提交
    • T
      Ported LevelDB's fault_injection_test · d10f1de2
      Thomas Dudziak 提交于
      Summary:
      This is a port of [[ https://github.com/google/leveldb/blob/master/db/fault_injection_test.cc | LevelDB's fault_injection_test ]] to RocksDB. Unfortunately it fails with:
      
      ```
      ==== Test FaultInjectionTest.FaultTest
      db/fault_injection_test.cc:491: Corruption: no meta-nextfile entry in descriptor
      #0   ./fault_injection_test() [0x41477a] rocksdb::FaultInjectionTest::PartialCompactTestReopenWithFault(rocksdb::FaultInjectionTest::ResetMethod, int, int) /data/users/tomdzk/rocksdb/db/fault_injection_test.cc:491
      #1   ./fault_injection_test() [0x40a38a] rocksdb::_Test_FaultTest::_Run() /data/users/tomdzk/rocksdb/db/fault_injection_test.cc:517
      #2   ./fault_injection_test() [0x415bea] rocksdb::_Test_FaultTest::_RunIt() /data/users/tomdzk/rocksdb/db/fault_injection_test.cc:507
      #3   ./fault_injection_test() [0x584367] rocksdb::test::RunAllTests() /data/users/tomdzk/rocksdb/util/testharness.cc:70
      #4   /usr/local/fbcode/gcc-4.8.1-glibc-2.17/lib/libc.so.6(__libc_start_main+0x10e) [0x7f7a40857efe] ??  ??:0
      #5   ./fault_injection_test() [0x408bb8] _start ??:0
      ```
      
      so I commented out the test invocation in the source code for now (lines 514-520) so it can be merged.
      
      Test Plan: This is a new test.
      
      Reviewers: igor
      
      Reviewed By: igor
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D31587
      d10f1de2
  27. 08 1月, 2015 2 次提交
    • I
      :%s/build_config/make_config · b89d58df
      Igor Canadi 提交于
      Summary: I'm tired of double-tab when opening build_tools/<something>. This change will make bu<tab> fully complete my path :)
      
      Test Plan: `vi bu<tab>` gives me `vi build_tools/` yay!
      
      Reviewers: yhchiang, rven, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D30639
      b89d58df
    • A
      Memtablerep Benchmark · 242b9769
      Ameya Gupte 提交于
      Summary:
      Create a benchmark for testing memtablereps. This diff is a bit rough, but it should do the trick until other bootcampers can clean it up.
      
      Addressing comments
      Removed the mutexes
      Changed ReadWriteBenchmark to fix number of reads and count the number of writes we can perform in that time.
      
      Test Plan:
      Run it.
      
      Below runs pass
      ./memtablerep_bench --benchmarks fillrandom,readrandom --memtablerep skiplist
      
      ./memtablerep_bench --benchmarks fillseq,readseq --memtablerep skiplist
      
      ./memtablerep_bench --benchmarks readwrite,seqreadwrite --memtablerep skiplist --num_operations 200 --num_threads 5
      
      ./memtablerep_bench --benchmarks fillrandom,readrandom --memtablerep hashskiplist
      
      ./memtablerep_bench --benchmarks fillseq,readseq --memtablerep hashskiplist
       --num_scans 2
      
      ./memtablerep_bench --benchmarks fillseq,readseq --memtablerep vector
      
      Reviewers: jpaton, ikabiljo, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, ameyag
      
      Differential Revision: https://reviews.facebook.net/D22683
      242b9769
  28. 24 12月, 2014 1 次提交
  29. 23 12月, 2014 1 次提交
  30. 06 12月, 2014 2 次提交