build: Update leveldb to 1.22+ #17398

pull laanwj wants to merge 13 commits into bitcoin:master from laanwj:2019_11_leveldb_upstream changing 212 files +11520 −7937
  1. laanwj commented at 11:07 pm on November 6, 2019: member

    This updates leveldb to currently newest upstream commit https://github.com/bitcoin-core/leveldb/commit/0c40829872a9f00f38e11dc370ff8adb3e19f25b:

    • CRC32C hardware acceleration is now an external library crc32c. This adds acceleration on ARM, and should be faster on x86 because of using prefetch. It also makes it easy to support similar instruction sets on other platforms in the future.
    • Thread handling uses C++11, instead of platform specific code.
    • Native windows environment was added. No need to maintain our own hacky one, anymore.
    • Upstream now builds using CMake. This doesn’t mean we need to use that (phew), but internal configuration changed to a a series of checks, instead of OS profiles. This means the blanket error “Cannot build leveldb for $host. Please file a bug report’ is removed.

    All changes: https://github.com/google/leveldb/compare/a53934a3ae1244679f812d998a4f16f2c7f309a6...0c40829872a9f00f38e11dc370ff8adb3e19f25b

    Pretty much all our changes have been subsumed by upstream, so we figured it was cleaner to start over with a new branch from upstream with the still-relevant patches applied: https://github.com/bitcoin-core/leveldb/tree/bitcoin-fork-new

    There’s quite some testing to be done (see below). See https://github.com/bitcoin-core/leveldb/issues/25 and https://github.com/bitcoin-core/leveldb/pull/26 for more history and context.

    TODO:

    • Subtree crc32c
    • Make linters happy about crc32 subtree
    • Integrate crc32c library into build system
    • MSVC build system
  2. laanwj added the label UTXO Db and Indexes on Nov 6, 2019
  3. laanwj added the label Upstream on Nov 6, 2019
  4. DrahtBot commented at 11:51 pm on November 6, 2019: member

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    Conflicts

    Reviewers, this pull request conflicts with the following ones:

    • #18077 (net: Add NAT-PMP port forwarding support by hebasto)
    • #18011 (Replace current benchmarking framework with nanobench by martinus)
    • #17948 (build: pass -fno-ident to prevent compilers emitting ident directives by fanquake)
    • #17874 (build: make linker checks more robust by fanquake)
    • #17227 (Qt: Add Android packaging support by icota)
    • #15704 (Move Win32 defines to configure.ac to ensure they are globally defined by luke-jr)

    If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

  5. laanwj force-pushed on Nov 7, 2019
  6. laanwj added this to the milestone 0.20.0 on Nov 7, 2019
  7. laanwj commented at 11:53 am on November 7, 2019: member

    OK, travis build should pass now

    Testing notes:

    • check that HAVE_FULLFSYNC=1 is passed on MacOS (done, checking for F_FULLFSYNC... yes appears in both MacOS builds)
    • check that crc32c is correctly integrated
      • ARM64 (checked crc32c::ExtendArm64 in libcrc32c_arm_crc.a is invoked and contains the correct asm instructions)
      • x86_64 (checked crc32c::ExtendSse42 in libcrc32c_sse42.a is invoked and contains the correct asm instructions)
    • do full sync on ARM64 with crc32c hw accel code compiled in and in use (done, on i.MX8MQ SoC on Linux)
    • test on BSD variants
      • FreeBSD 12.0
      • OpenBSD 6.6
      • MacOS
    • test on Windows (full sync, as well as catching up an existing node)
    • verify file descriptor use (see #17398 (comment) )
    • check sync performance before an after on different OS and hardware
    • test forward and backward compatibility of UTXO and block database (done here #17398 (comment))
  8. laanwj renamed this:
    WIP: Update leveldb to 1.22+
    WIP: build: Update leveldb to 1.22+
    on Nov 7, 2019
  9. laanwj force-pushed on Nov 7, 2019
  10. laanwj force-pushed on Nov 7, 2019
  11. elichai commented at 1:20 pm on November 7, 2019: contributor

    Concept ACK for the new branch. it’s really nice that we can again easily see the diff from upstream. https://github.com/google/leveldb/compare/master...bitcoin-core:bitcoin-fork-new

    Will try to read later the (reported) changes upstream leveldb did in the past ~160 commits.

  12. laanwj force-pushed on Nov 7, 2019
  13. laanwj force-pushed on Nov 7, 2019
  14. sipsorcery commented at 5:59 pm on November 7, 2019: member

    Regarding the msvc build I didn’t have any problems getting it to build after applying what I think are the relevant changes to the libleveldb project.

    I do get two new warnings:

    0Severity	Code	Description	Project	File	Line	Suppression State	Suppression State
    1Warning	C26110	Caller failing to hold lock 'this->mu_' before calling function 'std::_Mutex_base::unlock'.	libleveldb	C:\DEV\GITHUB\SIPSORCERY_BITCOIN\SRC\LEVELDB\PORT\PORT_STDCXX.H	58		
    2Severity	Code	Description	Project	File	Line	Suppression State	Suppression State
    3Warning	C26110	Caller failing to hold lock 'this->mu_->mu_' before calling function 'std::unique_lock<std::mutex>::unique_lock<std::mutex>'.	libleveldb	C:\DEV\GITHUB\SIPSORCERY_BITCOIN\SRC\LEVELDB\PORT\PORT_STDCXX.H	76		
    

    Are any of the preprocessor defines below relevant for Windows?

    0LEVELDB_CPPFLAGS_INT += -DHAVE_FDATASYNC=@HAVE_FDATASYNC@
    1LEVELDB_CPPFLAGS_INT += -DHAVE_FULLFSYNC=@HAVE_FULLFSYNC@
    2LEVELDB_CPPFLAGS_INT += -DHAVE_O_CLOEXEC=@HAVE_O_CLOEXEC@
    

    In case it’s of any use the diff for libleveldb.vcxproj is:

     0diff --git a/build_msvc/libleveldb/libleveldb.vcxproj b/build_msvc/libleveldb/libleveldb.vcxproj
     1index f855923c6..ba6a86fdc 100644
     2--- a/build_msvc/libleveldb/libleveldb.vcxproj
     3+++ b/build_msvc/libleveldb/libleveldb.vcxproj
     4@@ -24,8 +24,6 @@
     5     <ClCompile Include="..\..\src\leveldb\db\version_set.cc" />
     6     <ClCompile Include="..\..\src\leveldb\db\write_batch.cc" />
     7     <ClCompile Include="..\..\src\leveldb\helpers\memenv\memenv.cc" />
     8-    <ClCompile Include="..\..\src\leveldb\port\port_posix_sse.cc" />
     9-    <ClCompile Include="..\..\src\leveldb\port\port_win.cc" />
    10     <ClCompile Include="..\..\src\leveldb\table\block.cc" />
    11     <ClCompile Include="..\..\src\leveldb\table\block_builder.cc" />
    12     <ClCompile Include="..\..\src\leveldb\table\filter_block.cc" />
    13@@ -42,7 +40,7 @@
    14     <ClCompile Include="..\..\src\leveldb\util\comparator.cc" />
    15     <ClCompile Include="..\..\src\leveldb\util\crc32c.cc" />
    16     <ClCompile Include="..\..\src\leveldb\util\env.cc" />
    17-    <ClCompile Include="..\..\src\leveldb\util\env_win.cc" />
    18+    <ClCompile Include="..\..\src\leveldb\util\env_windows.cc" />
    19     <ClCompile Include="..\..\src\leveldb\util\filter_policy.cc" />
    20     <ClCompile Include="..\..\src\leveldb\util\hash.cc" />
    21     <ClCompile Include="..\..\src\leveldb\util\histogram.cc" />
    22@@ -52,7 +50,7 @@
    23   </ItemGroup>
    24   <ItemDefinitionGroup>
    25     <ClCompile>
    26-        <PreprocessorDefinitions>_CRT_NONSTDC_NO_DEPRECATE;LEVELDB_PLATFORM_WINDOWS;LEVELDB_ATOMIC_PRESENT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    27+        <PreprocessorDefinitions>HAVE_CRC32C=0;HAVE_SNAPPY=0;__STDC_LIMIT_MACROS;LEVELDB_IS_BIG_ENDIAN=0;_UNICODE;UNICODE;_CRT_NONSTDC_NO_DEPRECATE;LEVELDB_PLATFORM_WINDOWS;LEVELDB_ATOMIC_PRESENT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    28         <DisableSpecificWarnings>4244;4267;4312;</DisableSpecificWarnings>
    29         <AdditionalIncludeDirectories>..\..\src\leveldb;..\..\src\leveldb\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    30        </ClCompile>
    
  15. laanwj commented at 8:36 pm on November 7, 2019: member

    In case it’s of any use the diff for libleveldb.vcxproj is:

    Thanks, I’ll include that!

    Are any of the preprocessor defines below relevant for Windows?

    I think they’re only used in env_posix.cc? Yes, they are, so indeed they’re irrelevant on windows.

  16. laanwj force-pushed on Nov 7, 2019
  17. laanwj commented at 12:56 pm on November 8, 2019: member

    AppVeyor fails on some warning that is promoted to error, for an unreachable destructor.

    0C:\projects\bitcoin\src\leveldb\util\env_windows.cc(383): error C2220: the following warning is treated as an error [C:\projects\bitcoin\build_msvc\bitcoind\bitcoind.vcxproj]
    1C:\projects\bitcoin\src\leveldb\util\env_windows.cc(383): warning C4722: 'leveldb::`anonymous namespace'::WindowsEnv::~WindowsEnv': destructor never returns, potential memory leak [C:\projects\bitcoin\build_msvc\bitcoind\bitcoind.vcxproj]
    

    Did you need some flag changes too?

  18. fanquake commented at 4:19 pm on November 8, 2019: member

    Concept ACK - have not reviewed the changes yet. Only done some minimal does it compile + start running tests. Started testing going between leveldb versions on macOS.

    macOS (fed6a9bd661321694b375dc393e8c0307042474f + depends):

    0checking for fdatasync... no
    1checking for F_FULLFSYNC... yes
    2checking for O_CLOEXEC... yes
    3checking for __builtin_prefetch... yes
    4checking for _mm_prefetch... yes
    5checking for strong getauxval support in the system headers... no
    6checking for weak getauxval support in the compiler... yes
    7....
    8LevelDB using max_open_files=1000 (default=1000)
    

    openBSD 6.6 (fed6a9bd661321694b375dc393e8c0307042474f)

    0checking for fdatasync... yes
    1checking for F_FULLFSYNC... no
    2checking for O_CLOEXEC... yes
    3checking for __builtin_prefetch... yes
    4checking for _mm_prefetch... yes
    5checking for strong getauxval support in the system headers... no
    6checking for weak getauxval support in the compiler... yes
    7....
    8LevelDB using max_open_files=1000 (default=1000)
    

    Windows 10 (WSL) (fed6a9bd661321694b375dc393e8c0307042474f + depends)

    0checking for fdatasync... no
    1checking for F_FULLFSYNC... no
    2checking for O_CLOEXEC... no
    3checking for __builtin_prefetch... yes
    4checking for _mm_prefetch... yes
    5checking for strong getauxval support in the system headers... no
    6checking for weak getauxval support in the compiler... yes
    7...
    8LevelDB using max_open_files=1000 (default=1000)
    
  19. laanwj commented at 8:40 pm on November 8, 2019: member
    @fanquake thanks for testing, good to hear that this is not causing build failure anywhere, and that it works with regard to file dscriptors setting
  20. laanwj force-pushed on Nov 10, 2019
  21. laanwj renamed this:
    WIP: build: Update leveldb to 1.22+
    build: Update leveldb to 1.22+
    on Nov 10, 2019
  22. laanwj commented at 10:49 am on November 10, 2019: member
    Squashed fixup commits and removed WIP tag. Should be ready for review/testing.
  23. sipa commented at 3:51 am on November 11, 2019: member

    ACK.

    Concept: very happy to get rid of all those local modifications.

    Code review: I reviewed the diff between upstream LevelDB and our new branch (but not the changes in upstream LevelDB), and the new commits here. I left two nit comments on one of the commits.

    Tests:

    • I verified that the crc32 asm code is being executed on x86_64 by adding asserts before the asm commands in the crc32 lib.
    • I took a datadir that was a few weeks out of date on an x86_64 machine, started it with this branch, and ran with -checkblocks=500. No issues.
    • I let this datadir sync with the network, interrupting it from time to time to force a flush.
    • I ran gettxoutsetinfo on this branch on the resulting datadir, and compared it with a node that has been running master as of a few weeks.
    • I restarted with master, let it sync another 3 blocks, and ran gettxoutsetinfo again, and compared it again with another node.

    I did observe a segfault in the script verification thread once, which was very surprising. As the script verification threads shouldn’t be doing any LevelDB stuff this should be unrelated, but scary regardless. I do have a large number of weird dmesg lines on this system, so this may be a hardware issue. I’ve been unable to reproduce the problem.

  24. sipsorcery commented at 4:06 pm on November 11, 2019: member

    tACK* e2ef5fbc0ac077f942aa79dfb4274e0016701c24.

    *test on Windows (full sync, as well as catching up an existing node)

  25. sipa commented at 5:09 pm on November 11, 2019: member
  26. laanwj commented at 9:33 am on November 12, 2019: member

    Thanks for testing!

    Is commit abd50f1 still needed?

    The subtree check in travis didn’t pass without it. I could try removing it, but I think that’s still the case.

    I don’t understand how it’s supposed to pass in the first place for the other dependencies without ever fetching them as described in the doc? Or does travis do this hidden?

  27. MarcoFalke commented at 1:24 pm on November 12, 2019: member
    We only check that it is a subtree, not that the subtree corresponds to some subtree hosted somewhere else.
  28. laanwj commented at 1:44 pm on November 12, 2019: member

    We only check that it is a subtree, not that the subtree corresponds to some subtree hosted somewhere else.

    Are you sure? Now I’m doubly confused why that commit makes a difference at all (the literal error message was something like “Could not find commit XXXXXX”). Did I subtree correctly?

  29. MarcoFalke commented at 2:54 pm on November 12, 2019: member
    Maybe the script doesn’t work for initial subtree check ins?
  30. laanwj commented at 9:52 am on November 15, 2019: member

    I don’t understand why that would be the case. What is the difference between this tree, and the tree when it is merged into master, that would make it pass a subtree check? In both cases the merge of crc32c is simply an ancestor, it’s one merge deeper then.

    (and if it is the case, what should we do, merge with this commit, or merge without it and hope everything will be alright after merging? Both seems suboptimal. Is this the first time that this comes up?)

  31. MarcoFalke commented at 2:18 pm on November 15, 2019: member
    I removed the commit and travis passed for me :woman_shrugging:
  32. laanwj force-pushed on Nov 15, 2019
  33. laanwj commented at 3:03 pm on November 15, 2019: member
    oh great, thanks, have i been chasing ghosts again… removed it here too
  34. fanquake commented at 3:33 pm on November 15, 2019: member
    @theuni Cory it would be good to get your eyes over the build system changes here.
  35. MarcoFalke commented at 4:02 pm on November 15, 2019: member
    @jamesob Is this something you could benchmark?
  36. jamesob commented at 4:27 pm on November 15, 2019: member
    Sure thing, I’ll start a benchmark run this afternoon.
  37. laanwj commented at 12:58 pm on November 18, 2019: member

    Travis still passes after removing the subtree workaround (yay). AppVeyor is still failing on this issue:

    AppVeyor fails on some warning that is promoted to error, for an unreachable destructor.

    Anyone have ideas how to disable this warning, or at least make it no longer an error?

  38. sipsorcery commented at 1:40 pm on November 18, 2019: member

    @laanwj msvc is grumpy about the std::abort in the destructor. It does seem like the nuclear option but I guess the leveldb devs decided the condition is catastrophic enough to warrant it.

    To get rid of the warning and get the appveyor build to pass the line in build_msvc\common.init.vcxproj file can be updated to:

    0<DisableSpecificWarnings>2220;4018;4221;4244;4267;4334;4715;4805;</DisableSpecificWarnings>
    
  39. laanwj commented at 1:44 pm on November 18, 2019: member

    @laanwj msvc is grumpy about the std::abort in the destructor. It does seem like the nuclear option but I guess the leveldb devs decided the condition is catastrophic enough to warrant it.

    I would also prefer if they do something different, but I’ll leave that for upstream. I think the code is unreachable so the “catastrophic condition” never actually happens.

    To get rid of the warning and get the appveyor build to pass the line in build_msvc\common.init.vcxproj file can be updated to:

    Thank you, will add this.

  40. sipsorcery commented at 6:36 pm on November 18, 2019: member
    Hmm leave that appveyor error with me. I’ll track down why the error code reported isn’t accepted in the ignore list.
  41. sipa commented at 7:32 pm on November 18, 2019: member
    Perhaps you want disable C4722 (destructor never terminates), not C2220 (treat warnings as errors)?
  42. sipsorcery commented at 7:37 pm on November 18, 2019: member
    @sipa yes, I should have read the trace more closely. Double checking build with corrected fix at the moment.
  43. sipa commented at 7:47 pm on November 18, 2019: member
    @laanwj Just discovered that the new native windows env here also has support for mmap’ed files, which may potentially be a significant performance improvement for windows systems. It’s also limited to 1000 though. I don’t think we want to change that without experimentation, but thought to bring it up so that we’re aware of it.
  44. MarcoFalke commented at 8:53 pm on November 18, 2019: member
    Would it make sense to create the crc32c subtree in src/subtree/ instead of in src/? That way it makes it doubly clear that it is a subtree and in light of #17413 it wouldn’t have to be moved again when someone works on that issue.
  45. sipsorcery commented at 9:07 pm on November 18, 2019: member

    Diff to fix the appveyor build. Removes the previously suggested warning fix and puts the correct one into the leveldb project.

     0diff --git a/build_msvc/common.init.vcxproj b/build_msvc/common.init.vcxproj
     1index ddd34603c..a04a38ff7 100644
     2--- a/build_msvc/common.init.vcxproj
     3+++ b/build_msvc/common.init.vcxproj
     4@@ -107,7 +107,7 @@
     5       <WarningLevel>Level3</WarningLevel>
     6       <PrecompiledHeader>NotUsing</PrecompiledHeader>
     7       <AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
     8-      <DisableSpecificWarnings>2220;4018;4221;4244;4267;4334;4715;4805;</DisableSpecificWarnings>
     9+      <DisableSpecificWarnings>4018;4221;4244;4267;4334;4715;4805;</DisableSpecificWarnings>
    10       <TreatWarningAsError>true</TreatWarningAsError>
    11       <PreprocessorDefinitions>ZMQ_STATIC;NOMINMAX;WIN32;HAVE_CONFIG_H;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;_CONSOLE;_WIN32_WINNT=0x0601;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    12       <AdditionalIncludeDirectories>..\..\src;..\..\src\univalue\include;..\..\src\secp256k1\include;..\..\src\leveldb\include;..\..\src\leveldb\helpers\memenv;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    13diff --git a/build_msvc/libleveldb/libleveldb.vcxproj b/build_msvc/libleveldb/libleveldb.vcxproj
    14index cabc17755..fc2bca12b 100644
    15--- a/build_msvc/libleveldb/libleveldb.vcxproj
    16+++ b/build_msvc/libleveldb/libleveldb.vcxproj
    17@@ -50,10 +50,10 @@
    18   </ItemGroup>
    19   <ItemDefinitionGroup>
    20     <ClCompile>
    21-        <PreprocessorDefinitions>HAVE_CRC32C=0;HAVE_SNAPPY=0;__STDC_LIMIT_MACROS;LEVELDB_IS_BIG_ENDIAN=0;_UNICODE;UNICODE;_CRT_NONSTDC_NO_DEPRECATE;LEVELDB_PLATFORM_WINDOWS;LEVELDB_ATOMIC_PRESENT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    22-        <DisableSpecificWarnings>4244;4267;4312;</DisableSpecificWarnings>
    23-        <AdditionalIncludeDirectories>..\..\src\leveldb;..\..\src\leveldb\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    24-       </ClCompile>
    25+     <PreprocessorDefinitions>HAVE_CRC32C=0;HAVE_SNAPPY=0;__STDC_LIMIT_MACROS;LEVELDB_IS_BIG_ENDIAN=0;_UNICODE;UNICODE;_CRT_NONSTDC_NO_DEPRECATE;LEVELDB_PLATFORM_WINDOWS;LEVELDB_ATOMIC_PRESENT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
    26+     <DisableSpecificWarnings>4244;4267;4312;4722;</DisableSpecificWarnings>
    27+     <AdditionalIncludeDirectories>..\..\src\leveldb;..\..\src\leveldb\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    28+    </ClCompile>
    29   </ItemDefinitionGroup>
    30   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
    31   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
    
  46. laanwj commented at 8:22 am on November 19, 2019: member

    Just discovered that the new native windows env here also has support for mmap’ed files,

    Very good news!

    It’s also limited to 1000 though. I don’t think we want to change that without experimentation

    Agree, this can be changed later, but at least for the initial merge of this, I think we’d want to stick with the default here.

    Would it make sense to create the crc32c subtree in src/subtree/ instead of in src/?

    Could do that, although by now it’s kind of annoying to update all the changes here, especially the linter changes. And making src/subtree doesn’t make sense if there’s no actual plans to move other subtrees there. Do you agree with moving leveldb there too?

    (If we do this, I’d slightly prefer src/thirdparty to src/subtrees).

    and in light of #17413 it wouldn’t have to be moved again when someone works on that issue.

    I had the impression that people weren’t enthusiastic about actually moving subtrees around, so there I settled for with “a central exception list” for all linters and scripts.

    Diff to fix the appveyor build. Removes the previously suggested warning fix and puts the correct one into the leveldb project.

    Thank you!

  47. laanwj force-pushed on Nov 19, 2019
  48. sipa commented at 8:32 am on November 19, 2019: member
    I like the idea of a subtrees/thirdparty/whatever subdirectory, but not as part of this PR.
  49. jamesob commented at 6:38 pm on November 19, 2019: member

    FWIW, 1b2407c97b4bd033efcbf6bb239cf3affbe696eb fails to compile for me:

     0./configure LDFLAGS=-L/home/james/src/bitcoin/db4/lib/ CPPFLAGS=-I/home/james/src/bitcoin/db4/include/ CXXFLAGS=-std=c++11 --enable-wallet --enable-debug --with-daemon CXX=/usr/bin/g++
     1[...]
     2  CXXLD    libunivalue.la
     3In file included from ./leveldb/port/port.h:14:0,
     4                 from ./leveldb/db/filename.h:16,
     5                 from leveldb/db/filename.cc:5:
     6./leveldb/port/port_stdcxx.h:44:36: error: LEVELDB_IS_BIG_ENDIAN was not declared in this scope
     7 static const bool kLittleEndian = !LEVELDB_IS_BIG_ENDIAN;
     8                                    ^~~~~~~~~~~~~~~~~~~~~
     9./leveldb/port/port_stdcxx.h:44:36: note: suggested alternative: __BIG_ENDIAN
    10 static const bool kLittleEndian = !LEVELDB_IS_BIG_ENDIAN;
    11                                    ^~~~~~~~~~~~~~~~~~~~~
    12                                    __BIG_ENDIAN
    13[...]
    14...
    

    Edit: disregard, stupid mistake - I ran make clean but didn’t run make distclean && ./autogen.sh && ./configure ....

  50. laanwj commented at 8:51 am on November 20, 2019: member

    I like the idea of a subtrees/thirdparty/whatever subdirectory, but not as part of this PR.

    Same, I absolutely think it’s a good idea, but not a good idea to commit to a specific way to doing it in this PR. It’s classic scope creep. Now we’d have to agree on the directory scheme too.

    Edit: disregard, stupid mistake - I ran make clean but didn’t run make distclean && ./autogen.sh && ./configure ….

    Yep, be sure to build from a clean tree after large build system changes such as this one. Autotools dependency tracking is not good at picking up meta-changes.

  51. laanwj commented at 8:54 am on November 20, 2019: member

    The new AppVeyor error is kind of interesting. All the RPC tests fail with:

    0 node1 2019-11-19T20:55:35.174988Z [] Opening LevelDB in C:\Users\appveyor\AppData\Local\Temp\1\test_runner_₿_🏃_20191119_205529\wallet_hd_132\node1\regtest\blocks\index 
    1 node1 2019-11-19T20:55:35.174988Z [] Fatal LevelDB error: NotFound: C:\Users\appveyor\AppData\Local\Temp\1\test_runner_₿_🏃_20191119_205529\wallet_hd_132\node1\regtest\blocks\index/LOCK: The system cannot find the path specified.\x0d 
    2 node1 2019-11-19T20:55:35.174988Z [] You can use -debug=leveldb to get more complete diagnostic messages 
    3 node1 2019-11-19T20:55:35.174988Z [] Fatal LevelDB error: NotFound: C:\Users\appveyor\AppData\Local\Temp\1\test_runner_₿_🏃_20191119_205529\wallet_hd_132\node1\regtest\blocks\index/LOCK: The system cannot find the path specified.\x0d 
    4 node1 2019-11-19T20:55:35.174988Z [] : Error opening block database. 
    5                                   Please restart with -reindex or -reindex-chainstate to recover.
    

    Might have something to do with UTF-8 handling in paths. -D_UNICODE -DUNICODE was taken from the upstream build system into both the MSVC and autotools, but it’s not clear it’s enough.

  52. jamesob commented at 2:55 pm on November 20, 2019: member

    Benches finished. Performance looks basically equivalent, although it looks like leveldb 1.22 may use ~3% more memory, though this may just be noise.

    leveldb-bench-plot

    bench/leveldb.1 vs. bench/leveldb.master.2 (absolute)

    bench name x bench/leveldb.1 bench/leveldb.master.2
    ibd.local.range.500000.535000.total_secs 2 4011.4344 (± 14.5325) 4022.3978 (± 12.0184)
    ibd.local.range.500000.535000.peak_rss_KiB 2 1870192.0000 (± 37792.0000) 1810804.0000 (± 596.0000)

    bench/leveldb.1 vs. bench/leveldb.master.2 (relative)

    bench name x bench/leveldb.1 bench/leveldb.master.2
    ibd.local.range.500000.535000.total_secs 2 1.000 1.003
    ibd.local.range.500000.535000.peak_rss_KiB 2 1.033 1.000
  53. laanwj commented at 2:59 pm on November 20, 2019: member
    @jamesob Thanks for benchmarking! Which OS?
  54. jamesob commented at 3:05 pm on November 20, 2019: member

    Here’s the host info: (I’ll try to embed this in the graphs somehow)

    key value
    hostname bench-strong
    cpu_model_name Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz
    ram_gb 31.353431701660156
    os [‘Debian GNU/Linux’, ‘10’, ‘buster’]
    arch x86_64
    kernel 4.19.0-5-amd64
    read_iops (/tmp) 27.5k
    write_iops (/tmp) 9215
  55. laanwj commented at 9:57 am on November 28, 2019: member

    The new AppVeyor error is kind of interesting. All the RPC tests fail with:

    Might have something to do with UTF-8 handling in paths. -D_UNICODE -DUNICODE was taken from the upstream build system into both the MSVC and autotools, but it’s not clear it’s enough.

    Does anyone have an idea about windows unicode issues? (if this is even the reason for this) I remember there were some patches for that against the old windows environment (https://github.com/bitcoin-core/leveldb/commit/f8e797a058b7a3993314e985dfdff8124214ba99 I can find this quickly), but these can’t be ported forward to the current one as-is.

    Edit: opened an upstream issue: google/leveldb#755

  56. DrahtBot added the label Needs rebase on Dec 9, 2019
  57. in Makefile.am:192 in e8fbd81c64 outdated
    188@@ -189,7 +189,7 @@ $(BITCOIN_WALLET_BIN): FORCE
    189 	$(MAKE) -C src $(@F)
    190 
    191 if USE_LCOV
    192-LCOV_FILTER_PATTERN=-p "/usr/include/" -p "/usr/lib/" -p "src/leveldb/" -p "src/bench/" -p "src/univalue" -p "src/crypto/ctaes" -p "src/secp256k1"
    193+LCOV_FILTER_PATTERN=-p "/usr/include/" -p "/usr/lib/" -p "src/leveldb/" -p "src/crc32c" -p "src/bench/" -p "src/univalue" -p "src/crypto/ctaes" -p "src/secp256k1"
    


    MarcoFalke commented at 1:46 pm on December 9, 2019:
    (trivial conflict here)
  58. laanwj force-pushed on Dec 9, 2019
  59. DrahtBot removed the label Needs rebase on Dec 9, 2019
  60. MarcoFalke commented at 6:24 pm on December 9, 2019: member

    Looks like this needs a new ubsan suppression implicit-integer-sign-change:crc32c/* in test/sanitizer_supp...

    The newly added unit tests fails on windows: https://travis-ci.org/bitcoin/bitcoin/jobs/622714557#L3406 and https://ci.appveyor.com/project/DrahtBot/bitcoin/builds/29415262#L66

  61. laanwj commented at 3:58 am on December 10, 2019: member

    Added the ubsan suppression, though I don’t understand why this is suddenly needed where it wasn’t before the rebase.

    The newly added unit tests fails on windows: https://travis-ci.org/bitcoin/bitcoin/jobs/622714557#L3406 and https://ci.appveyor.com/project/DrahtBot/bitcoin/builds/29415262#L66

    Yes, this is issue https://github.com/google/leveldb/issues/755 Can’t really move forward here until that is solved.

  62. DrahtBot added the label Needs rebase on Dec 10, 2019
  63. MarcoFalke commented at 7:15 pm on December 10, 2019: member

    Can’t really move forward here until that is solved.

    It didn’t sound like they are going to apply a patch. Unless maybe you can show a bug in chrome or so. They’d prefer we apply the patch to our own fork.

  64. laanwj commented at 11:36 am on December 11, 2019: member

    Yes, they seem to have no interest in the issue.

    Not sure how to move forward here, as there have been no demonstrated performance benefits here I may just close it. Rebasing this is kind of annoying as I have to re-import the trees every time.

  65. sipsorcery commented at 12:16 pm on December 11, 2019: member
    I was going to submit a PR to the leveldb repo. I suspect they’ll reject it but if there’s no rush maybe it’d be worth leaving this one open until that happens.
  66. laanwj commented at 12:23 pm on December 11, 2019: member

    I was going to submit a PR to the leveldb repo. I suspect they’ll reject it but if there’s no rush maybe it’d be worth leaving this one open until that happens.

    FWIW I’m happy to merge that in our local tree! I’d like to avoid the current situation of completely diverging from upstream again, but we still have three patches on top (of which it isn’t clear whether they will ever make upsteam) anyway, what’s one more?

    I’m just kind of disappointed in their response. It looks like they don’t care about any use besides the one in Chrome. Which is a valid stance—everyone needs to limit scope somehow—but … not great for us

  67. sipsorcery commented at 8:30 pm on December 11, 2019: member

    Here’s the patch. Once it’s applied the test from #17641 passes and my python functional tests got 3 out of 4 100% passes (25% failure rate on Windows is about normal).

    env_windows.cc.diff.txt

    PR also submitted to leveldb upstream repo.

  68. laanwj commented at 8:51 am on December 12, 2019: member

    Here’s the patch. Once it’s applied the test from #17641 passes and my python functional tests got 3 out of 4 100% passes (25% failure rate on Windows is about normal).

    Thanks! Will apply it and rebase this.

  69. laanwj force-pushed on Dec 12, 2019
  70. DrahtBot removed the label Needs rebase on Dec 12, 2019
  71. laanwj commented at 3:33 pm on December 12, 2019: member
    OK: Travis (including the new unit test on Windows) is passing now, AppVeyor failing same as it is everywhere.
  72. DrahtBot added the label Needs rebase on Dec 16, 2019
  73. laanwj force-pushed on Jan 2, 2020
  74. laanwj commented at 8:20 pm on January 2, 2020: member
    Rebased again (for trivial change in developer doc)
  75. DrahtBot removed the label Needs rebase on Jan 2, 2020
  76. laanwj added the label Needs gitian build on Jan 8, 2020
  77. DrahtBot removed the label Needs gitian build on Jan 8, 2020
  78. MarcoFalke added the label Needs gitian build on Jan 9, 2020
  79. DrahtBot commented at 3:02 am on January 10, 2020: member

    Gitian builds

    File commit 6196e930018181301b5972842ae384ea4288ff34(master) commit a76cf2df290b24d19621dcfcfc60ecd5b9782644(master and this pull)
    bitcoin-0.19.99-aarch64-linux-gnu-debug.tar.gz f270073d08b5b19f...
    bitcoin-0.19.99-aarch64-linux-gnu.tar.gz 593a627b596c3937...
    bitcoin-0.19.99-arm-linux-gnueabihf-debug.tar.gz 7286572ac754590b...
    bitcoin-0.19.99-arm-linux-gnueabihf.tar.gz 6ae253424d03749d...
    bitcoin-0.19.99-i686-pc-linux-gnu-debug.tar.gz d250bc34192b36f6...
    bitcoin-0.19.99-i686-pc-linux-gnu.tar.gz fcff77f3203fcb18...
    bitcoin-0.19.99-osx-unsigned.dmg 9b96881b9b531ed2...
    bitcoin-0.19.99-osx64.tar.gz 271a58d9fcd78671...
    bitcoin-0.19.99-riscv64-linux-gnu-debug.tar.gz 990f2d880923cf69...
    bitcoin-0.19.99-riscv64-linux-gnu.tar.gz 7daf3c32266c27f1...
    bitcoin-0.19.99-win64-debug.zip 2c5bcaeeb916e43d...
    bitcoin-0.19.99-win64-setup-unsigned.exe 4007a3384f243fe2...
    bitcoin-0.19.99-win64.zip 09ef0d982b7ddfb6...
    bitcoin-0.19.99-x86_64-linux-gnu-debug.tar.gz 2d3698907721e6e4...
    bitcoin-0.19.99-x86_64-linux-gnu.tar.gz 8e4fbb44b20b1489...
    bitcoin-0.19.99.tar.gz edcb10b9fd617cf3...
    bitcoin-core-linux-0.20-res.yml 5f7846db687c8928...
    bitcoin-core-osx-0.20-res.yml 7409e449cb8b14ff...
    bitcoin-core-win-0.20-res.yml 76008a0391cc7ace...
    linux-build.log e471676e499ed380...
    osx-build.log 80f15b171b257f72...
    win-build.log c7b4354e96c27b7b...
  80. DrahtBot removed the label Needs gitian build on Jan 10, 2020
  81. MarcoFalke deleted a comment on Jan 10, 2020
  82. sipsorcery commented at 11:30 am on January 26, 2020: member
    Needs #17980 (and a few others) to be able to build again.
  83. MarcoFalke commented at 2:38 pm on January 26, 2020: member

    re-run ci

    I am still planning to debug the gitian build failure

  84. MarcoFalke closed this on Jan 26, 2020

  85. MarcoFalke reopened this on Jan 26, 2020

  86. laanwj commented at 3:27 pm on January 28, 2020: member

    @MarcoFalke a local gitian build also failed with

    0fatal: No url found for submodule path 'src/crc32c/third_party/benchmark' in .gitmodules
    1bin/gbuild:23:in `system!': failed to run cd inputs/bitcoin && git submodule update --init --recursive --force (RuntimeError)
    2        from bin/gbuild:304:in `block in <main>'
    3        from bin/gbuild:288:in `each'
    4        from bin/gbuild:288:in `<main>'
    

    Looks like a conflict between git subtree and git submodule? I’ve imported crc32c as a subtree which (apparently) it has google benchmark as a submodule, which we entirely don’t need, but gitian’s checkout process notices it and fails.

    If I understand this correctly, I think the most straightforward way this could be worked around is by removing the submodule in our crc32c fork and subtreeing again.

    done: https://github.com/bitcoin-core/crc32c/commit/224988680f7673cd7c769963d4035cb315aa3388

    • passes gitian linux build now locally
  87. Squashed 'src/leveldb/' changes from f545dfabff4c2e9836efed094dba99a34fbc6b88..f8ae182c1e5176d12e816fb2217ae33a5472fdd7
    f8ae182c1e5176d12e816fb2217ae33a5472fdd7 Adds unicode support to Windows environment.
    92ae82c78f225de84040c51e07fd0b4a61caed99 Increase maximum read-only mmap()s used from 1000 to 4096 on 64-bit systems
    d42e63d49d9df05b12cd00af4ffc5f2b3edf7e21 Do not crash if filesystem can't fsync
    bf2c2090b7ee12c5d85b85f08649b6e685f8715f Add filename to corruption errors
    0c40829872a9f00f38e11dc370ff8adb3e19f25b Remove redundant PROJECT_SOURCE_DIR usage from CMake config.
    5abdf4c019e51fce59d34c21b13bf4e0a948828a Fix installed target definition.
    cf4d9ab23de7ec36b8e00536b7450f02c639cd87 Test CMake installation on Travis.
    95d0ba1cb046bfd76619b8b80e14ee1b2897d219 Renamed local variable in DBImpl::Write.
    657ba514298a726c7533f3106d3778062b59d75f Added return in Version::Get::State::Match to quiet warning.
    370d532a00581ca79c87af7d7811e56de0ca52a8 Using CMake's check_cxx_compiler_flag to check support for -Wthread-safety.
    45ee61579c1eb3accd6c88c922ec468dd61beea8 Update Travis CI configuration.
    60db170a43a373d734c5b9f19693d36c75251c39 Fix tsan problem in env_test.
    21304d41f77990b8edabbdab33b222bd5ceb5f18 Merge pull request #698 from neal-zhu:master
    5e921896eedf87b0fb06bc8a1fd0991b9ac64131 drop fileds in State that are duplicates of fileds in Saver and fix typo
    53e280b56866ac4c90a9f5fcfe02ebdfd4a19832 Simplify unlocking in DeleteObsoleteFiles.
    046216a7ca6fb17a40cf8aa5598d90c825212a3d Add "leveldb" subdirectory to public include paths.
    9ee91ac747ddf26f484d54f9aa474ccc4a2e0359 Ending sentences with periods in README.md.
    e0d5f83a4f80060fe5b5d80025f0ad049bca430e Align EnvPosix and EnvWindows.
    69061b464ab1da287da9b7ffec1ed911b754403b Disable exceptions and RTTI in CMake configuration.
    107a75b62c19cce901ce10619b63c4b7acc9a0be cache Saver in State object
    76ca1162768e5c89f1a49946a1f286c702ae27ae fix bug(uninitialized options pointer in State)
    f668239bb262609146496b854e1ec3cea9cd1a83 remove TODO in Version::ForEachOverlapping
    177cd08629883c409f7a01f90f7084bc5518f1ef format
    8fa7a937ee8f38d8869357b0f27f120c5c58f4c9 fix bug
    6a90bb91ee72642241fdbeefa673f88370c7b245 use ForEachOverlapping to impl Get
    4cb80b7ddce6ff6089b15d8cfebf746fc1572477 Merge pull request #386 from ivanabc:master
    72a38ff7f206b3924ac009a12a1838d6a0bdab03 Replace "> >" with ">>"
    863f185970eff21e826e5fe1164a6215a515c23b unsigned char -> uint8_t
    a3b71c1ff65e30ced00e85ebbca9ae5786af6626 Use GCC 9 on Travis CI
    ae49533210e96bdee9c9479a7fa547f375a39c8b Add explicit typecasts to avoid compiler warning.
    63d5315e1c224e52da8ec68d118c5b73ba2a63fc Merge branch 'master' into master
    c00e177f3613068eda4bff4abfbd3bd4165a86e8 Guard DBImpl::versions_ by mutex_.
    1d0b101165ddd34f26cc5c62b76f2a2e0d622483 Converted two for-loops to while-loops.
    28e6d238be73e743c963fc0a26395b783a7565e2 Switch to using C++ 11 override specifier.
    85cd40d108d8f8d91f58fd263c0f8428d11c34d5 Added unit test for InternalKey::DecodeFrom with empty string.
    1aae5c9f29ea43ceca745efae012c4aa731e9374 Merge pull request #411 from proller:assert1
    b7b86baec9ce47569affc5db54a20a6cc520e0f0 Using std::ostringstream in key DebugString.
    3e6c000e18519cb22e0a44d0dea45b34daee4ee1 Merge pull request #457 from jellor:patch-2
    1d94fe2f4d1dfdf1a6312bf4b36efcbe0c1bf576 Merge branch 'master' into patch-2
    27dc99fb2642cadc87c9aaec82c54a2c725ee0d6 Fix EnvPosix tests on Travis CI.
    9521545b062841409cf66eff0655feff09d9fd82 Formatting changes for prior O_CLOEXEC fix.
    900f7d37eb3224059dd37afc6614d3158ddaeb8d Merge pull request #624 from adam-azarchs:master
    a7528a5d2bd29126b60a277b528ed606b67c1771 Clean up util/coding.{h,cc}.
    142035edd4b1ab431c0ecbd547d4a77f1eca0667 Initialize Stats::start_ before first use in Stats::Start().
    e22b1cec6e1e0e2dec4c93b658acbfc56fb692c0 Merge pull request #365 from allangj:c-strict-prototypes
    cd1ec032cd276409ba403cab4d0b2548dd26b890 Add argument definition for void c functions.
    4bd052d7e8b0469b2b87664388e2a99cb212ecdb Consolidate benchmark code to benchmarks/.
    506b1722ef1a58d87325575d9bbcd3c8869381c7 Convert missed virtual -> override in db_test.cc.
    24424a1ef2c284f4ec30544a3458023362cbeacd Style cleanup.
    9a56c49ed415df1b72ba1c84c8e7ed00de497f68 Merge pull request #679 from smartxworks:optimize-readseq
    abf441b657c7e75091e2bd59449df6849358b812 Merge pull request #278 from wankai:master
    78b39d68c15ba020c0d60a3906fb66dbf1697595 Bump the version number from 1.21 to 1.22.
    9bd23c767601a2420478eec158927882b879bada Correct class/structure declaration order.
    c784d63b931d07895833fb80185b10d44ad63cce Moved port/README to port/README.md.
    297e66afc1dda3f3d7a7cc2022030164c302cb7a Format all files IAW the Google C++ Style Guide.
    3724030179716fd8d95cf79339884c49afade8f9 Update Travis CI configuration.
    d3d1c8a0f40a7eaa12a5bb702fa01786b7c3a646 don't check current key in DBIter::Next()
    3dc9202f78a3eb30ee8c0267e4e4be2e3f986e45 [leveldb] Specifically export the WriteBatch::Handler inner class for Windows link
    2ccb45c33aecd8b15000c0c622f45eb119b6b478 Check for possibly invalid offset in test.
    7b1174519044339f07a023dc445b0d36425bd6db Changed Windows specific highlighting from bash to cmd.
    2f008ac19ec783e4d0ba2161320241c99e9897e1 Initialize class members to default values in constructors.
    ffabb1ae86cc4eb4516a7c0824c878c3b2d19e5d Merge pull request #665 from cheng-chang:coding
    7da571cf2b954a107fa060698bfbfbba8e8318f8 Merge pull request #669 from pavel-pimenov:fix-readme-windows-mkdir
    df4a323aafbf65996fec23de8b2dbb9d7e27ae11 Merge pull request #472 from zhoudayang:patch-1
    5a2a472741f36ecf5b994439da5a64c6ab90c47f Fixed missing std namespaces and make_unique.
    08e771901f454ac32643bd8e8cb2bcfa08026c0c Simplify issue320_test.
    65e86f75ea30e44bc65327f92a16328684269acb Fix formatting of recent snapshot compaction fix.
    7711e76766231bf93e0487c4530b2655e8c4c0b1 Merge pull request #339 from richcole-at-amazon:master
    71ed7c401ec1b1e38d6f7cb9eb2fcff93c24d1f1 Fixed typo in comment in version_set.h.
    09fa8868dbe0cb2701f0560c59ebb63cc17f1271 Align version/soversion CMake setup closer with other repositories.
    20fb601aa9f68ff0aa147df22524b7d01758552b Fix snapshot compaction bug
    37300aa54b8256dd2edfd504942eb2bd20823647 Restore soname versioning with CMake build
    952be04df6edb936b8f7d0f652861100a7f61e97 Fix mkdir (windows)
    56178ddaf4d3ba6c8d1cfb218610b1be3f5aa710 Update the version to 1.21 in preparation for a new release.
    35619d248d909b197f68226c7d0a9ff947b82e8a Project import generated by Copybara.
    416344de2fdffb3f17c565b984885d0122bfa1e9 leveldb: Register in copybara whitelist.
    da94ac67e91679842a56a876f0b19b429d72de25 leveldb: Minor cleanup in ports.
    bd24b963060861518c6648925f9708178562c992 leveldb: Silence unused argument warnings in MSVC.
    6188a54ce95b47cc6bd398d7f2eb45d061857e45 leveldb: Add tests for empty keys and values.
    cf1b5f473259e46c667f3fb5a28bcd884ee3a102 Remove unnecessary bit operation.
    7035af5fc36657447054617759854a726d31dbe0 Two small fixes for the Windows implementation (#661)
    6571279d6de21fe33caa31b2ea4170d34b15b10e fix a typo in the comment of skiplist_test.cc (#664)
    15e227896621d01ebad4c5d4b3cc82a7a9b5b30b Use override consistently in leveldb::test::ErrorEnv.
    ea49b27d062c4bc998616cef7944f7f9088a327d Switch corruption_test to use InMemEnv.
    ce399ac28af7023b1aff0ede4986cb6d89b3c0b5 Always copy bytes to scratch buffer when reading w/MemEnv.
    201f77d137f30ea46e789a2ad60e9119b6f990fc Inline defaults in options.
    9ce30510d482f5b2fa2965201453f0fc914f700c Deleted dangling reference to deleted atomic_pointer.h.
    7d8e41e49b8fddda66a2c5f0a6a47f1a916e8d26 leveldb: Replace AtomicPointer with std::atomic.
    dd906262fd364c08a652dfa914f9995f6b7608a9 Make InMemoryEnv more consistent with filesystem based Env's.
    cf1d1ab255de2a741695aec53d83e4f808f9e819 leveldb: Remove unused file port/win/stdint.h.
    a20508dc6a18a34e05a6fc476a8d587fa9bb6608 Fix typo (#565)
    04470825ac96cab0d9d16e4ed410349d082fbf82 Add AppVeyor (Windows CI) badge to README.
    ed76289b259d42d0a57c147e791e2c235ed28805 Align windows_logger with posix_logger.
    808e59ec6a160244960cda64b393968ffbdae72c Improve CI configuration.
    c69d33b0ec3dad2a8063ad66da9d51a1d6309f4e Added native support for Windows.
    75fceae7003e217e16b04433831da7528ae56881 Add O_CLOEXEC to open calls.
    fe4494804f5e3a2e25485d32aeb0eb7d2f25732e leveldb: Make WriteBatch::ApproximateSize() const.
    296de8d5b8e4e57bd1e46c981114dfbe58a8c4fa leveldb: Fix PosixWritableFile::Sync() on Apple systems.
    b70493ca8586285b49e9888e2b528f71806bdc6e Fix fdatasync() feature detection in opensource build.
    af7abf06ea061222c2c34d98e1995c5a901f374f Add back space to POSIX Logger.
    58d70545af9ec7f30821f973b604f8e2a2f9ebdb Update Travis CI configuration.
    1cb384088184be9840bd59b4040503a9fa9aee66 Clean up env_posix.cc.
    a7dc502e9f11c2e5c911ba45b999676c43eaa51f Rework once initialization in env_posix.cc.
    c43565dd398b2233db8eb49ba05234d62fb42e03 C++11 cleanup for util/mutexlock.h.
    0145a94ab6bec48e596df499e8f6103e138a74ab Update .gitignore.
    73d5834eceee8efa9a8ccfec77dc096a9e8ba18a Rework threading in env_posix.cc.
    05709fb43eea34936c9f535edcb74d5e91a0b495 Remove InitOnce from the port API.
    bb88f25115d20a6d73dfb6b16cc298db2f66948b Clean up PosixWritableFile in env_posix.cc.
    7b945f200339aa47c24788d3ee9910c09c513843 Clean up posix_logger.h.
    89af27bde59fbbb3025653812b45fec10a655cb7 Remove ssize_t from code that is not POSIX-specific.
    03064cbbb2c00c3e6e41a78e8111d14a020f7d6f Simplify Limiter in env_posix.cc.
    9b44da73d9b1d839c437e3fdaaa14ea08260dce4 Clarify comments for leveldb::Env file reading methods.
    0ef2310f67f0c0b4ba3e6ad86d8138440af30d67 Remove GCC on OSX from the Travis CI matrix.
    16a2b8bb3af5b1f54676256e55a5d3f0ec02da42 Expose WriteBatch::Append in the C API.
    f7b0e1d901da26ac5ce6ad7f0a9806ce1440197e Expose WriteBatch::Append().
    6caf73ad9dae0ee91873bcb39554537b85163770 Clean up Iterator.
    6a6bdafcf10f5d4bef1ca52697c38d10c28b1a8b Corrected typo in docs: "cache" to "block_cache".
    18683981505dc374ce29211c80a9552f8f2f4571 Clean up SnapshotImpl.
    e7840de9f3db1a5eddedfecbbbc1ff72a4c2631a Fix documentation for log file growth.
    bc23e00f955eadb9e26f8ce07c1c664e7b985ff0 Update default log file size in doc.
    4de9594f6fbfd69043239a5705b5f32065f02d34 Add move constructor to Status.
    d177a0263cce4344d05188521ad53459c369b940 Replace port_posix with port_stdcxx.
    14cce848e7b8a040a8f457d5a796722a55e19597 Fix sign mismatch warnings in GCC.
    8046a51b21114d3575421bfc78b1d98b1678720a Add forgotten <limits> header to util/logging.cc.
    a0008deb679480fd30e845d7e52421af72160c2c Reimplement ConsumeDecimalNumber.
    1f7dd5d5f6822f2b0b9f9e4c7d87d4535c122c0e Add tests for ConsumeDecimalNumber.
    1cc8b10b8232e174d5bd1313959825727e03faa7 Document the building process.
    09217fd0677a4fd9713c7a4d774c494a7d3c1f15 Replace NULL with nullptr in C++ files.
    6a3b915166fce75aaf9ac209114a3ad9caa34171 Remove PLATFORM_IS_LITTLE_ENDIAN from port/posix.h.
    260655b4c294991fe03bf6ab8b6d722ccfc41d32 Define LEVELDB_HAS_PORT_CONFIG_H for old compilers.
    6fa45666703add49f77652b2eadd874d49aedaf6 Rename CMake project / targets from Leveldb to leveldb.
    0db30413a4cfa8c980e675ba5cb96717d688af92 leveldb: Add more thread safety annotations.
    04f39105c5a418905da8b7657ca244d672c99d3b Take <atomic> for granted in port/atomic_pointer.h.
    74f032ff6f2465160366d865b1bb89a45dc2046b leveldb: Require C++11.
    8e75db8623703cdc25ec3cd06f82129296672489 Remove build configuration for make.
    df9a841a4fc9a04c7713542d75f50e749fb64b7b Add export.h to CMakeLists.txt
    50fbc87e8c62a816d6afd4740e0652a13ac6dc3e Replace SIZE_MAX with std::numeric_limits.
    739c25100e46576cdcdfff2d6f43f9f7008103c7 Add CMake build support.
    0fa5a4f7b1ad9dc16b705bcad1f3ca913f187325 Extend thread safety annotations.
    8143c12f3fc483b1ba61cdce11f9c1faf6d01bea Fix includes in util/testharness.h.
    aece2068d7375f987685b8b145288c5557f9ce50 Remove extern from function declarations.
    ddab751002588fe58955357d68d12b062e038d0d Add tests for {Old}InfoLogFileName().
    7fd7c0072159abbca2660d91fc0667d5c17c4d16 Remove unused function ExtractValueType.
    594cc987af2e0af6417c4ac2b947ee8cdad59e5e Bypass OSMemoryBarrier() warning on Mac.
    49f35d3fc940a1e2d599d6ee3306eeb31a205e4b leveldb: Update Travis CI configuration for open source build.
    623d014a54f8cf9b74ad6aaba9181ca1e65c43a1 Expose Env::GetTempDirectory() for use in C test.
    8c8024ea33d8efc8c415597fb7fa1745002961d6 Switch HAVE_ library detection macros to 0/1.
    41172a24016bc29fc795ed504737392587f54e3d Enable thread safety annotations in open source version.
    47cb9e2a211e1d7157078ba7bab536beb29e56dc Add leveldb_options_set_max_file_size to the C API.
    b5d4a22e64c7a6615b412f464026c808b58b1d34 Fixed style guide link in CONTRIBUTING.md
    3da4d8b9899257386aeb5ffa345a6477c62ff7bf Deleted unused assignments in Reader.
    0509414f858ae7c7225e29f3659a709afb324355 leveldb::DestroyDB will now delete empty directories.
    23162ca1c6d891a9c5fe0e0fab1193cd54ed1b4f Fix typo (forgotten reference operator) in test.
    5c39524f3639e6bf6ab49215152d24273e662986 Replace SSE-optimized CRC32C in POSIX port with external library.
    ca216e493f32278f50a823811ab95f64cf0f839b leveldb: Rename SNAPPY to HAVE_SNAPPY.
    25767d066ca995c055f04b78a31a6e518087e667 leveldb: Remove *_unlocked feature detection from POSIX port.
    4a7e7f50dcf661cfffe71737650b0fb18e195d18 Add LEVELDB_EXPORT macro to export public symbols.
    542590d2a8eee3838f40b01405baa6d2f6f8c700 leveldb: Include <algorithm> in util/env_test.cc.
    8ae7998aabae4f208d77afcb930dafabade1b28d Fix FD leak in POSIX Env.
    d9a9e02edf2b8187aa481416b36c49710026ab37 leveldb: Add tests for CL 170769101.
    4447f9caced2bd09585c90f1b203c3aa8f4bbc40 Remove handling for unused LRUHandle representation special case.
    2372ac574fdeb1235e70cdd86a2681d1ce05cf65 Fix file writing bug in CL 170738066.
    1c75e88055e06da2939f9f4bd294625b76792815 Fix use of uninitialized value in LRUHandle.
    7e12c00ecf1bb725e212618e7026e4d34d6cd3bb Fix issue 474: a race between the f*_unlocked() STDIO calls in env_posix.cc and concurrent application calls to fflush(NULL).
    bcd9a8ea4a8aad23a3e101a23c61615bab2a093f Use portable CRC32C from google/crc32c.
    ea0a7586b8615fd39c6b8f5a8a21a1f242129c2f Remove confusing and unnecessary if.
    141e7671359d5e6c65ff70460774b53b94371df1 Simplify Table::Open() flow and remove a delete call.
    09a3c8e7417547829b94bcdaa62cdf9e896f29a9 Switched variable type from int to uint64_t in ConsumeDecimalNumber.
    2964b803b857932ff7499d7bebb61dc5514dab7c leveldb: Fix alignment code in SSE4.2-optimized CRC32C.
    02f43c0fcde39823830493503e8a3f72fed43d24 Remove dead code.
    0b402e96a76b19cd98e82402de636449a2613228 Use __APPLE__ instead of OS_MACOS. The former is compiler-provided.
    8415f00eeedd96934d3578572d3802900e61a556 leveldb: Report missing CURRENT manifest file as database corruption.
    69e2bd224b7f11e021527cb95bab18f1ee6e1b3b LevelDB: Add WriteBatch::ApproximateSize().
    471f0b84ec3420c7565511eb6e2fee8e0a0550e8 fix comment
    5b817400a0a5afe3badbb8859706a571882ababc fix comment
    7d060117fa0d5cab7cb15b0cf127533bea9ffbc7 broken db: fix assertion in leveldb::InternalKey::Encode, mark base as corrupt
    2883fcd849ca7b479d8a2f4fc929f0b6c7b9e372 set const property
    e5f0a51fa44115fb083c1e71d5ddcd07a7aba719 reduce lock's range in DeleteObsoleteFiles
    dd598676cd655dc2a2aaef47715ce18175d4a550 block_builder header file dependency fixed
    REVERT: f545dfabff4c2e9836efed094dba99a34fbc6b88 Merge #18: Use utf-8 to decode filename
    REVERT: f8e797a058b7a3993314e985dfdff8124214ba99 Use utf-8 to decode filename
    REVERT: 2fc114812a04e6b88852fa37eedc556a464241f7 Merge #14: Fixes to allow building with msvc.
    REVERT: 524b7e36a8e3bce6fcbcd1b5df09024283f325ba Merge #19: Increase maximum read-only mmap()s used from 1000 to 4096 on 64-bit systems
    REVERT: 4874cb8d3e1dc7b9026b9faf51b9282c91f8ef40 Increase maximum number of read-only mmap()s used from 1000 to 4096 on 64 bit systems.
    REVERT: 64052c76c567cff3dad32d1db0ef969d97b5882f Merge #15: Add filename to corruption errors
    REVERT: 135ed0fb4e5d6440b174c4b80c147e915dd58969 Add filename to corruption errors
    REVERT: d6eab93138884ee6c466fad5dadf2a1bfeb7cffd Fixes to allow building with msvc.
    REVERT: c521b3ac654cfbe009c575eacf7e5a6e189bb5bb Merge #11: fixup define checks. Cleans up some oopses from #5.
    REVERT: 8b1cd3753b184341e837b30383832645135d3d73 fixup define checks. Cleans up some oopses from #5.
    REVERT: 6b1508d6d58caabf76cec2688b3428c9070b7bc9 Merge #6: Fixes typo
    REVERT: fceb805426c66c8b79e2d75b83b4a35c57ad3a6e Merge #10: Clean up compile-time warnings (gcc 7.1)
    REVERT: 0ec2a343f3be66ef6e25f9b9badc0256ac0911b7 Clean up compile-time warnings (gcc 7.1)
    REVERT: d4c268a3571a66b3712ad24dfaf4b9f9671bcdf2 Merge #5: Move helper functions out of sse4.2 object
    REVERT: 8d4eb0847041a26377dc99b1c4fb5c22d4841d5e Add HasAcceleratedCRC32C to port_win.h
    REVERT: 77cfbfd250a690978a3b81d364054039467ed549 crc32: move helper functions out of port_posix_sse.cc
    REVERT: 4c1e9e01688864a32217e541102fa8d2df9a3d59 silence compiler warnings about uninitialized variables
    REVERT: 4953164851d1bc2fc653f60a98df5aa5c1dfcebd Merge #2: Prefer std::atomic over MemoryBarrier
    REVERT: 2953978ef8cd8f0babcac86a52f5c688a5ad8fa8 Fixes typo
    REVERT: f134284a1ce6e8e3ccc375a0a44300d9a87c51ab Merge #1: Merge upstream LevelDB 1.20
    REVERT: 196962ff01c39b4705d8117df5c3f8c205349950 Add AcceleratedCRC32C to port_win.h
    REVERT: ba8a445fdaa7cf3cb888a151e055330483b946f6 Prefer std::atomic over MemoryBarrier
    REVERT: 1bdf1c34c5d903e466673a15103124568d995db4 Merge upstream LevelDB v1.20
    REVERT: d31721eb0a115ac55506bb6735034bf915adc914 Merge #17: Fixed file sharing errors
    REVERT: fecd449021504dc647c1a1226d72ab0d5efb84ad Fixed file sharing error in Win32Env::GetFileSize(), Win32SequentialFile::_Init(), Win32RandomAccessFile::_Init() Fixed error checking in Win32SequentialFile::_Init()
    REVERT: 5b7510f1b79d9af1c5fe272a4587517a2579d3b7 Merge #14: Merge upstream LevelDB 1.19
    REVERT: 0d969fd5708c9fd559d63be28664e1e840beb8ca Merge #16: [LevelDB] Do no crash if filesystem can't fsync
    REVERT: c8c029b5b5793d3c9afef34afa53d10a910adf4e [LevelDB] Do no crash if filesystem can't fsync
    REVERT: a31c8aa408d5594830f7cb20ead1ef1dff51b79e Add NewAppendableFile for win32 environment
    REVERT: d40bc3fa5aaa5438d4d8f55ee83e6b3cd161ce02 Merge #13: Typo
    REVERT: ebbd772d33d8596e5765a4d1251308d732d61355 Typo
    REVERT: 1913d718ef8b07288229a75553862fcb343bf3ab Merge upstream LevelDB 1.19
    REVERT: 20ca81f08fb7fa108923a091668e447dcf5c6b9d Merge pull request #9
    REVERT: 7aa105e1a34e6e52b1e0de16d9d659a2af26fa0a leveldb: Win32WritableFile without memory mapping
    REVERT: 7d41e6f89ff04ce9e6a742932924796f69c6e23d Merge upstream LevelDB 1.18
    REVERT: 42dcc7edfc98c50038e4604fa630c626db17bf42 Merge upstream LevelDB 1.17.
    REVERT: e991315d7fe4ca84a98902578106cbffa3dcccfd Merge upstream LevelDB 1.15.
    REVERT: 02ac9f170b1c47e2c613cd47b8d7da45743af575 Merge upstream LevelDB 1.14.
    REVERT: 936b4613ea4551992e6096b1e05eeefc09a20e3b Merge upstream LevelDB 1.13.
    REVERT: be1b0ff1fcd6ad820a7fd111ac671fb51cc68001 On Mac OS X fsync does not guarantee write to disk. Use fcntl F_FULLFSYNC instead.
    REVERT: a02ddf9b14d145e88185ee209ab8b01d8826663a Added GNU/kFreeBSD kernel name (TARGET_OS)
    REVERT: 848746862caf337254a8a3e3a6bd3fa355db4fc8 CondVar::SignalAll was broken, leading to deadlocks on Windows builds. http://code.google.com/p/leveldb/issues/detail?id=149
    REVERT: f6d84d1baf74a15ee8a0f73a81c647058bf816e9 Allow files to be opened for reading multiple times
    REVERT: cb8e3f7adfaa48e09fb7a467086d69e4b6f948bd Checking whether closing succeeds
    REVERT: d5317e8eda06d8dbbf04f08866c92323ccdbb43f Print actual Win32 error that occurred on file creation failure.
    REVERT: 907f3084998fa4ce96b7abc6d9b12c7aa7b81c8c Port leveldb to MinGW32
    REVERT: 9def2bfbf18dfbc0c3c95e90c91f043a6de3c1cb Mingw support for Windows LevelDB port
    REVERT: 0a7b0748c71e64fd920eed94c26d69bc9ae77870 Pre-Vista leveldb::port::InitOnce implementation
    REVERT: 31a2b09985842c833fbbd81e17f207c377217754 Native Windows LevelDB port
    REVERT: 058a0357cd9650b214a199f81669a07d3eb4a298 Remove Snappy support
    
    git-subtree-dir: src/leveldb
    git-subtree-split: f8ae182c1e5176d12e816fb2217ae33a5472fdd7
    66480821b3
  88. Update to leveldb upstream using subtree merge 20a6babfa9
  89. Squashed 'src/crc32c/' content from commit 224988680f7673cd7c769963d4035cb315aa3388
    git-subtree-dir: src/crc32c
    git-subtree-split: 224988680f7673cd7c769963d4035cb315aa3388
    2e1819311a
  90. Import crc32c using subtree merge as as 'src/crc32c' 3acaa13b15
  91. build: Update build system for new leveldb
    Upstream leveldb switched build systems, which means we need to define
    a few different values.
    24d02a9ac0
  92. doc: Add crc32c subtree to developer notes 7cf13a5134
  93. test: Add crc32c to subtree check linter 84ff1b2076
  94. test: Add crc32c exception to various linters and generation scripts 3a037d0067
  95. build: Add LCOV exception for crc32c 402252a808
  96. build: CRC32C build system integration 9ebdf04757
  97. build: MSVC changes for leveldb update be23949765
  98. build: Disable msvc warning 4722 for leveldb build
    This prevents AppVeyor from failing on a warning in leveldb's new
    Windows environment.
    8e68bb1dde
  99. test: Add ubsan surpression for crc32c 677fb8e923
  100. laanwj force-pushed on Jan 28, 2020
  101. laanwj added the label Needs gitian build on Jan 28, 2020
  102. DrahtBot commented at 1:21 pm on January 29, 2020: member

    Gitian builds

    File commit 2755b2b1092d0286022cf3cc3028e96f6bee2b34(master) commit 70e9122818c0e0ee51899e6724e53ab7f477feae(master and this pull)
    bitcoin-0.19.99-aarch64-linux-gnu-debug.tar.gz d9f76eed7292db66... 51c9e3dac3ac2230...
    bitcoin-0.19.99-aarch64-linux-gnu.tar.gz 991ceaaa306e7256... 0deea89e75f33afa...
    bitcoin-0.19.99-arm-linux-gnueabihf-debug.tar.gz 5e65de5db1d26366... 78071eb16ce18633...
    bitcoin-0.19.99-arm-linux-gnueabihf.tar.gz d6e7e70ded47ed40... 23bdb6d002082384...
    bitcoin-0.19.99-i686-pc-linux-gnu-debug.tar.gz 7291d221cf1c82ea... 9426090e6d3682a5...
    bitcoin-0.19.99-i686-pc-linux-gnu.tar.gz 65996e392047c324... 6bcc429f3ec6243a...
    bitcoin-0.19.99-osx-unsigned.dmg 626810fe317f861f... f3f5336ccb302e72...
    bitcoin-0.19.99-osx64.tar.gz d1c4da450e1c21ca... c3bd1cb9e3596649...
    bitcoin-0.19.99-riscv64-linux-gnu-debug.tar.gz fa07ad9df3873e01... 5fff2b53851da121...
    bitcoin-0.19.99-riscv64-linux-gnu.tar.gz bdc87d12866745c7... 2989fc88dec60d75...
    bitcoin-0.19.99-win64-debug.zip 04bf9d8348047394... c41c4ce97cf469cc...
    bitcoin-0.19.99-win64-setup-unsigned.exe 3a3d9f777a4d6f7b... bc1baac4046e331f...
    bitcoin-0.19.99-win64.zip 4affa9e22017fd56... 41f613088d01bfea...
    bitcoin-0.19.99-x86_64-linux-gnu-debug.tar.gz 9708db2be1a83810... c21c54b15ba00c80...
    bitcoin-0.19.99-x86_64-linux-gnu.tar.gz dbd913431b4fffeb... 376b037411c31f84...
    bitcoin-0.19.99.tar.gz 7633410fae67c4c9... 6c8c461153e99da8...
    bitcoin-core-linux-0.20-res.yml 0febf2425f4cb930... ae1d42e19de922a1...
    bitcoin-core-osx-0.20-res.yml 8b15f8fa745c846b... 785b5e57247c7d50...
    bitcoin-core-win-0.20-res.yml e2316850d6d3f136... 08bced12b63a5c3c...
    linux-build.log c9fa85b07203468d... f0542e43e86df3b1...
    osx-build.log 7eaf304e994ca739... 949e3c318f9f07e0...
    win-build.log 702c8ee119486896... 93709dd7b58683cd...
    bitcoin-core-linux-0.20-res.yml.diff 0de97ee3c19cdc73...
    bitcoin-core-osx-0.20-res.yml.diff 2fd1f4c684b8a3be...
    bitcoin-core-win-0.20-res.yml.diff 92cb89695e6ac398...
    linux-build.log.diff 1eb20e0d62d4f442...
    osx-build.log.diff ed7976e73978e241...
    win-build.log.diff 4f4d26c60e5d428e...
  103. DrahtBot removed the label Needs gitian build on Jan 29, 2020
  104. laanwj commented at 1:04 pm on February 5, 2020: member
    Anything left to do here? If not, can this get some (re-)ACKs please?
  105. sipsorcery commented at 4:37 pm on February 5, 2020: member

    ACK 66480821b36c839ab7615cb9309850015bceadb0.

    No problems using a data directory of “₿_🏃” on Windows 10.

  106. sipa commented at 8:05 am on February 8, 2020: member
    ACK 677fb8e92380d4deb6a3753047c01f7cf7b5af91
  107. laanwj referenced this in commit 22d11187ee on Feb 10, 2020
  108. laanwj merged this on Feb 10, 2020
  109. laanwj closed this on Feb 10, 2020

  110. sidhujag referenced this in commit e7133fa7bc on Feb 18, 2020
  111. fanquake referenced this in commit ec4d27fa8b on May 11, 2020
  112. random-zebra referenced this in commit 21c467b1eb on Jul 31, 2020
  113. sidhujag referenced this in commit 933baeabf2 on Nov 10, 2020
  114. PastaPastaPasta referenced this in commit da33c9619c on Jul 15, 2021
  115. PastaPastaPasta referenced this in commit 72bc72136d on Oct 6, 2021
  116. PastaPastaPasta referenced this in commit ebe48e688c on Oct 6, 2021
  117. PastaPastaPasta referenced this in commit 5392f8ec22 on Oct 10, 2021
  118. PastaPastaPasta referenced this in commit de864fa149 on Oct 12, 2021
  119. PastaPastaPasta referenced this in commit 9eb4e09ee4 on Dec 12, 2021
  120. PastaPastaPasta referenced this in commit 6204c0288d on Dec 12, 2021
  121. DrahtBot locked this on Feb 15, 2022

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2024-07-03 10:13 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me