Giter Club home page Giter Club logo

rocksdb's Introduction

rocksdb

A low-level Node.js RocksDB binding. An abstract-leveldown compliant store.

level badge npm Node version Test Coverage Standard Common Changelog Donate

Table of Contents

Click to expand

Introduction

This module closely follows leveldown and implements the same API. The difference is that leveldown is a binding for LevelDB while rocksdb is a binding for RocksDB, Facebook's fork of LevelDB.

It is strongly recommended that you use levelup in preference to rocksdb unless you have measurable performance reasons to do so. levelup is optimized for usability and safety. Although we are working to improve the safety of the rocksdb interface it is still easy to crash your Node process if you don't do things in just the right way.

If you are upgrading: please see UPGRADING.md.

Supported Platforms

We aim to support at least Active LTS and Current Node.js releases, Electron 5.0.0, as well as any future Node.js and Electron releases thanks to N-API. The minimum node version for rocksdb is 10.12.0.

The rocksdb npm package ships with prebuilt binaries for popular 64-bit platforms and is known to work on:

  • Linux (including ARM platforms such as Raspberry Pi and Kindle)
  • Mac OS
  • Solaris (SmartOS & Nodejitsu)
  • FreeBSD
  • Windows

When installing rocksdb, node-gyp-build will check if a compatible binary exists and fallback to a compile step if it doesn't. In that case you'll need a valid node-gyp installation.

If you don't want to use the prebuilt binary for the platform you are installing on, specify the --build-from-source flag when you install. If you are working on rocksdb itself and want to re-compile the C++ code it's enough to do npm install.

API

Please refer to leveldown for API documentation. The db.open(options, callback) method of rocksdb has a few additional options:

  • readOnly (boolean, default false): open database in read-only mode.
  • infoLogLevel (string, default null): verbosity of info log. One of 'debug', 'info', 'warn', 'error', 'fatal', 'header' or null (disable).

Contributing

Level/rocksdb is an OPEN Open Source Project. This means that:

Individuals making significant and valuable contributions are given commit-access to the project to contribute as they see fit. This project is more like an open wiki than a standard guarded open source project.

See the Contribution Guide for more details.

Git Submodules

This project uses Git Submodules. This means that you should clone it recursively if you're planning on working on it:

$ git clone --recurse-submodules https://github.com/Level/rocksdb.git

Alternatively, you can initialize submodules after cloning:

$ git submodule update --init --recursive

Publishing

  1. Increment the version: npm version ..
  2. Push to GitHub: git push --follow-tags
  3. Wait for CI to complete
  4. Download prebuilds into ./prebuilds: npm run download-prebuilds
  5. Optionally verify loading a prebuild: npm run test-prebuild
  6. Optionally verify which files npm will include: canadian-pub
  7. Finally: npm publish

Donate

Support us with a monthly donation on Open Collective and help us continue our work.

License

MIT

rocksdb builds on the excellent work of the LevelDB and Snappy teams from Google and additional contributors to the LevelDB fork by Facebook. LevelDB and Snappy are both issued under the New BSD License. A large portion of rocksdb Windows support comes from the Windows LevelDB port (archived) by Krzysztof Kowalczyk (@kjk). If you're using rocksdb on Windows, you should give him your thanks!

rocksdb's People

Contributors

chjj avatar cjihrig avatar dependabot[bot] avatar dominictarr avatar duralog avatar filoozom avatar ggreer avatar greenkeeper[bot] avatar greenkeeperio-bot avatar heavyk avatar juliangruber avatar kesla avatar mafintosh avatar max-mapper avatar mcollina avatar meirionhughes avatar michaelnisi avatar mlix8hoblc avatar mscdex avatar nazgolze avatar nicknaso avatar obastemur avatar peakji avatar ralphtheninja avatar raynos avatar rvagg avatar sandfox avatar sharvil avatar thlorenz avatar vweevers avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rocksdb's Issues

An in-range update of tap-spec is breaking the build 🚨

Version 4.1.2 of tap-spec was just published.

Branch Build failing 🚨
Dependency tap-spec
Current Version 4.1.1
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

tap-spec is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

Status Details
  • continuous-integration/travis-ci/push The Travis CI build could not complete due to an error Details
  • continuous-integration/appveyor/branch AppVeyor build succeeded Details

Commits

The new version differs by 6 commits.

  • 0b3f873 Release 4.1.2
  • 810d5ae Merge pull request #60 from maxlutay/check-asserts-length
  • 484f694 also check for asserts.length
  • 90cb1b8 Merge pull request #51 from vassiliy/feat/mocha_pending_appearance
  • 9160ea1 Format pending specs the same way as Mocha
  • 8ce610d Create LICENSE

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

An in-range update of prebuild-install is breaking the build 🚨

Version 2.5.1 of prebuild-install was just published.

Branch Build failing 🚨
Dependency prebuild-install
Current Version 2.5.0
Type dependency

This version is covered by your current version range and after updating it in your project the build failed.

prebuild-install is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.

Status Details
  • continuous-integration/travis-ci/push The Travis CI build passed Details
  • continuous-integration/appveyor/branch AppVeyor build failed Details

Commits

The new version differs by 20 commits.

  • 0018717 2.5.1
  • a65b3ba Merge pull request #66 from zkochan/master
  • 12c6c32 fix: download prebuilt binaries when installing with pnpm
  • db38ad8 Merge pull request #64 from ralphtheninja/master
  • cb38be4 use bundled npm
  • 4279ad2 Merge pull request #63 from saboya/master
  • de44775 :fire: remove node 5 and 7 from travis and appveyor
  • 453ea65 Bumping node-abi version for node-webkit runtime support.
  • 2f2cae1 Merge pull request #61 from prebuild/appveyor
  • f3c998e add badge
  • 2b35373 adds appveyor config
  • 59917dd Merge pull request #60 from ralphtheninja/master
  • 890d409 add osx to travis
  • 0f3c4b7 replace xtend with object.assign(...) (#59)
  • cd60f37 Merge pull request #56 from prebuild/dependencies

There are 20 commits in total.

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

Action required: Greenkeeper could not be activated 🚨

🚨 You need to enable Continuous Integration on all branches of this repository. 🚨

To enable Greenkeeper, you need to make sure that a commit status is reported on all branches. This is required by Greenkeeper because we are using your CI build statuses to figure out when to notify you about breaking changes.

Since we did not receive a CI status on the greenkeeper/initial branch, we assume that you still need to configure it.

If you have already set up a CI for this repository, you might need to check your configuration. Make sure it will run on all new branches. If you don’t want it to run on every branch, you can whitelist branches starting with greenkeeper/.

We recommend using Travis CI, but Greenkeeper will work with every other CI service as well.

Once you have installed CI on this repository, you’ll need to re-trigger Greenkeeper’s initial Pull Request. To do this, please delete the greenkeeper/initial branch in this repository, and then remove and re-add this repository to the Greenkeeper integration’s white list on Github. You'll find this list on your repo or organiszation’s settings page, under Installed GitHub Apps.

Segmentation fault on Node.js 12.7.0

Doing anything with rocksdb on Node.js 12.7.0 results in following error:

Segmentation fault (core dumped)

On Linux this is what i see in kernel logs:

[ 8962.635016] node[32694]: segfault at 0 ip 00007fba46bc430b sp 00007fba46aa0e20 error 4 in node.napi.glibc.node[7fba46aa2000+348000]
[ 8962.635020] Code: 8b 57 50 48 8b 70 08 48 8b 47 48 48 89 55 c8 48 8b 57 60 48 89 45 c0 48 8b 47 58 48 89 55 d8 48 8d 57 40 4c 89 e7 48 89 45 d0 <48> 8b 06 ff 50 30 48 8d 43 28 49 39 c4 74 30 8b 45 b0 48 8b 7b 30

Tried to rebuild, but doesn't help, still the same error. Looks like modifications are needed to the library itself.

I'm on Ubuntu 19.10 if that makes any difference (yes, 19.10, rolling release).

An in-range update of delayed is breaking the build 🚨

The devDependency delayed was updated from 1.0.1 to 1.0.2.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

delayed is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

Status Details
  • continuous-integration/travis-ci/push: The Travis CI build is in progress (Details).
  • continuous-integration/appveyor/branch: AppVeyor build cancelled (Details).

Commits

The new version differs by 2 commits.

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

An in-range update of prebuild is breaking the build 🚨

Version 7.3.0 of prebuild was just published.

Branch Build failing 🚨
Dependency prebuild
Current Version 7.2.2
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

prebuild is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

Status Details
  • continuous-integration/travis-ci/push The Travis CI build passed Details
  • continuous-integration/appveyor/branch AppVeyor build failed Details

Commits

The new version differs by 23 commits.

  • 0d29a96 7.3.0
  • 29e5f2a Merge pull request #209 from ralphtheninja/master
  • 57942a6 add node-webkit to short description + add keyword
  • 2cee8c1 Merge pull request #208 from prebuild/appveyor
  • a9324ee fix weird node bug
  • 5f2cb1b remove EOL node versions and use bundled npm version
  • 40c5bdf add badge
  • 7e3ef20 adds appveyor config
  • d820ab5 Merge pull request #203 from saboya/node-webkit
  • ebd679b Updating to correct node-abi version.
  • b95fe57 Adding node-webkit info to the docs.
  • 3c5abcf Removing unnecessary checks in integration tests.
  • b7b4b00 Adding support for node-webkit using nw-gyp.
  • b0670b9 Merge pull request #202 from ralphtheninja/master
  • 25353ce only set CXX for linux

There are 23 commits in total.

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

An in-range update of tape is breaking the build 🚨

The devDependency tape was updated from 4.9.2 to 4.10.0.

🚨 View failing branch.

This version is covered by your current version range and after updating it in your project the build failed.

tape is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

Status Details
  • continuous-integration/appveyor/branch: Waiting for AppVeyor build to complete (Details).
  • continuous-integration/travis-ci/push: The Travis CI build failed (Details).

Commits

The new version differs by 60 commits.

  • 34b1832 v4.10.0
  • 6209882 Merge all orphaned tags: 'v1.1.2', 'v2.0.2', 'v2.1.1', 'v2.2.2', 'v2.3.3', 'v2.4.3', 'v2.5.1', 'v2.6.1', 'v2.7.3', 'v2.8.1', 'v2.9.1', 'v2.10.3', 'v2.11.1', 'v2.13.4', 'v2.14.0', 'v2.14.1', 'v3.6.1'
  • 82e7b26 [Deps] update glob
  • 9e3d25e [Dev Deps] update eslint, js-yaml
  • fd807f5 v1.1.2
  • eddbff5 v2.14.1
  • 6ce09d9 Minor test tweaks due to whitespace differences in v2 vs v4.
  • 71af8ba gitignore node_modules
  • 4c0d9e6 Merge pull request #268 from ljharb/throws_non_function_should_fail
  • d0a675f v3.6.1
  • d22b5fc Minor test tweaks due to output differences in v1 vs v4.
  • 8b3c1b7 Add missing concat-stream devDep
  • 3495543 gitignore node_modules
  • db81846 Merge pull request #268 from ljharb/throws_non_function_should_fail
  • 7ed6651 Minor test tweaks due to whitespace differences in v3 vs v4.

There are 60 commits in total.

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

Pass options to rocksdb?

Just testing this library and I noticed there are several Log.old.15036... files being generated.

this post says you can pass options to the c++ library, but don't know how you'd go about doing that with this library (no docs)

Is it possible to configure the number of old log files kept and/or disable logging entirely?

An in-range update of prebuild-install is breaking the build 🚨

Version 2.5.0 of prebuild-install was just published.

Branch Build failing 🚨
Dependency prebuild-install
Current Version 2.4.1
Type dependency

This version is covered by your current version range and after updating it in your project the build failed.

prebuild-install is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.

Status Details
  • continuous-integration/appveyor/branch AppVeyor build succeeded Details
  • continuous-integration/travis-ci/push The Travis CI build could not complete due to an error Details

Commits

The new version differs by 3 commits.

  • 63721a8 2.5.0
  • 80b330b Merge pull request #55 from lovell/detect-libc
  • 311d1ac Add detection for non-glibc libc on Linux

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

Use concurrent builds

As suggested by @lu4 in #143 (comment):

What I've also found that significant performance improvements are obtainable from using concurrent builds i.e. node-gyp -j 16 rebuild build option. So I suggest to look closer into your node-gyp-build child and check whether it is possible to use the above option for build perf improvement.

Compilation fails with "concurrent insert not supported" on FreeBSD 12

Hi

I try to run a project that uses RocksDB on FreeBSD 12.

I got this error when running npm install:

$ npm install [email protected]

> [email protected] install /usr/home/obyte/headless-obyte/node_modules/rocksdb
> prebuild-install || node-gyp rebuild

prebuild-install WARN install No prebuilt binaries found (target=10.16.0 runtime=node arch=x64 libc= platform=freebsd)
gmake: Entering directory '/usr/home/obyte/headless-obyte/node_modules/rocksdb/build'
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/auto_roll_logger.o
In file included from ../deps/leveldb/leveldb-rocksdb/db/auto_roll_logger.cc:6:
In file included from ../deps/leveldb/leveldb-rocksdb/db/auto_roll_logger.h:13:
In file included from ../deps/leveldb/leveldb-rocksdb/db/filename.h:19:
In file included from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/options.h:20:
In file included from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/advanced_options.h:13:
../deps/leveldb/leveldb-rocksdb/include/rocksdb/memtablerep.h:101:5: error: cannot use 'throw' with exceptions disabled
    throw std::runtime_error("concurrent insert not supported");
    ^
1 error generated.
gmake: *** [deps/leveldb/leveldb.target.mk:299: Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/auto_roll_logger.o] Error 1
gmake: Leaving directory '/usr/home/obyte/headless-obyte/node_modules/rocksdb/build'
gyp ERR! build error 
gyp ERR! stack Error: `gmake` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:262:23)
gyp ERR! stack     at ChildProcess.emit (events.js:198:13)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12)
gyp ERR! System FreeBSD 12.0-RELEASE
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/home/obyte/headless-obyte/node_modules/rocksdb
gyp ERR! node -v v10.16.0
gyp ERR! node-gyp -v v3.8.0

