1. 24 2月, 2015 3 次提交
  2. 21 2月, 2015 8 次提交
    • 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
    • J
      inputs: restore "const" attribute removed by D33759 · a2b911b6
      Jim Meyering 提交于
      Summary:
      The "const" attribute applies to the type, and placing it
      before that return type retains the desired semantics,
      yet avoids the compiler error/warning.
      
      Test Plan: Run make
      
      Reviewers: ljin, sdong, igor.sugak, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D33789
      a2b911b6
    • J
      mark as unused some variables with cpp-derived names · 1b408258
      Jim Meyering 提交于
      Summary: as above
      
      Test Plan:
        Run "make EXTRA_CXXFLAGS='-W -Wextra'" and see fewer errors.
      
      Reviewers: ljin, sdong, igor.sugak, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D33753
      1b408258
    • J
      fix erroneous assert: cast kBlockSize (of type unsigned int) to "int" · c6d54b50
      Jim Meyering 提交于
      Summary:
      Otherwise, we would assert that an unsigned expression is always >= 0.
      The intent was to form a possibly negative number, and to assert that
      that value is always >= 0, but since one variable in the computation
      was unsigned, the result was guaranteed to be unsigned, too, rendering
      the assertion useless.
      
      Cast that unsigned variable to "int", so that all operands
      are signed, and thus so that the result can be negative.
      
      Test Plan:
        Run "make EXTRA_CXXFLAGS='-W -Wextra'" and see fewer errors.
      
      Reviewers: ljin, sdong, igor.sugak, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D33771
      c6d54b50
    • J
      table_test.cc: add missing 5th arg in TestArgs initializer · aa5d8e6d
      Jim Meyering 提交于
      Summary:
      Adding -W and -Wextra to CXXFLAGS provoked this failure:
      
      	  table/table_test.cc:1854:56: error: missing initializer for member ‘rocksdb::TestArgs::format_version’ [-Werror=missing-field-initializers]
      	     TestArgs args = { DB_TEST, false, 16, kNoCompression };
      	                                                          ^
      
      Add the missing, 5th value (format_version).
      
      Test Plan:
        Run "make EXTRA_CXXFLAGS='-W -Wextra'" and see fewer errors.
      
      Reviewers: ljin, sdong, igor.sugak, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D33765
      aa5d8e6d
    • J
      maint: remove extraneous "const" attribute from return type · c37937a9
      Jim Meyering 提交于
      Summary:
      The "const" attribute does not make sense on a return type,
      and provokes a warning/error from gcc -W -Wextra.
      
      Test Plan:
        Run "make EXTRA_CXXFLAGS='-W -Wextra'" and see fewer errors.
      
      Reviewers: ljin, sdong, igor.sugak, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D33759
      c37937a9
    • J
      build: remove always-true assertions · 9283c7af
      Jim Meyering 提交于
      Summary:
      Remove some always-true assertions.
      They provoke these compilation failures:
      
        table/plain_table_key_coding.cc:279:20: error: comparison of unsigned expression >= 0 is always true [-Werror=type-limits]
        db/version_set.cc:336:15: error: comparison of unsigned expression >= 0 is always true [-Werror=type-limits]
      
      * table/plain_table_key_coding.cc (rocksdb): Remove assertion that
      unsigned type variable is >= 0.
      * db/version_set.cc (DoGenerateLevelFilesBrief): Likewise.
      
      Test Plan:
        Run "make EXTRA_CXXFLAGS='-W -Wextra'" and see fewer errors.
      
      Reviewers: ljin, sdong, igor.sugak, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D33747
      9283c7af
    • I
      Adding Flush to AutoRollLogger · 06a766de
      Islam AbdelRahman 提交于
      Summary:
      During running AutoRollLoggerTest on FreeBSD we have found out that AutoRollLogger is not flushing correctly (test fails on FreeBSD)
      This diff add Flush to AutoRollLogger to fix this problem
      
      Test Plan:
      [My machine] make all check ( all tests pass)
      [FreeBSD VM] running AutoRollLoggerTest ( all tests pass )
      
      Reviewers: sdong, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D33633
      06a766de
  3. 20 2月, 2015 7 次提交
    • I
      Fix mac build · 92416fa7
      Igor Canadi 提交于
      92416fa7
    • I
      GetOptionsFromString + fixes to block_based_table_options · 96ab15d3
      Igor Canadi 提交于
      Summary:
      In mongo, we currently have a single column family and I'd like to support setting rocksdb::Options from string. This diff provides an option to GetOptionsFromString()
      
      There's one more problem. Currently GetColumnFamilyOptionsFromString() overwrites block_based options. In mongo I set default values for block_cache and some other values of BlockBasedTableOptions and I don't want them reset to default with GetOptionsFromString().
      
      Test Plan: added unit test
      
      Reviewers: yhchiang, rven, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D33729
      96ab15d3
    • I
      rocksdb: Fix scan-build bug 'Memory leak' in db/db_bench.cc · 73711f95
      Igor Sugak 提交于
      Summary:
      The bug is detected by scan-build.
      
      In `void WriteSeqSeekSeq(ThreadState* thread)` memory is allocated in line 3118 `Slice key = AllocateKey();` but `Slice` is not responsible deleting `Slice::data()`.
      
      Added `std::unique_ptr<const char[]>*` parameter to ` AllocateKey()`, so that it requires caller to not forget about Slice::data() management.
      
      scan-build bug report: http://home.fburl.com/~sugak/latest6/report-6e9754.html#EndPath
      
      Test Plan:
      Make sure scan-build does not report 'Memory leak' in db/db_bench.cc and all tests are passing.
      ```lang=bash
      % make analyze
      % make check
      ```
      
      Reviewers: lgalanis, igor, meyering, sdong
      
      Reviewed By: meyering, sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D33501
      73711f95
    • I
      rocksdb: Fix scan-build memory warning in table/block_based_table_reader.cc · 98870c7b
      Igor Sugak 提交于
      Summary:
      scan-build is reporting two memory leak bugs in `table/block_based_table_reader.cc`. They are both false positives. In both cases we allocate memory in `ReadBlockFromFile` if `s.ok()`. Then after the function `ReadBlockFromFile` returns we check for the same variable if `s.ok()` and then use the memory that was allocated. The bugs reported by scan-build is if `ReadBlockFromFile` allocates memory and returns, but for some reason status `s` is not the same and `s.ok() != true`.
      
      In this case scan-build is concerned that memory owner transfer is not explicit. I modified `ReadBlockFromFile` to accept `std::unique_ptr<Block>*` as a parameter, instead of raw pointer.
      
      scan-build reports:
      http://home.fburl.com/~sugak/latest2/report-a4b3fa.html#EndPath
      http://home.fburl.com/~sugak/latest2/report-29adbf.html#EndPath
      
      Test Plan:
      Make sure scan-build does not report these bugs and all tests are passing.
      ```lang=bash
      % make check
      % make analyze
      ```
      
      Reviewers: sdong, lgalanis, meyering, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D33681
      98870c7b
    • 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
    • S
      Add rocksdb.num-live-versions: number of live versions · d45a6a40
      sdong 提交于
      Summary: Add a DB property about live versions. It can be helpful to figure out whether there are files not live but not yet deleted, in some use cases.
      
      Test Plan: make all check
      
      Reviewers: rven, yhchiang, igor
      
      Reviewed By: igor
      
      Subscribers: yoshinorim, dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D33327
      d45a6a40
    • 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
  4. 19 2月, 2015 7 次提交
    • I
      Revert "Fbson to Json" · b8ac71ba
      Igor Canadi 提交于
      This reverts commit 7ce1b2c1.
      b8ac71ba
    • S
      Fbson to Json · 7ce1b2c1
      stash93 提交于
      Summary: Replaced rapidjson with fbson
      
      Test Plan:
      make all check
      make valgrind_check
      
      Reviewers: golovachalexander, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba
      
      Differential Revision: https://reviews.facebook.net/D32733
      7ce1b2c1
    • V
      Managed iterator · 7d817268
      Venkatesh Radhakrishnan 提交于
      Summary:
      This is a diff for managed iterator. A managed iterator
      is a wrapper around an iterator which saves the options for that
      iterator as well as the current key/value so that the underlying iterator
      and its associated memory can be released when it is aged out
      automatically or on the request of the user. Will provide the automatic release as a follow-up diff.
      
      Test Plan: Managed* tests in db_test and XF tests for managed iterator
      
      Reviewers: igor, yhchiang, anthony, sdong
      
      Reviewed By: sdong
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D31401
      7d817268
    • 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
  5. 18 2月, 2015 5 次提交
  6. 14 2月, 2015 3 次提交
    • 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
    • I
      rocksdb: Fix scan-build 'Called C++ object pointer is null' and 'Dereference of null pointer' bugs · 4e4b8578
      Igor Sugak 提交于
      Summary:
      In the existing implementation of `ASSERT*`, test termination happens in `~Tester`, which is called when instance of `Tester` goes out of scope. This is the cause of many scan-build bugs.
      
      This diff changes `ASSERT*` to terminate the test immediately. Also added one suppression in `util/signal_test.cc`
      
      scan-build bugs
      before: http://home.fburl.com/~sugak/latest/index.html
      after: http://home.fburl.com/~sugak/latest2/index.html
      
      Test Plan:
      Modify some test to fail an assertion and make sure that `ASSERT*` terminated the test.
      
      Run `make analyze` and make sure no 'Called C++ object pointer is null' and 'Dereference of null pointer' bugs reported.
      
      Run tests and make sure no failing tests:
      ```lang=bash
      % make check
      % USE_CLANG=1 make check
      ```
      
      Reviewers: meyering, lgalanis, sdong, rven, igor
      
      Reviewed By: igor
      
      Subscribers: dhruba, leveldb
      
      Differential Revision: https://reviews.facebook.net/D33381
      4e4b8578
    • 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
  7. 13 2月, 2015 3 次提交
  8. 12 2月, 2015 3 次提交
  9. 11 2月, 2015 1 次提交