I tried with node8-8.16.0, node10-10.16.0, [email protected] and [email protected]. That always fails with same error.
Any idea how to fix?

rocksdb module failed to install

Can't install rocksdb module on

$ uname -a
Linux lonelySoul 4.19.0-kali5-amd64 #1 SMP Debian 4.19.37-2kali1 (2019-05-15) x86_64 GNU/Linux
$ node -v
v12.4.0
$ yarn -v
1.16.0

This is the error i get when i try to install rocksdb module via yarn

yarn add v1.16.0
[1/4] Resolving packages...
[2/4] Fetching packages...
info [email protected]: The platform "linux" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
[4/4] Building fresh packages...
error /home/devilfromir/Code/projects/libs/npm/@ts-e/nrocks/node_modules/rocksdb: Command failed.
Exit code: 1
Command: prebuild-install || node-gyp rebuild
Arguments: 
Directory: /home/devilfromir/Code/projects/libs/npm/@ts-e/nrocks/node_modules/rocksdb
Output:
prebuild-install WARN install No prebuilt binaries found (target=12.4.0 runtime=node arch=x64 libc= platform=linux)
gyp info it worked if it ends with ok
gyp info using [email protected]
gyp info using [email protected] | linux | x64
gyp info spawn /usr/bin/python2
gyp info spawn args [
gyp info spawn args   '/usr/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/home/devilfromir/Code/projects/libs/npm/@ts-e/nrocks/node_modules/rocksdb/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/usr/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/home/devilfromir/.node-gyp/12.4.0/include/node/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/home/devilfromir/.node-gyp/12.4.0',
gyp info spawn args   '-Dnode_gyp_dir=/usr/lib/node_modules/npm/node_modules/node-gyp',
gyp info spawn args   '-Dnode_lib_file=/home/devilfromir/.node-gyp/12.4.0/<(target_arch)/node.lib',
gyp info spawn args   '-Dmodule_root_dir=/home/devilfromir/Code/projects/libs/npm/@ts-e/nrocks/node_modules/rocksdb',
gyp info spawn args   '-Dnode_engine=v8',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.'
gyp info spawn args ]
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: Entering directory '/home/devilfromir/Code/projects/libs/npm/@ts-e/nrocks/node_modules/rocksdb/build'
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/auto_roll_logger.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/builder.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/c.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/column_family.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/compacted_db_impl.o
In file included from ../deps/leveldb/leveldb-rocksdb/table/get_context.h:12,
                 from ../deps/leveldb/leveldb-rocksdb/db/compacted_db_impl.cc:10:
../deps/leveldb/leveldb-rocksdb/table/block.h: In constructor ‘rocksdb::BlockReadAmpBitmap::BlockReadAmpBitmap(size_t, size_t, rocksdb::Statistics*)’:
../deps/leveldb/leveldb-rocksdb/table/block.h:68:53: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct std::atomic<unsigned int>’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess]
     memset(bitmap_, 0, bitmap_size * kBytesPersEntry);
                                                     ^
In file included from ../deps/leveldb/leveldb-rocksdb/db/db_impl.h:11,
                 from ../deps/leveldb/leveldb-rocksdb/db/compacted_db_impl.h:8,
                 from ../deps/leveldb/leveldb-rocksdb/db/compacted_db_impl.cc:7:
/usr/include/c++/8/atomic:684:12: note: ‘struct std::atomic<unsigned int>’ declared here
     struct atomic<unsigned int> : __atomic_base<unsigned int>
            ^~~~~~~~~~~~~~~~~~~~
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/compaction.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/compaction_iterator.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/compaction_job.o
In file included from ../deps/leveldb/leveldb-rocksdb/db/compaction_job.cc:46:
../deps/leveldb/leveldb-rocksdb/table/block.h: In constructor ‘rocksdb::BlockReadAmpBitmap::BlockReadAmpBitmap(size_t, size_t, rocksdb::Statistics*)’:
../deps/leveldb/leveldb-rocksdb/table/block.h:68:53: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct std::atomic<unsigned int>’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess]
     memset(bitmap_, 0, bitmap_size * kBytesPersEntry);
                                                     ^
In file included from ../deps/leveldb/leveldb-rocksdb/db/compaction_job.h:11,
                 from ../deps/leveldb/leveldb-rocksdb/db/compaction_job.cc:10:
/usr/include/c++/8/atomic:684:12: note: ‘struct std::atomic<unsigned int>’ declared here
     struct atomic<unsigned int> : __atomic_base<unsigned int>
            ^~~~~~~~~~~~~~~~~~~~
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/compaction_picker.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/convenience.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/range_del_aggregator.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/db_filesnapshot.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/dbformat.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/db_impl.o
In file included from ../deps/leveldb/leveldb-rocksdb/db/db_impl.cc:76:
../deps/leveldb/leveldb-rocksdb/table/block.h: In constructor ‘rocksdb::BlockReadAmpBitmap::BlockReadAmpBitmap(size_t, size_t, rocksdb::Statistics*)’:
../deps/leveldb/leveldb-rocksdb/table/block.h:68:53: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct std::atomic<unsigned int>’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess]
     memset(bitmap_, 0, bitmap_size * kBytesPersEntry);
                                                     ^
In file included from ../deps/leveldb/leveldb-rocksdb/db/db_impl.h:11,
                 from ../deps/leveldb/leveldb-rocksdb/db/db_impl.cc:9:
/usr/include/c++/8/atomic:684:12: note: ‘struct std::atomic<unsigned int>’ declared here
     struct atomic<unsigned int> : __atomic_base<unsigned int>
            ^~~~~~~~~~~~~~~~~~~~
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/db_impl_debug.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/db_impl_readonly.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/db_impl_experimental.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/db_info_dumper.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/db_iter.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/external_sst_file_ingestion_job.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/experimental.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/event_helpers.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/file_indexer.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/filename.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/flush_job.o
In file included from ../deps/leveldb/leveldb-rocksdb/db/flush_job.cc:39:
../deps/leveldb/leveldb-rocksdb/table/block.h: In constructor ‘rocksdb::BlockReadAmpBitmap::BlockReadAmpBitmap(size_t, size_t, rocksdb::Statistics*)’:
../deps/leveldb/leveldb-rocksdb/table/block.h:68:53: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct std::atomic<unsigned int>’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess]
     memset(bitmap_, 0, bitmap_size * kBytesPersEntry);
                                                     ^
In file included from ../deps/leveldb/leveldb-rocksdb/db/flush_job.h:11,
                 from ../deps/leveldb/leveldb-rocksdb/db/flush_job.cc:10:
/usr/include/c++/8/atomic:684:12: note: ‘struct std::atomic<unsigned int>’ declared here
     struct atomic<unsigned int> : __atomic_base<unsigned int>
            ^~~~~~~~~~~~~~~~~~~~
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/flush_scheduler.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/forward_iterator.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/internal_stats.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/log_reader.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/log_writer.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/managed_iterator.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/memtable_allocator.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/memtable.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/memtable_list.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/merge_helper.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/merge_operator.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/repair.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/snapshot_impl.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/table_cache.o
In file included from ../deps/leveldb/leveldb-rocksdb/table/get_context.h:12,
                 from ../deps/leveldb/leveldb-rocksdb/db/table_cache.cc:21:
../deps/leveldb/leveldb-rocksdb/table/block.h: In constructor ‘rocksdb::BlockReadAmpBitmap::BlockReadAmpBitmap(size_t, size_t, rocksdb::Statistics*)’:
../deps/leveldb/leveldb-rocksdb/table/block.h:68:53: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct std::atomic<unsigned int>’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess]
     memset(bitmap_, 0, bitmap_size * kBytesPersEntry);
                                                     ^
In file included from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/write_buffer_manager.h:15,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/options.h:26,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/db.h:22,
                 from ../deps/leveldb/leveldb-rocksdb/db/dbformat.h:15,
                 from ../deps/leveldb/leveldb-rocksdb/db/table_cache.h:17,
                 from ../deps/leveldb/leveldb-rocksdb/db/table_cache.cc:10:
/usr/include/c++/8/atomic:684:12: note: ‘struct std::atomic<unsigned int>’ declared here
     struct atomic<unsigned int> : __atomic_base<unsigned int>
            ^~~~~~~~~~~~~~~~~~~~
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/table_properties_collector.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/transaction_log_impl.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/version_builder.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/version_edit.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/version_set.o
In file included from ../deps/leveldb/leveldb-rocksdb/table/get_context.h:12,
                 from ../deps/leveldb/leveldb-rocksdb/db/version_set.cc:40:
../deps/leveldb/leveldb-rocksdb/table/block.h: In constructor ‘rocksdb::BlockReadAmpBitmap::BlockReadAmpBitmap(size_t, size_t, rocksdb::Statistics*)’:
../deps/leveldb/leveldb-rocksdb/table/block.h:68:53: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct std::atomic<unsigned int>’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess]
     memset(bitmap_, 0, bitmap_size * kBytesPersEntry);
                                                     ^
In file included from ../deps/leveldb/leveldb-rocksdb/db/version_set.h:21,
                 from ../deps/leveldb/leveldb-rocksdb/db/version_set.cc:10:
/usr/include/c++/8/atomic:684:12: note: ‘struct std::atomic<unsigned int>’ declared here
     struct atomic<unsigned int> : __atomic_base<unsigned int>
            ^~~~~~~~~~~~~~~~~~~~
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/wal_manager.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/write_batch.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/write_batch_base.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/write_controller.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/db/write_thread.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/memtable/hash_cuckoo_rep.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/memtable/hash_linklist_rep.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/memtable/hash_skiplist_rep.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/memtable/skiplistrep.o
In file included from ../deps/leveldb/leveldb-rocksdb/memtable/skiplistrep.cc:6:
../deps/leveldb/leveldb-rocksdb/db/inlineskiplist.h: In instantiation of ‘void rocksdb::InlineSkipList<Comparator>::Node::StashHeight(int) [with Comparator = const rocksdb::MemTableRep::KeyComparator&]’:
../deps/leveldb/leveldb-rocksdb/db/inlineskiplist.h:600:3:   required from ‘rocksdb::InlineSkipList<Comparator>::Node* rocksdb::InlineSkipList<Comparator>::AllocateNode(size_t, int) [with Comparator = const rocksdb::MemTableRep::KeyComparator&; size_t = long unsigned int]’
../deps/leveldb/leveldb-rocksdb/db/inlineskiplist.h:562:13:   required from ‘rocksdb::InlineSkipList<Comparator>::InlineSkipList(Comparator, rocksdb::Allocator*, int32_t, int32_t) [with Comparator = const rocksdb::MemTableRep::KeyComparator&; int32_t = int]’
../deps/leveldb/leveldb-rocksdb/memtable/skiplistrep.cc:25:50:   required from here
../deps/leveldb/leveldb-rocksdb/db/inlineskiplist.h:282:11: warning: ‘void* memcpy(void*, const void*, size_t)’ writing to an object of type ‘struct std::atomic<rocksdb::InlineSkipList<const rocksdb::MemTableRep::KeyComparator&>::Node*>’ with no trivial copy-assignment [-Wclass-memaccess]
     memcpy(&next_[0], &height, sizeof(int));
     ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../deps/leveldb/leveldb-rocksdb/db/inlineskiplist.h:48,
                 from ../deps/leveldb/leveldb-rocksdb/memtable/skiplistrep.cc:6:
/usr/include/c++/8/atomic:352:12: note: ‘struct std::atomic<rocksdb::InlineSkipList<const rocksdb::MemTableRep::KeyComparator&>::Node*>’ declared here
     struct atomic<_Tp*>
            ^~~~~~~~~~~~
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/memtable/vectorrep.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/port/stack_trace.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/adaptive_table_factory.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/block_based_filter_block.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/block_based_table_builder.o
In file included from ../deps/leveldb/leveldb-rocksdb/table/block_based_table_builder.cc:33:
../deps/leveldb/leveldb-rocksdb/table/block.h: In constructor ‘rocksdb::BlockReadAmpBitmap::BlockReadAmpBitmap(size_t, size_t, rocksdb::Statistics*)’:
../deps/leveldb/leveldb-rocksdb/table/block.h:68:53: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct std::atomic<unsigned int>’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess]
     memset(bitmap_, 0, bitmap_size * kBytesPersEntry);
                                                     ^
In file included from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/statistics.h:9,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/cache.h:29,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/table.h:23,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/flush_block_policy.h:9,
                 from ../deps/leveldb/leveldb-rocksdb/table/block_based_table_builder.h:17,
                 from ../deps/leveldb/leveldb-rocksdb/table/block_based_table_builder.cc:10:
/usr/include/c++/8/atomic:684:12: note: ‘struct std::atomic<unsigned int>’ declared here
     struct atomic<unsigned int> : __atomic_base<unsigned int>
            ^~~~~~~~~~~~~~~~~~~~
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/block_based_table_factory.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/block_based_table_reader.o
In file included from ../deps/leveldb/leveldb-rocksdb/table/block_based_table_reader.cc:30:
../deps/leveldb/leveldb-rocksdb/table/block.h: In constructor ‘rocksdb::BlockReadAmpBitmap::BlockReadAmpBitmap(size_t, size_t, rocksdb::Statistics*)’:
../deps/leveldb/leveldb-rocksdb/table/block.h:68:53: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct std::atomic<unsigned int>’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess]
     memset(bitmap_, 0, bitmap_size * kBytesPersEntry);
                                                     ^
In file included from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/write_buffer_manager.h:15,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/options.h:26,
                 from ../deps/leveldb/leveldb-rocksdb/table/block_based_table_reader.h:19,
                 from ../deps/leveldb/leveldb-rocksdb/table/block_based_table_reader.cc:9:
/usr/include/c++/8/atomic:684:12: note: ‘struct std::atomic<unsigned int>’ declared here
     struct atomic<unsigned int> : __atomic_base<unsigned int>
            ^~~~~~~~~~~~~~~~~~~~
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/block_builder.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/block.o
In file included from ../deps/leveldb/leveldb-rocksdb/table/block.cc:12:
../deps/leveldb/leveldb-rocksdb/table/block.h: In constructor ‘rocksdb::BlockReadAmpBitmap::BlockReadAmpBitmap(size_t, size_t, rocksdb::Statistics*)’:
../deps/leveldb/leveldb-rocksdb/table/block.h:68:53: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct std::atomic<unsigned int>’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess]
     memset(bitmap_, 0, bitmap_size * kBytesPersEntry);
                                                     ^
In file included from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/write_buffer_manager.h:15,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/options.h:26,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/db.h:22,
                 from ../deps/leveldb/leveldb-rocksdb/db/dbformat.h:15,
                 from ../deps/leveldb/leveldb-rocksdb/table/block.h:23,
                 from ../deps/leveldb/leveldb-rocksdb/table/block.cc:12:
/usr/include/c++/8/atomic:684:12: note: ‘struct std::atomic<unsigned int>’ declared here
     struct atomic<unsigned int> : __atomic_base<unsigned int>
            ^~~~~~~~~~~~~~~~~~~~
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/block_prefix_index.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/bloom_block.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/cuckoo_table_builder.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/cuckoo_table_factory.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/cuckoo_table_reader.o
In file included from ../deps/leveldb/leveldb-rocksdb/table/get_context.h:12,
                 from ../deps/leveldb/leveldb-rocksdb/table/cuckoo_table_reader.cc:23:
../deps/leveldb/leveldb-rocksdb/table/block.h: In constructor ‘rocksdb::BlockReadAmpBitmap::BlockReadAmpBitmap(size_t, size_t, rocksdb::Statistics*)’:
../deps/leveldb/leveldb-rocksdb/table/block.h:68:53: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct std::atomic<unsigned int>’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess]
     memset(bitmap_, 0, bitmap_size * kBytesPersEntry);
                                                     ^
In file included from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/write_buffer_manager.h:15,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/options.h:26,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/db.h:22,
                 from ../deps/leveldb/leveldb-rocksdb/db/dbformat.h:15,
                 from ../deps/leveldb/leveldb-rocksdb/table/cuckoo_table_reader.h:17,
                 from ../deps/leveldb/leveldb-rocksdb/table/cuckoo_table_reader.cc:11:
/usr/include/c++/8/atomic:684:12: note: ‘struct std::atomic<unsigned int>’ declared here
     struct atomic<unsigned int> : __atomic_base<unsigned int>
            ^~~~~~~~~~~~~~~~~~~~
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/flush_block_policy.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/format.o
In file included from ../deps/leveldb/leveldb-rocksdb/table/format.cc:16:
../deps/leveldb/leveldb-rocksdb/table/block.h: In constructor ‘rocksdb::BlockReadAmpBitmap::BlockReadAmpBitmap(size_t, size_t, rocksdb::Statistics*)’:
../deps/leveldb/leveldb-rocksdb/table/block.h:68:53: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct std::atomic<unsigned int>’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess]
     memset(bitmap_, 0, bitmap_size * kBytesPersEntry);
                                                     ^
In file included from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/write_buffer_manager.h:15,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/options.h:26,
                 from ../deps/leveldb/leveldb-rocksdb/table/format.h:15,
                 from ../deps/leveldb/leveldb-rocksdb/table/format.cc:10:
/usr/include/c++/8/atomic:684:12: note: ‘struct std::atomic<unsigned int>’ declared here
     struct atomic<unsigned int> : __atomic_base<unsigned int>
            ^~~~~~~~~~~~~~~~~~~~
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/full_filter_block.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/get_context.o
In file included from ../deps/leveldb/leveldb-rocksdb/table/get_context.h:12,
                 from ../deps/leveldb/leveldb-rocksdb/table/get_context.cc:6:
../deps/leveldb/leveldb-rocksdb/table/block.h: In constructor ‘rocksdb::BlockReadAmpBitmap::BlockReadAmpBitmap(size_t, size_t, rocksdb::Statistics*)’:
../deps/leveldb/leveldb-rocksdb/table/block.h:68:53: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct std::atomic<unsigned int>’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess]
     memset(bitmap_, 0, bitmap_size * kBytesPersEntry);
                                                     ^
In file included from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/write_buffer_manager.h:15,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/options.h:26,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/db.h:22,
                 from ../deps/leveldb/leveldb-rocksdb/db/dbformat.h:15,
                 from ../deps/leveldb/leveldb-rocksdb/db/merge_context.h:9,
                 from ../deps/leveldb/leveldb-rocksdb/table/get_context.h:8,
                 from ../deps/leveldb/leveldb-rocksdb/table/get_context.cc:6:
/usr/include/c++/8/atomic:684:12: note: ‘struct std::atomic<unsigned int>’ declared here
     struct atomic<unsigned int> : __atomic_base<unsigned int>
            ^~~~~~~~~~~~~~~~~~~~
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/index_builder.o
In file included from ../deps/leveldb/leveldb-rocksdb/table/partitioned_filter_block.h:16,
                 from ../deps/leveldb/leveldb-rocksdb/table/index_builder.cc:20:
../deps/leveldb/leveldb-rocksdb/table/block.h: In constructor ‘rocksdb::BlockReadAmpBitmap::BlockReadAmpBitmap(size_t, size_t, rocksdb::Statistics*)’:
../deps/leveldb/leveldb-rocksdb/table/block.h:68:53: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct std::atomic<unsigned int>’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess]
     memset(bitmap_, 0, bitmap_size * kBytesPersEntry);
                                                     ^
In file included from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/statistics.h:9,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/cache.h:29,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/table.h:23,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/flush_block_policy.h:9,
                 from ../deps/leveldb/leveldb-rocksdb/table/block_based_table_factory.h:16,
                 from ../deps/leveldb/leveldb-rocksdb/table/index_builder.h:20,
                 from ../deps/leveldb/leveldb-rocksdb/table/index_builder.cc:10:
/usr/include/c++/8/atomic:684:12: note: ‘struct std::atomic<unsigned int>’ declared here
     struct atomic<unsigned int> : __atomic_base<unsigned int>
            ^~~~~~~~~~~~~~~~~~~~
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/iterator.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/merging_iterator.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/meta_blocks.o
In file included from ../deps/leveldb/leveldb-rocksdb/table/meta_blocks.cc:13:
../deps/leveldb/leveldb-rocksdb/table/block.h: In constructor ‘rocksdb::BlockReadAmpBitmap::BlockReadAmpBitmap(size_t, size_t, rocksdb::Statistics*)’:
../deps/leveldb/leveldb-rocksdb/table/block.h:68:53: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct std::atomic<unsigned int>’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess]
     memset(bitmap_, 0, bitmap_size * kBytesPersEntry);
                                                     ^
In file included from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/write_buffer_manager.h:15,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/options.h:26,
                 from ../deps/leveldb/leveldb-rocksdb/db/builder.h:16,
                 from ../deps/leveldb/leveldb-rocksdb/table/meta_blocks.h:12,
                 from ../deps/leveldb/leveldb-rocksdb/table/meta_blocks.cc:5:
/usr/include/c++/8/atomic:684:12: note: ‘struct std::atomic<unsigned int>’ declared here
     struct atomic<unsigned int> : __atomic_base<unsigned int>
            ^~~~~~~~~~~~~~~~~~~~
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/sst_file_writer.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/partitioned_filter_block.o
In file included from ../deps/leveldb/leveldb-rocksdb/table/partitioned_filter_block.h:16,
                 from ../deps/leveldb/leveldb-rocksdb/table/partitioned_filter_block.cc:6:
../deps/leveldb/leveldb-rocksdb/table/block.h: In constructor ‘rocksdb::BlockReadAmpBitmap::BlockReadAmpBitmap(size_t, size_t, rocksdb::Statistics*)’:
../deps/leveldb/leveldb-rocksdb/table/block.h:68:53: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct std::atomic<unsigned int>’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess]
     memset(bitmap_, 0, bitmap_size * kBytesPersEntry);
                                                     ^
In file included from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/write_buffer_manager.h:15,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/options.h:26,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/db.h:22,
                 from ../deps/leveldb/leveldb-rocksdb/db/dbformat.h:15,
                 from ../deps/leveldb/leveldb-rocksdb/table/partitioned_filter_block.h:11,
                 from ../deps/leveldb/leveldb-rocksdb/table/partitioned_filter_block.cc:6:
/usr/include/c++/8/atomic:684:12: note: ‘struct std::atomic<unsigned int>’ declared here
     struct atomic<unsigned int> : __atomic_base<unsigned int>
            ^~~~~~~~~~~~~~~~~~~~
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/plain_table_builder.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/plain_table_factory.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/plain_table_index.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/plain_table_key_coding.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/plain_table_reader.o
In file included from ../deps/leveldb/leveldb-rocksdb/table/plain_table_reader.cc:21:
../deps/leveldb/leveldb-rocksdb/table/block.h: In constructor ‘rocksdb::BlockReadAmpBitmap::BlockReadAmpBitmap(size_t, size_t, rocksdb::Statistics*)’:
../deps/leveldb/leveldb-rocksdb/table/block.h:68:53: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct std::atomic<unsigned int>’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess]
     memset(bitmap_, 0, bitmap_size * kBytesPersEntry);
                                                     ^
In file included from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/write_buffer_manager.h:15,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/options.h:26,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/db.h:22,
                 from ../deps/leveldb/leveldb-rocksdb/db/dbformat.h:15,
                 from ../deps/leveldb/leveldb-rocksdb/table/plain_table_reader.h:14,
                 from ../deps/leveldb/leveldb-rocksdb/table/plain_table_reader.cc:7:
/usr/include/c++/8/atomic:684:12: note: ‘struct std::atomic<unsigned int>’ declared here
     struct atomic<unsigned int> : __atomic_base<unsigned int>
            ^~~~~~~~~~~~~~~~~~~~
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/persistent_cache_helper.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/table_properties.o
In file included from ../deps/leveldb/leveldb-rocksdb/table/table_properties.cc:10:
../deps/leveldb/leveldb-rocksdb/table/block.h: In constructor ‘rocksdb::BlockReadAmpBitmap::BlockReadAmpBitmap(size_t, size_t, rocksdb::Statistics*)’:
../deps/leveldb/leveldb-rocksdb/table/block.h:68:53: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct std::atomic<unsigned int>’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess]
     memset(bitmap_, 0, bitmap_size * kBytesPersEntry);
                                                     ^
In file included from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/write_buffer_manager.h:15,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/options.h:26,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/db.h:22,
                 from ../deps/leveldb/leveldb-rocksdb/db/dbformat.h:15,
                 from ../deps/leveldb/leveldb-rocksdb/table/block.h:23,
                 from ../deps/leveldb/leveldb-rocksdb/table/table_properties.cc:10:
/usr/include/c++/8/atomic:684:12: note: ‘struct std::atomic<unsigned int>’ declared here
     struct atomic<unsigned int> : __atomic_base<unsigned int>
            ^~~~~~~~~~~~~~~~~~~~
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/table/two_level_iterator.o
In file included from ../deps/leveldb/leveldb-rocksdb/table/two_level_iterator.cc:14:
../deps/leveldb/leveldb-rocksdb/table/block.h: In constructor ‘rocksdb::BlockReadAmpBitmap::BlockReadAmpBitmap(size_t, size_t, rocksdb::Statistics*)’:
../deps/leveldb/leveldb-rocksdb/table/block.h:68:53: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct std::atomic<unsigned int>’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess]
     memset(bitmap_, 0, bitmap_size * kBytesPersEntry);
                                                     ^
In file included from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/write_buffer_manager.h:15,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/options.h:26,
                 from ../deps/leveldb/leveldb-rocksdb/table/two_level_iterator.cc:12:
/usr/include/c++/8/atomic:684:12: note: ‘struct std::atomic<unsigned int>’ declared here
     struct atomic<unsigned int> : __atomic_base<unsigned int>
            ^~~~~~~~~~~~~~~~~~~~
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/tools/dump/db_dump_tool.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/arena.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/bloom.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/build_version.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/cf_options.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/clock_cache.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/coding.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/comparator.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/compaction_job_stats_impl.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/concurrent_arena.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/crc32c.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/db_options.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/delete_scheduler.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/dynamic_bloom.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/env.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/env_chroot.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/env_hdfs.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/event_logger.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/file_util.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/file_reader_writer.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/filter_policy.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/hash.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/histogram.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/histogram_windowing.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/instrumented_mutex.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/iostats_context.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/io_posix.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/log_buffer.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/logging.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/lru_cache.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/memenv.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/murmurhash.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/options.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/options_helper.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/options_parser.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/options_sanity_check.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/perf_context.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/perf_level.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/random.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/rate_limiter.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/sharded_cache.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/slice.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/sst_file_manager_impl.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/statistics.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/status.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/status_message.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/string_util.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/sync_point.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/thread_local.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/thread_status_impl.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/thread_status_updater.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/thread_status_updater_debug.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/thread_status_util.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/thread_status_util_debug.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/threadpool_imp.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/transaction_test_util.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/xxhash.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/backupable/backupable_db.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/blob_db/blob_db.o
In file included from ../deps/leveldb/leveldb-rocksdb/utilities/blob_db/blob_db.cc:13:
../deps/leveldb/leveldb-rocksdb/table/block.h: In constructor ‘rocksdb::BlockReadAmpBitmap::BlockReadAmpBitmap(size_t, size_t, rocksdb::Statistics*)’:
../deps/leveldb/leveldb-rocksdb/table/block.h:68:53: warning: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct std::atomic<unsigned int>’ with no trivial copy-assignment; use value-initialization instead [-Wclass-memaccess]
     memset(bitmap_, 0, bitmap_size * kBytesPersEntry);
                                                     ^
In file included from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/write_buffer_manager.h:15,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/options.h:26,
                 from ../deps/leveldb/leveldb-rocksdb/include/rocksdb/db.h:22,
                 from ../deps/leveldb/leveldb-rocksdb/utilities/blob_db/blob_db.h:9,
                 from ../deps/leveldb/leveldb-rocksdb/utilities/blob_db/blob_db.cc:4:
/usr/include/c++/8/atomic:684:12: note: ‘struct std::atomic<unsigned int>’ declared here
     struct atomic<unsigned int> : __atomic_base<unsigned int>
            ^~~~~~~~~~~~~~~~~~~~
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/convenience/info_log_finder.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/checkpoint/checkpoint.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/document/document_db.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/document/json_document_builder.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/document/json_document.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/env_mirror.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/geodb/geodb_impl.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/leveldb_options/leveldb_options.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/lua/rocks_lua_compaction_filter.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/memory/memory_util.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/merge_operators/put.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/merge_operators/max.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/merge_operators/string_append/stringappend2.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/merge_operators/string_append/stringappend.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/merge_operators/uint64add.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/option_change_migration/option_change_migration.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/options/options_util.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/persistent_cache/persistent_cache_tier.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/persistent_cache/volatile_tier_impl.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/persistent_cache/block_cache_tier_file.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/persistent_cache/block_cache_tier_metadata.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/persistent_cache/block_cache_tier.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/redis/redis_lists.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/simulator_cache/sim_cache.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/spatialdb/spatial_db.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/transactions/optimistic_transaction_impl.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/transactions/optimistic_transaction_db_impl.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/transactions/transaction_base.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/transactions/transaction_db_impl.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/transactions/transaction_db_mutex_impl.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/transactions/transaction_lock_mgr.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/transactions/transaction_impl.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/transactions/transaction_util.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/ttl/db_ttl_impl.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/date_tiered/date_tiered_db_impl.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/write_batch_with_index/write_batch_with_index.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.o
../deps/leveldb/leveldb-rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc: In static member function ‘static rocksdb::WriteBatchWithIndexInternal::Result rocksdb::WriteBatchWithIndexInternal::GetFromBatch(const rocksdb::ImmutableDBOptions&, rocksdb::WriteBatchWithIndex*, rocksdb::ColumnFamilyHandle*, const rocksdb::Slice&, rocksdb::MergeContext*, rocksdb::WriteBatchEntryComparator*, std::__cxx11::string*, bool, rocksdb::Status*)’:
../deps/leveldb/leveldb-rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc:258:65: warning: ‘*((void*)&<anonymous> +32)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
           value->assign(entry_value->data(), entry_value->size());
                                                                 ^
../deps/leveldb/leveldb-rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc:258:65: warning: ‘*((void*)&<anonymous> +24)’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/port/port_posix.o
  CXX(target) Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/env_posix.o
  AR(target) Release/obj.target/deps/leveldb/leveldb.a
  COPY Release/leveldb.a
  CXX(target) Release/obj.target/snappy/deps/snappy/snappy-1.1.7/snappy-sinksource.o
  CXX(target) Release/obj.target/snappy/deps/snappy/snappy-1.1.7/snappy-stubs-internal.o
  CXX(target) Release/obj.target/snappy/deps/snappy/snappy-1.1.7/snappy.o
  AR(target) Release/obj.target/deps/snappy/snappy.a
  COPY Release/snappy.a
  CXX(target) Release/obj.target/leveldown/src/batch.o
In file included from ../src/batch.cc:3:
../../nan/nan.h: In function ‘void Nan::AsyncQueueWorker(Nan::AsyncWorker*)’:
../../nan/nan.h:2232:62: warning: cast between incompatible function types from ‘void (*)(uv_work_t*)’ {aka ‘void (*)(uv_work_s*)’} to ‘uv_after_work_cb’ {aka ‘void (*)(uv_work_s*, int)’} [-Wcast-function-type]
     , reinterpret_cast<uv_after_work_cb>(AsyncExecuteComplete)
                                                              ^
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h: In function ‘size_t StringOrBufferLength(v8::Local<v8::Value>)’:
../src/leveldown.h:12:26: error: no matching function for call to ‘v8::Value::ToObject()’
   return (!obj->ToObject().IsEmpty()
                          ^
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                            ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note:   candidate expects 1 argument, 0 provided
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:13:48: error: no matching function for call to ‘v8::Value::ToObject()’
     && node::Buffer::HasInstance(obj->ToObject()))
                                                ^
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                            ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note:   candidate expects 1 argument, 0 provided
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:14:42: error: no matching function for call to ‘v8::Value::ToObject()’
     ? node::Buffer::Length(obj->ToObject())
                                          ^
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                            ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note:   candidate expects 1 argument, 0 provided
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:15:21: error: no matching function for call to ‘v8::Value::ToString()’
     : obj->ToString()->Utf8Length();
                     ^
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2528:44: note: candidate: ‘v8::MaybeLocal<v8::String> v8::Value::ToString(v8::Local<v8::Context>) const’
   V8_WARN_UNUSED_RESULT MaybeLocal<String> ToString(
                                            ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2528:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2544:35: note: candidate: ‘v8::Local<v8::String> v8::Value::ToString(v8::Isolate*) const’
                     Local<String> ToString(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2544:35: note:   candidate expects 1 argument, 0 provided
                     Local<String> ToString(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h: In function ‘void DisposeStringOrBufferFromSlice(Nan::Persistent<v8::Object>&, rocksdb::Slice)’:
../src/leveldown.h:26:110: warning: ‘v8::Local<v8::Value> v8::Object::Get(v8::Local<v8::Value>)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     v8::Local<v8::Value> obj = Nan::New<v8::Object>(handle)->Get(Nan::New<v8::String>("obj").ToLocalChecked());
                                                                                                              ^
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:3412:55: note: declared here
   V8_DEPRECATE_SOON("Use maybe version", Local<Value> Get(Local<Value> key));
                                                       ^~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/batch.cc:5:
../src/database.h: In constructor ‘leveldown::Reference::Reference(v8::Local<v8::Value>, rocksdb::Slice)’:
../src/database.h:26:52: warning: ‘bool v8::Object::Set(v8::Local<v8::Value>, v8::Local<v8::Value>)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     _obj->Set(Nan::New("obj").ToLocalChecked(), obj);
                                                    ^
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:3359:26: note: declared here
                     bool Set(Local<Value> key, Local<Value> value));
                          ^~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/batch.cc:5:
../src/database.h: At global scope:
../src/database.h:81:7: warning: unnecessary parentheses in declaration of ‘pendingCloseWorker’ [-Wparentheses]
   void(*pendingCloseWorker);
       ^
In file included from ../src/batch.cc:8:
../src/common.h: In function ‘bool leveldown::BooleanOptionValue(v8::Local<v8::Object>, const char*, bool)’:
../src/common.h:14:24: error: no matching function for call to ‘v8::Object::Has(v8::Local<v8::String>&)’
     && options->Has(key)
                        ^
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:3449:37: note: candidate: ‘v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, v8::Local<v8::Value>)’
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
                                     ^~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:3449:37: note:   candidate expects 2 arguments, 1 provided
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:3455:37: note: candidate: ‘v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, uint32_t)’
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context, uint32_t index);
                                     ^~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:3455:37: note:   candidate expects 2 arguments, 1 provided
In file included from ../src/batch.cc:8:
../src/common.h:15:23: warning: ‘v8::Local<v8::Value> v8::Object::Get(v8::Local<v8::Value>)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     ? options->Get(key)->BooleanValue()
                       ^
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:3412:55: note: declared here
   V8_DEPRECATE_SOON("Use maybe version", Local<Value> Get(Local<Value> key));
                                                       ^~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/batch.cc:8:
../src/common.h:15:39: error: no matching function for call to ‘v8::Value::BooleanValue()’
     ? options->Get(key)->BooleanValue()
                                       ^
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2559:8: note: candidate: ‘bool v8::Value::BooleanValue(v8::Isolate*) const’
   bool BooleanValue(Isolate* isolate) const;
        ^~~~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2559:8: note:   candidate expects 1 argument, 0 provided
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2562:51: note: candidate: ‘v8::Maybe<bool> v8::Value::BooleanValue(v8::Local<v8::Context>) const’
                 V8_WARN_UNUSED_RESULT Maybe<bool> BooleanValue(
                                                   ^~~~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:307:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2562:51: note:   candidate expects 1 argument, 0 provided
                 V8_WARN_UNUSED_RESULT Maybe<bool> BooleanValue(
                                                   ^~~~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:307:3: note: in definition of macro ‘V8_DEPRECATED’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/batch.cc:8:
../src/common.h: In function ‘uint32_t leveldown::UInt32OptionValue(v8::Local<v8::Object>, const char*, uint32_t)’:
../src/common.h:25:24: error: no matching function for call to ‘v8::Object::Has(v8::Local<v8::String>&)’
     && options->Has(key)
                        ^
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:3449:37: note: candidate: ‘v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, v8::Local<v8::Value>)’
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context,
                                     ^~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:3449:37: note:   candidate expects 2 arguments, 1 provided
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:3455:37: note: candidate: ‘v8::Maybe<bool> v8::Object::Has(v8::Local<v8::Context>, uint32_t)’
   V8_WARN_UNUSED_RESULT Maybe<bool> Has(Local<Context> context, uint32_t index);
                                     ^~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:3455:37: note:   candidate expects 2 arguments, 1 provided
In file included from ../src/batch.cc:8:
../src/common.h:26:24: warning: ‘v8::Local<v8::Value> v8::Object::Get(v8::Local<v8::Value>)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     && options->Get(key)->IsNumber()
                        ^
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:3412:55: note: declared here
   V8_DEPRECATE_SOON("Use maybe version", Local<Value> Get(Local<Value> key));
                                                       ^~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/batch.cc:8:
../src/common.h:27:23: warning: ‘v8::Local<v8::Value> v8::Object::Get(v8::Local<v8::Value>)’ is deprecated: Use maybe version [-Wdeprecated-declarations]
     ? options->Get(key)->Uint32Value()
                       ^
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:3412:55: note: declared here
   V8_DEPRECATE_SOON("Use maybe version", Local<Value> Get(Local<Value> key));
                                                       ^~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/batch.cc:8:
../src/common.h:27:38: error: no matching function for call to ‘v8::Value::Uint32Value()’
     ? options->Get(key)->Uint32Value()
                                      ^
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2567:41: note: candidate: ‘v8::Maybe<unsigned int> v8::Value::Uint32Value(v8::Local<v8::Context>) const’
   V8_WARN_UNUSED_RESULT Maybe<uint32_t> Uint32Value(
                                         ^~~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2567:41: note:   candidate expects 1 argument, 0 provided
../src/batch.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE leveldown::Batch::New(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/batch.cc:42:76: error: no matching function for call to ‘v8::Value::ToObject()’
   Database* database = Nan::ObjectWrap::Unwrap<Database>(info[0]->ToObject());
                                                                            ^
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                            ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note:   candidate expects 1 argument, 0 provided
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
../src/batch.cc: In static member function ‘static v8::Local<v8::Value> leveldown::Batch::NewInstance(v8::Local<v8::Object>, v8::Local<v8::Object>)’:
../src/batch.cc:72:69: error: no matching function for call to ‘v8::FunctionTemplate::GetFunction()’
     maybeInstance = Nan::NewInstance(constructorHandle->GetFunction(), 1, argv);
                                                                     ^
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:5947:46: note: candidate: ‘v8::MaybeLocal<v8::Function> v8::FunctionTemplate::GetFunction(v8::Local<v8::Context>)’
   V8_WARN_UNUSED_RESULT MaybeLocal<Function> GetFunction(
                                              ^~~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:5947:46: note:   candidate expects 1 argument, 0 provided
../src/batch.cc:75:69: error: no matching function for call to ‘v8::FunctionTemplate::GetFunction()’
     maybeInstance = Nan::NewInstance(constructorHandle->GetFunction(), 2, argv);
                                                                     ^
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:5947:46: note: candidate: ‘v8::MaybeLocal<v8::Function> v8::FunctionTemplate::GetFunction(v8::Local<v8::Context>)’
   V8_WARN_UNUSED_RESULT MaybeLocal<Function> GetFunction(
                                              ^~~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:5947:46: note:   candidate expects 1 argument, 0 provided
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/batch.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE leveldown::Batch::Put(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/leveldown.h:49:30: error: no matching function for call to ‘v8::Value::ToObject()’
   } else if (!from->ToObject().IsEmpty()                                       \
                              ^
../src/batch.cc:91:3: note: in expansion of macro ‘LD_STRING_OR_BUFFER_TO_SLICE’
   LD_STRING_OR_BUFFER_TO_SLICE(key, keyBuffer, key)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                            ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note:   candidate expects 1 argument, 0 provided
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:50:51: error: no matching function for call to ‘v8::Value::ToObject()’
       && node::Buffer::HasInstance(from->ToObject())) {                        \
                                                   ^
../src/batch.cc:91:3: note: in expansion of macro ‘LD_STRING_OR_BUFFER_TO_SLICE’
   LD_STRING_OR_BUFFER_TO_SLICE(key, keyBuffer, key)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                            ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note:   candidate expects 1 argument, 0 provided
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:51:53: error: no matching function for call to ‘v8::Value::ToObject()’
     to ## Sz_ = node::Buffer::Length(from->ToObject());                        \
                                                     ^
../src/batch.cc:91:3: note: in expansion of macro ‘LD_STRING_OR_BUFFER_TO_SLICE’
   LD_STRING_OR_BUFFER_TO_SLICE(key, keyBuffer, key)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                            ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note:   candidate expects 1 argument, 0 provided
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:52:51: error: no matching function for call to ‘v8::Value::ToObject()’
     to ## Ch_ = node::Buffer::Data(from->ToObject());                          \
                                                   ^
../src/batch.cc:91:3: note: in expansion of macro ‘LD_STRING_OR_BUFFER_TO_SLICE’
   LD_STRING_OR_BUFFER_TO_SLICE(key, keyBuffer, key)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                            ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note:   candidate expects 1 argument, 0 provided
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:54:54: error: no matching function for call to ‘v8::Value::ToString()’
     v8::Local<v8::String> to ## Str = from->ToString();                        \
                                                      ^
../src/batch.cc:91:3: note: in expansion of macro ‘LD_STRING_OR_BUFFER_TO_SLICE’
   LD_STRING_OR_BUFFER_TO_SLICE(key, keyBuffer, key)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2528:44: note: candidate: ‘v8::MaybeLocal<v8::String> v8::Value::ToString(v8::Local<v8::Context>) const’
   V8_WARN_UNUSED_RESULT MaybeLocal<String> ToString(
                                            ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2528:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2544:35: note: candidate: ‘v8::Local<v8::String> v8::Value::ToString(v8::Isolate*) const’
                     Local<String> ToString(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2544:35: note:   candidate expects 1 argument, 0 provided
                     Local<String> ToString(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:55:39: error: no matching function for call to ‘v8::String::Utf8Length()’
     to ## Sz_ = to ## Str->Utf8Length();                                       \
                                       ^
../src/batch.cc:91:3: note: in expansion of macro ‘LD_STRING_OR_BUFFER_TO_SLICE’
   LD_STRING_OR_BUFFER_TO_SLICE(key, keyBuffer, key)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2678:7: note: candidate: ‘int v8::String::Utf8Length(v8::Isolate*) const’
   int Utf8Length(Isolate* isolate) const;
       ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2678:7: note:   candidate expects 1 argument, 0 provided
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:61:5: error: no matching function for call to ‘v8::String::WriteUtf8(char*&, int, NULL, v8::String::WriteOptions)’
     );                                                                         \
     ^
../src/batch.cc:91:3: note: in expansion of macro ‘LD_STRING_OR_BUFFER_TO_SLICE’
   LD_STRING_OR_BUFFER_TO_SLICE(key, keyBuffer, key)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2738:7: note: candidate: ‘int v8::String::WriteUtf8(v8::Isolate*, char*, int, int*, int) const’
   int WriteUtf8(Isolate* isolate, char* buffer, int length = -1,
       ^~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2738:7: note:   no known conversion for argument 1 from ‘char*’ to ‘v8::Isolate*’
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:49:30: error: no matching function for call to ‘v8::Value::ToObject()’
   } else if (!from->ToObject().IsEmpty()                                       \
                              ^
../src/batch.cc:92:3: note: in expansion of macro ‘LD_STRING_OR_BUFFER_TO_SLICE’
   LD_STRING_OR_BUFFER_TO_SLICE(value, valueBuffer, value)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                            ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note:   candidate expects 1 argument, 0 provided
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:50:51: error: no matching function for call to ‘v8::Value::ToObject()’
       && node::Buffer::HasInstance(from->ToObject())) {                        \
                                                   ^
../src/batch.cc:92:3: note: in expansion of macro ‘LD_STRING_OR_BUFFER_TO_SLICE’
   LD_STRING_OR_BUFFER_TO_SLICE(value, valueBuffer, value)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                            ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note:   candidate expects 1 argument, 0 provided
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:51:53: error: no matching function for call to ‘v8::Value::ToObject()’
     to ## Sz_ = node::Buffer::Length(from->ToObject());                        \
                                                     ^
../src/batch.cc:92:3: note: in expansion of macro ‘LD_STRING_OR_BUFFER_TO_SLICE’
   LD_STRING_OR_BUFFER_TO_SLICE(value, valueBuffer, value)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                            ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note:   candidate expects 1 argument, 0 provided
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:52:51: error: no matching function for call to ‘v8::Value::ToObject()’
     to ## Ch_ = node::Buffer::Data(from->ToObject());                          \
                                                   ^
../src/batch.cc:92:3: note: in expansion of macro ‘LD_STRING_OR_BUFFER_TO_SLICE’
   LD_STRING_OR_BUFFER_TO_SLICE(value, valueBuffer, value)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                            ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note:   candidate expects 1 argument, 0 provided
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:54:54: error: no matching function for call to ‘v8::Value::ToString()’
     v8::Local<v8::String> to ## Str = from->ToString();                        \
                                                      ^
../src/batch.cc:92:3: note: in expansion of macro ‘LD_STRING_OR_BUFFER_TO_SLICE’
   LD_STRING_OR_BUFFER_TO_SLICE(value, valueBuffer, value)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2528:44: note: candidate: ‘v8::MaybeLocal<v8::String> v8::Value::ToString(v8::Local<v8::Context>) const’
   V8_WARN_UNUSED_RESULT MaybeLocal<String> ToString(
                                            ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2528:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2544:35: note: candidate: ‘v8::Local<v8::String> v8::Value::ToString(v8::Isolate*) const’
                     Local<String> ToString(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2544:35: note:   candidate expects 1 argument, 0 provided
                     Local<String> ToString(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:55:39: error: no matching function for call to ‘v8::String::Utf8Length()’
     to ## Sz_ = to ## Str->Utf8Length();                                       \
                                       ^
../src/batch.cc:92:3: note: in expansion of macro ‘LD_STRING_OR_BUFFER_TO_SLICE’
   LD_STRING_OR_BUFFER_TO_SLICE(value, valueBuffer, value)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2678:7: note: candidate: ‘int v8::String::Utf8Length(v8::Isolate*) const’
   int Utf8Length(Isolate* isolate) const;
       ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2678:7: note:   candidate expects 1 argument, 0 provided
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:61:5: error: no matching function for call to ‘v8::String::WriteUtf8(char*&, int, NULL, v8::String::WriteOptions)’
     );                                                                         \
     ^
../src/batch.cc:92:3: note: in expansion of macro ‘LD_STRING_OR_BUFFER_TO_SLICE’
   LD_STRING_OR_BUFFER_TO_SLICE(value, valueBuffer, value)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2738:7: note: candidate: ‘int v8::String::WriteUtf8(v8::Isolate*, char*, int, int*, int) const’
   int WriteUtf8(Isolate* isolate, char* buffer, int length = -1,
       ^~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2738:7: note:   no known conversion for argument 1 from ‘char*’ to ‘v8::Isolate*’
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/batch.cc: In static member function ‘static Nan::NAN_METHOD_RETURN_TYPE leveldown::Batch::Del(Nan::NAN_METHOD_ARGS_TYPE)’:
../src/leveldown.h:49:30: error: no matching function for call to ‘v8::Value::ToObject()’
   } else if (!from->ToObject().IsEmpty()                                       \
                              ^
../src/batch.cc:110:3: note: in expansion of macro ‘LD_STRING_OR_BUFFER_TO_SLICE’
   LD_STRING_OR_BUFFER_TO_SLICE(key, keyBuffer, key)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                            ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note:   candidate expects 1 argument, 0 provided
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:50:51: error: no matching function for call to ‘v8::Value::ToObject()’
       && node::Buffer::HasInstance(from->ToObject())) {                        \
                                                   ^
../src/batch.cc:110:3: note: in expansion of macro ‘LD_STRING_OR_BUFFER_TO_SLICE’
   LD_STRING_OR_BUFFER_TO_SLICE(key, keyBuffer, key)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                            ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note:   candidate expects 1 argument, 0 provided
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:51:53: error: no matching function for call to ‘v8::Value::ToObject()’
     to ## Sz_ = node::Buffer::Length(from->ToObject());                        \
                                                     ^
../src/batch.cc:110:3: note: in expansion of macro ‘LD_STRING_OR_BUFFER_TO_SLICE’
   LD_STRING_OR_BUFFER_TO_SLICE(key, keyBuffer, key)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                            ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note:   candidate expects 1 argument, 0 provided
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:52:51: error: no matching function for call to ‘v8::Value::ToObject()’
     to ## Ch_ = node::Buffer::Data(from->ToObject());                          \
                                                   ^
../src/batch.cc:110:3: note: in expansion of macro ‘LD_STRING_OR_BUFFER_TO_SLICE’
   LD_STRING_OR_BUFFER_TO_SLICE(key, keyBuffer, key)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note: candidate: ‘v8::MaybeLocal<v8::Object> v8::Value::ToObject(v8::Local<v8::Context>) const’
   V8_WARN_UNUSED_RESULT MaybeLocal<Object> ToObject(
                                            ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2532:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note: candidate: ‘v8::Local<v8::Object> v8::Value::ToObject(v8::Isolate*) const’
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2546:35: note:   candidate expects 1 argument, 0 provided
                     Local<Object> ToObject(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:54:54: error: no matching function for call to ‘v8::Value::ToString()’
     v8::Local<v8::String> to ## Str = from->ToString();                        \
                                                      ^
../src/batch.cc:110:3: note: in expansion of macro ‘LD_STRING_OR_BUFFER_TO_SLICE’
   LD_STRING_OR_BUFFER_TO_SLICE(key, keyBuffer, key)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2528:44: note: candidate: ‘v8::MaybeLocal<v8::String> v8::Value::ToString(v8::Local<v8::Context>) const’
   V8_WARN_UNUSED_RESULT MaybeLocal<String> ToString(
                                            ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2528:44: note:   candidate expects 1 argument, 0 provided
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/v8-internal.h:14,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:25,
                 from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2544:35: note: candidate: ‘v8::Local<v8::String> v8::Value::ToString(v8::Isolate*) const’
                     Local<String> ToString(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2544:35: note:   candidate expects 1 argument, 0 provided
                     Local<String> ToString(Isolate* isolate) const);
                                   ^~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8config.h:322:3: note: in definition of macro ‘V8_DEPRECATE_SOON’
   declarator __attribute__((deprecated(message)))
   ^~~~~~~~~~
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:55:39: error: no matching function for call to ‘v8::String::Utf8Length()’
     to ## Sz_ = to ## Str->Utf8Length();                                       \
                                       ^
../src/batch.cc:110:3: note: in expansion of macro ‘LD_STRING_OR_BUFFER_TO_SLICE’
   LD_STRING_OR_BUFFER_TO_SLICE(key, keyBuffer, key)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2678:7: note: candidate: ‘int v8::String::Utf8Length(v8::Isolate*) const’
   int Utf8Length(Isolate* isolate) const;
       ^~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2678:7: note:   candidate expects 1 argument, 0 provided
In file included from ../src/database.h:13,
                 from ../src/batch.cc:5:
../src/leveldown.h:61:5: error: no matching function for call to ‘v8::String::WriteUtf8(char*&, int, NULL, v8::String::WriteOptions)’
     );                                                                         \
     ^
../src/batch.cc:110:3: note: in expansion of macro ‘LD_STRING_OR_BUFFER_TO_SLICE’
   LD_STRING_OR_BUFFER_TO_SLICE(key, keyBuffer, key)
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/devilfromir/.node-gyp/12.4.0/include/node/node.h:63,
                 from ../src/batch.cc:1:
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2738:7: note: candidate: ‘int v8::String::WriteUtf8(v8::Isolate*, char*, int, int*, int) const’
   int WriteUtf8(Isolate* isolate, char* buffer, int length = -1,
       ^~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:2738:7: note:   no known conversion for argument 1 from ‘char*’ to ‘v8::Isolate*’
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = node::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)]’:
/home/devilfromir/.node-gyp/12.4.0/include/node/node_object_wrap.h:84:78:   required from here
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:9817:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<node::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<node::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
                reinterpret_cast<Callback>(callback), type);
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h: In instantiation of ‘void v8::PersistentBase<T>::SetWeak(P*, typename v8::WeakCallbackInfo<P>::Callback, v8::WeakCallbackType) [with P = Nan::ObjectWrap; T = v8::Object; typename v8::WeakCallbackInfo<P>::Callback = void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)]’:
../../nan/nan_object_wrap.h:65:61:   required from here
/home/devilfromir/.node-gyp/12.4.0/include/node/v8.h:9817:16: warning: cast between incompatible function types from ‘v8::WeakCallbackInfo<Nan::ObjectWrap>::Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’} to ‘Callback’ {aka ‘void (*)(const v8::WeakCallbackInfo<void>&)’} [-Wcast-function-type]
make: *** [leveldown.target.mk:117: Release/obj.target/leveldown/src/batch.o] Error 1
make: Leaving directory '/home/devilfromir/Code/projects/libs/npm/@ts-e/nrocks/node_modules/rocksdb/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:262:23)
gyp ERR! stack     at ChildProcess.emit (events.js:200:13)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:272:12)
gyp ERR! System Linux 4.19.0-kali5-amd64
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/devilfromir/Code/projects/libs/npm/@ts-e/nrocks/node_modules/rocksdb
gyp ERR! node -v v12.4.0
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

Huge node_modules rocksdb directory - 1.41GB (Windows)

I understand that this is a relatively big, complex piece of software, but was very surprised to see the disk usage quite that high. I am yet to investigate disk usage on Linux, where it would be deployed.

Are there any easy ways to clear out unnecessary files? Would it be worth having an optional cleanup stage as part of the build? My use case does not involve modifying the rocksdb source and recompiling, and I suppose speeding up recompilation is a reason why various files produced during compilation are left behind.

Disable info logs by default

Forked from #13.

  • Disable info logs
  • Add option (something like infoLogLevel) to enable them
  • Remove the destroy fix for Windows (#13 (comment))
  • Also disable info logs for repair() and destroy()
  • Also support infoLogLevel option on repair() and destroy() (would change the JS interface)

Destroy() creates directory on Windows

Repro:

test('destroy does not create a directory', function (t) {
  t.plan(3)

  const location = path.resolve('destroy-test')

  rimraf.sync(location)
  t.is(fs.existsSync(location), false, 'exists before')

  leveldown.destroy(location, function (err) {
    t.ifError(err, 'no error')
    t.is(fs.existsSync(location), false, 'exists after') // Fails
  })
})

Here's the relevant C++, comments mine:

Status DestroyDB(const std::string& dbname /*, .. */) {
  FileLock* lock;
  const std::string lockname = LockFileName(dbname); // "<location>/LOCK"
  Status result = env->LockFile(lockname, &lock); // Creates <location>/LOCK
  
  if (result.ok()) {
    // Delete files..
    // ..

    env->UnlockFile(lock);
    env->DeleteFile(lockname); // Succeeds, directory is empty
    env->DeleteDir(dbname);    // Yet this fails
  }

  return result;
}

The DeleteDir fails (silently) with:

IO error: Failed to remove dir: D:\xx\Level\rocksdb\destroy-test: Directory not empty

Invoke rocksdb destroy

I am trying to invoke rocksdb destroy, using the level-rocksdb package. I cannot see how to get to the leveldown API to do this. I tried db.db after creating a database but it says no such method.

In a related question, the database has a status of 'opening' after I open it, is there a way to wait for it to open? I know the first usage usually does this, but what if I want to close it right away (or in this case test destroy).

Perhaps because the database is not yet open the leveldown API is not exposed? If so it would be good to know how to await (Typescript style) for it to open in every case.

Move rocksdb to a git submodule

So, I'm working on moving all dependencies to Git Submodules (as discussed in Level/leveldown#522), but I'm not quite able to figure out what the exact version of RocksDB is.

So, I know it's somewhere in ^5.3.0, but no upstream tag (v5.3.3 to v5.3.6) exactly matches the code in the deps/leveldb/leveldb-rocksdb folder.

I guess I could try to find out the exact commit by digging into this a bit deeper (without 08fd9a3 I suppose), but would it be fine to upgrade to the latest 5.3 version (v5.3.6) instead if tests pass?

Rewrite to N-API

  • Copy binding.cc, binding.js, leveldown.js, chained-batch.js and iterator.js from leveldown
  • Restore windows destroy patch
  • Change includes and add namespace alias
  • Add RocksDB specifics (see diff below)
    • rocksdb::Options
    • readOnly option
    • CompactRangeOptions
    • blockCache (shared pointer and no delete)
  • Copy tests from leveldown then restore RocksDB-specifics
  • Copy prebuild setup from leveldown (without cross-compilation)
  • Update minimum node version and related docs
  • Ensure prebuilds/ is included in npm package
  • Run leak-tester-batch.js, leak-tester-iterator.js, leak-tester.js
  • Add GitHub tokens

RocksDB version upgrade

Hi, I'm trying to upgrade RocksDB version used in this package:

  1. I've downloaded latest release from RocksDB official github, replaced the contents of /deps/leveldb/leveldb-rocksdb with it.

  2. Updated the leveldb.gyp to this content which can be also found in this diff and the whole fork can be found here.

(I've also temporarily removed some of the code to pinpoint the issue, please ignore those changes)

Now when I install the package locally the compilation phase goes smooth, package installs successfully but when I try to run the code through requiring the package I get runtime error

Error image

Any thoughts on how to deal with this issue?

Open rocksdb in ReadOnly Mode

Is there an option that can be passed to level/rocksdb to open rocksdb in ReadOnly Mode? I see how to do it from native code, but not from the level(path, options). I would like to have one process in read/write mode, and another process in ReadOnly mode (even if that means it is only a snapshot of the database at the time of open, that is OK).

releases

I need to setup prebuilts for all the envs, how do you folks do that?
Also, can you add me to the appveyor team (or how does that work)?

cc @ralphtheninja @juliangruber

fatal error: linux/fs.h: No such file or directory

Doesn't rocksdb support linux kernal rather than darwin?
I tried to install it on node alpine version, but it shows like this:

../deps/leveldb/leveldb-rocksdb/util/io_posix.cc:16:22: fatal error: linux/fs.h: No such file or directory
 #include <linux/fs.h>
                      ^
compilation terminated.
make: *** [deps/leveldb/leveldb.target.mk:293: Release/obj.target/leveldb/deps/leveldb/leveldb-rocksdb/util/io_posix.o] Error 1
make: Leaving directory '/usr/src/app/node_modules/rocksdb/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:258:23)
gyp ERR! stack     at emitTwo (events.js:135:13)
gyp ERR! stack     at ChildProcess.emit (events.js:224:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:209:12)
gyp ERR! System Linux 4.9.49-moby
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/src/app/node_modules/rocksdb
gyp ERR! node -v v9.1.0
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok 
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: `prebuild-install || node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2017-11-19T12_01_47_614Z-debug.log
ERROR: Service 'node' failed to build: The command '/bin/sh -c npm rebuild' returned a non-zero code: 1

Thank you for give me a chance to submit an issue.

An in-range update of abstract-leveldown is breaking the build 🚨

Version 2.6.3 of abstract-leveldown just got published.

Branch Build failing 🚨
Dependency abstract-leveldown
Current Version 2.6.2
Type dependency

This version is covered by your current version range and after updating it in your project the build failed.

abstract-leveldown is a direct dependency of this project this is very likely breaking your project right now. If other packages depend on you it’s very likely also breaking them.
I recommend you give this issue a very high priority. I’m sure you can resolve this 💪

Status Details
  • continuous-integration/appveyor/branch AppVeyor build succeeded Details
  • continuous-integration/travis-ci/push The Travis CI build could not complete due to an error Details

Commits

The new version differs by 18 commits.

  • c9448d2 2.6.3
  • 3819659 Merge pull request #122 from Level/fix-browser-tests
  • a68d0ee relax tests for serializing object in chained-batch-test.js
  • dcc278d Merge pull request #119 from Level/null-to-empty
  • 7c5ab10 add test for undefined serializing to empty string
  • d21cd76 Tidy serialization test order.
  • 305ab90 Correctly restore process.browser.
  • 9af2369 Serialization test for browser or Node.js.
  • c3b90c2 Use t.equal instead of t.ok and ===.
  • 5fb7e9e Use t.equal instead of t.ok.
  • bc49587 Unit test for key/value serialization.
  • 2b75f31 Convert nullish values to empty strings.
  • af93dbd Merge pull request #117 from Level/greenkeeper/initial
  • b3e94db Update README.md
  • 2c9a884 docs(readme): add Greenkeeper badge

There are 18 commits in total.

See the full diff

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

An in-range update of abstract-leveldown is breaking the build 🚨

Version 4.0.1 of abstract-leveldown was just published.

Branch Build failing 🚨
Dependency abstract-leveldown
Current Version 4.0.0
Type dependency

This version is covered by your current version range and after updating it in your project the build failed.

abstract-leveldown is a direct dependency of this project, and it is very likely causing it to break. If other packages depend on yours, this update is probably also breaking those in turn.

Status Details
  • continuous-integration/travis-ci/push The Travis CI build is in progress Details
  • continuous-integration/appveyor/branch AppVeyor build failed Details

Commits

The new version differs by 13 commits.

  • 2320f10 4.0.1
  • 7d41bd7 prepare changelog for 4.0.1
  • f946325 Update changelog (#199)
  • 014ff8a Merge pull request #195 from Level/typescript
  • c68595f add TypeScript readme section with stability badge
  • 5eb28af add TypeScript smoke test
  • b1ed564 define default methods on prototype to please TypeScript
  • 38b3706 use ES6 classes in tests to please TypeScript
  • c2f400e remove obsolete parameters from tests
  • b353fb4 update TypeScript typings for v4
  • 268e59b run test suite in TypeScript in addition to Node.js
  • e78a21a Merge pull request #196 from ralphtheninja/master
  • ef61b68 readme: link to upgrade guide

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

createReadStream with Binary data

I have a database with key/value encoding: 'binary'. Both put/get work fine using a node Buffer as the key/value. Now I want to use createReadStream with a range (gte,le) and I am not getting results back. I tried a test with 'hex' encoding on the same values (in hex form derived from the Buffer objects) and it worked fine, just not with Buffers themselves. The BytewiseComparator is the default in the configuration.

My question is: When using the BytewiseComparator with binary keys (node Buffer objects) and createReadStream, does it still do a byte-by-byte comparison? My actual key is longer than the 'gte/le' range keys, but if it works byte-by-byte then the 'gte/le' keys definitely include the range of the data in the database. If it is doing a number comparison on the entire range key and data key then it would not be in the range, since there are fewer bytes in the range keys than the data.

Here is a pseudo example in hex representation of what the data looks like (spacing for readability):

gte key:
05000000 15 01000000 1a01 00 2201 00
data key:
05000000 15 01000000 1A08 5912F421E64A4000
lt: key:
05000000 15 02000000 1a01 00 2201 00

You can see that 01000000 1a01 < 01000000 1A08 < 02000000 1a01 based on a byte-by-byte comparison.

I can convert to using 'hex' encoding for the keys, but it would be great if I can get it to work with pure binary.

Any help appreciated.

Version 10 of node.js has been released

Version 10 of Node.js (code name Dubnium) has been released! 🎊

To see what happens to your code in Node.js 10, Greenkeeper has created a branch with the following changes:

  • Added the new Node.js version to your .travis.yml
  • The new Node.js version is in-range for the engines in 1 of your package.json files, so that was left alone

If you’re interested in upgrading this repo to Node.js 10, you can open a PR with these changes. Please note that this issue is just intended as a friendly reminder and the PR as a possible starting point for getting your code running on Node.js 10.

More information on this issue

Greenkeeper has checked the engines key in any package.json file, the .nvmrc file, and the .travis.yml file, if present.

  • engines was only updated if it defined a single version, not a range.
  • .nvmrc was updated to Node.js 10
  • .travis.yml was only changed if there was a root-level node_js that didn’t already include Node.js 10, such as node or lts/*. In this case, the new version was appended to the list. We didn’t touch job or matrix configurations because these tend to be quite specific and complex, and it’s difficult to infer what the intentions were.

For many simpler .travis.yml configurations, this PR should suffice as-is, but depending on what you’re doing it may require additional work or may not be applicable at all. We’re also aware that you may have good reasons to not update to Node.js 10, which is why this was sent as an issue and not a pull request. Feel free to delete it without comment, I’m a humble robot and won’t feel rejected 🤖


FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

Action required: Greenkeeper could not be activated 🚨

🚨 You need to enable Continuous Integration on all branches of this repository. 🚨

To enable Greenkeeper, you need to make sure that a commit status is reported on all branches. This is required by Greenkeeper because we are using your CI build statuses to figure out when to notify you about breaking changes.

Since we did not receive a CI status on the greenkeeper/initial branch, we assume that you still need to configure it.

If you have already set up a CI for this repository, you might need to check your configuration. Make sure it will run on all new branches. If you don’t want it to run on every branch, you can whitelist branches starting with greenkeeper/.

We recommend using Travis CI, but Greenkeeper will work with every other CI service as well.

Once you have installed CI on this repository, you’ll need to re-trigger Greenkeeper’s initial Pull Request. To do this, please delete the greenkeeper/initial branch in this repository, and then remove and re-add this repository to the Greenkeeper integration’s white list on Github. You'll find this list on your repo or organiszation’s settings page, under Installed GitHub Apps.

An in-range update of slump is breaking the build 🚨

Version 2.0.3 of slump was just published.

Branch Build failing 🚨
Dependency slump
Current Version 2.0.2
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

slump is a devDependency of this project. It might not break your production code or affect downstream projects, but probably breaks your build or test tools, which may prevent deploying or publishing.

Status Details
  • continuous-integration/travis-ci/push The Travis CI build is in progress Details
  • continuous-integration/appveyor/branch AppVeyor build failed Details

Commits

The new version differs by 5 commits.

  • 37e8322 2.0.3
  • 58b0058 bump sodium-universal
  • 5906c88 Merge pull request #2 from ralphtheninja/greenkeeper/initial
  • 2a9989b Update README.md
  • 321363b docs(readme): add Greenkeeper badge

See the full diff

FAQ and help

There is a collection of frequently asked questions. If those don’t help, you can always ask the humans behind Greenkeeper.


Your Greenkeeper Bot 🌴

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.