rust wrapper for rocksdb

Overview

rust-rocksdb

Build Status RocksDB build crates.io documentation license Gitter chat

GitHub commits (since latest release)

Requirements

  • Clang and LLVM

Contributing

Feedback and pull requests welcome! If a particular feature of RocksDB is important to you, please let me know by opening an issue, and I'll prioritize it.

Usage

This binding is statically linked with a specific version of RocksDB. If you want to build it yourself, make sure you've also cloned the RocksDB and compression submodules:

git submodule update --init --recursive

Compression Support

By default, support for the Snappy, LZ4, Zstd, Zlib, and Bzip2 compression is enabled through crate features. If support for all of these compression algorithms is not needed, default features can be disabled and specific compression algorithms can be enabled. For example, to enable only LZ4 compression support, make these changes to your Cargo.toml:

[dependencies.rocksdb]
default-features = false
features = ["lz4"]
Comments
  • [Question] Any chance bringing the forks together?

    [Question] Any chance bringing the forks together?

    Hey there!

    First, thanks for making this all happen, it helps me a lot in my daily work!

    Secondly: Is there a chance, that you/we can get all forks on one table and see how this can be beneficial for the project? For example: You and also https://github.com/ngaut/rust-rocksdb seem to have made pretty good progress, but the branches are too diverged and I lack of knowledge to merge them my self.

    So I try and shoutout to @ngaut, @BusyJay and @zhangjinpeng1987 to join the discussion if those two forks should be one again?

    Hope that helps somehow ...

    Cheers, Mario

    opened by xenji 26
  • feat:  export persist_period_sec option and background_threads

    feat: export persist_period_sec option and background_threads

    exported functions:

    • [x] set_low_priority_background_threads
    • [x] set_bottom_priority_background_threads
    • [x] env_default https://github.com/facebook/rocksdb/pull/7207
    • [x] set_stats_persist_period_sec

    close #447

    Export PR on RocksDB https://github.com/facebook/rocksdb/pull/7168

    opened by developerfred 19
  • Add support for opening a column family with options

    Add support for opening a column family with options

    I've hit an issue when I create a column family with a custom compare function and then try to re-open the same database. Since I can't pass in options to open_cf, my existing column familes are opened with the default options and I get an error.

    This adds a new DB::open_cf_descriptors method that allows passing in Options for each column family, and a new ColumnFamilyDescriptor type was added to contain the congfiguration for each column family.

    opened by garyttierney 19
  • Always use pinnable slice for get operations

    Always use pinnable slice for get operations

    Fixes #336 Fixes #337 Related #294

    As posted in #294, get_pinned has a huge performance advantage over get (current master)

    test get_large                 ... bench:     153,760 ns/iter (+/- 5,751)
    test get_pinned_large          ... bench:       3,147 ns/iter (+/- 203)
    test get_pinned_small          ... bench:         141 ns/iter (+/- 5)
    test get_pinned_to_owned_large ... bench:       6,804 ns/iter (+/- 485)
    test get_pinned_to_owned_small ... bench:         157 ns/iter (+/- 5)
    test get_small                 ... bench:         156 ns/iter (+/- 9)
    

    There are almost no case where you don't want a pinned get. So to make API simpler, we should always use pinned get and name it get. (#337 analyzes the control flow of current get, which internally uses pinned get as well). This PR updates get APIs to use pinned get, and deprecate get_pinned APIs.

    Technically it's a breaking change as it adds lifetime, but similar to #294, its effect should be fairly small. Users who want a 'static struct could simply do slice.as_ref().to_owned(), and even doing such a clone is better than current get in terms of performance.

    major 
    opened by nbdd0121 17
  • Wrap the GetUpdatesSince() function

    Wrap the GetUpdatesSince() function

    This function relies on the sequence number feature of RocksDB, and returns an iterator that yields every update made since that particular sequence. Since I saw how to add a function to rust-rocksdb earlier, I may submit a PR for this when the time comes (I'm not in a rush, just wanted to get this filed for now). Thanks for bringing RocksDB to Rust, it's been awesome.

    opened by nlfiedler 17
  • Remove allocations from SliceTransform

    Remove allocations from SliceTransform

    This adopts pingcap/rust-rocksdb's SliceTransform approach, which changes the signature of transform_fn from &[u8] -> Vec<u8> to &'a [u8] -> &'a [u8] while removing the manual malloc call we're currently doing in transform_callback.

    This significantly reduces memory usage, to the point where I wonder if this might actually be a memory leak if rocksdb isn't actually freeing the prefixes that we allocate in transform_callback. I might be wrong about this though—see the attached heap dump below.

    Breaking change

    The main use case for slice transforms is to create prefixes from existing keys, which you don't really need allocations for. However, in theory, the existing API could be used to create prefixes from completely different keys than what's passed in:

    fn transform(k: &[u8]) -> Vec<u8> {
        "aa".as_bytes().to_vec()
    }
    

    This wouldn't be possible anymore with the API proposed in this PR.

    Alternative API

    PingCAP implements slice transforms as a trait where the transform function has a mutable receiver. This is a more flexible API in my opinion, but it would make the upgrade lift even more significant than what this PR already proposes. What do you think?

    Heap dump

    Test program: https://gist.github.com/ekmartin/e96275f09874a13a578faf0fbd2d0f6d Mastiff dump with master: https://gist.github.com/ekmartin/41f3c4eb56ccfb3caa26191605d8097b Mastiff dump with this branch: https://gist.github.com/ekmartin/e0f47e44cb9d0142e09a87f8de8e949b

    opened by ekmartin 16
  • Move the project to an organization

    Move the project to an organization

    @spacejam, @ekmartin

    Thank you for putting together and open-sourcing Rust RocksDB project. We at Exonum have been using it for more than a year and are interested in its further development.

    Our team is grateful to you for reviewing and integrating our patches so far, however, it seems to us the project has ceased to be your top priority recently. For this reason, I suggest moving it under a new organization “rust-rocksdb” and giving more people permission to integrate changes and publish new versions of it on crates.io. In this way the project can evolve, enlarge its community, acquire better maintenance and improve in quality.

    We understand it takes efforts maintaining an open-source project and would like to offer help with that. As you may know, members of Exonum team — @DarkEld3r, @ozkriff — have contributed various fixes and improvements to Rust RocksDB. Our team has expertise in running open-source projects in Rust, Exonum being the most prominent example.

    Please consider further development of your project in a modified manner as suggested above and let us know your thoughts on the matter. You are free to contact our team members or me directly for discussion.

    CC recent contributors: @kaedroho @alexreg @dgrnbrg @derekdreery

    opened by aleksuss 15
  • streamlining DB api with regard to CFs

    streamlining DB api with regard to CFs

    This is a bit of a follow-on from #144 but is different enough in scope

    The native RocksDB column family API is a bit clunky and seems like an after thought. If users of rust-rocksdb prefer it this way, then that's fine, you can stop reading now.

    If you're still with me, I am thinking that we can remove all PIGMED operations and remove the *_cf. The way we do this is make ColumnFamily the source for PIGMED operations. Or, we can shorten "ColumnFamily" to "Table" . So the API would look something like :

    DB::open() -> DBResult   //which would enumerate and use all CFs by default
    DB.get_table(cf_name: string) -> TableResult . // it would fetch the named table if it exists
    DB.get_default_table() -> TableResult // if the user is living in the dark ages, use the default table
    
    Table.put(key, val) 
    Table.get(key)...
    ...
    

    I have a crate rocks-cache that implements this API and it works quite nicely. We've been using it at work for a bit.

    enhancement 
    opened by rrichardson 15
  • Make set_iterate_upper_bound safe

    Make set_iterate_upper_bound safe

    This function is probably the only unsafe public API of this library. The unsafe version is not super easy to use since it requires the user to carefully make sure the buffer is alive. For example, the following usage would be incorrect:

    let mut opts = ReadOptions::default();
    let upper_bound = b"k4".to_vec();
    unsafe {
        opts.set_iterate_upper_bound(upper_bound);
    }
    

    A relatively easy way to make it safe is to store the buffer inside ReadOptions and store ReadOptions inside the iterator, so the buffer will not be dropped when the iterator is being used.

    Fixes https://github.com/rust-rocksdb/rust-rocksdb/issues/299 Fixes https://github.com/rust-rocksdb/rust-rocksdb/issues/329

    opened by wqfish 14
  • Make iterator not copy

    Make iterator not copy

    Part of #69

    This pulls in https://github.com/ngaut/rust-rocksdb/pull/9. I've made changes to how the lifetime is defined on DBIterator and tweaked the tests to make them work without copying.

    opened by kaedroho 13
  • Implement static linking

    Implement static linking

    Part of #69

    Motivation

    Currently, RocksDB is linked dynamically. There's a few drawbacks to this approach:

    1. End users of applications built using this wrapper must install exactly the same version of RocksDB that the application was built with. RocksDB is not included in many package managers at the moment so this either needs to be built from source or provided by the application author.
    2. There's a problem with tcmalloc (used by RocksDB) clashing with jemalloc (used by Rust) that causes random segfaults
    3. A developer using rust-rocksdb can choose which version of RocksDB to link with. This makes maintainability of rust-rocksdb more difficult as it must support mulltiple versions of RocksDB. This also makes it difficult to implement features that only exist a new version of RocksDB if it still has to support older versions.

    These issues can be solved by statically linking RocksDB instead.

    1. RocksDB is compiled in to the applications binary. End users don't need to install anything.
    2. We can now control how RocksDB is built to make sure it doesn't pull in tcmalloc
    3. Only one version of RocksDB can be used by the wrapper. This version is controlled the wrappers authors.

    Implementation

    A new sub crate has been added to this repo rocksdb-sys. This includes the FFI bindings and a build script for RocksDB/Snappy. It is based on the work in the Ethcore fork of this repo (https://github.com/ethcore/rust-rocksdb) which itself is based on the rocksdb-sys crate (https://github.com/jsgf/rocksdb-sys)

    The build script is written in Rust and uses gcc-rs to talk to the the C++ compiler. It works on Windows (tested with VC++ 2015) and Linux.

    RocksDB and Snappy's source code are pulled in with git submodules. This means that developers of rust-rocksdb will need to run git submodule init and git submodule update before developing. This does not affect users of the crate as the submodules are bundled within the crate at the point of packaging it. Users who directly link to the git repo in their cargo dependencies will take a little longer on the first build, submodules are handled automatically by cargo and are cached as well.

    Updating RocksDB

    RocksDB is currently pinned to the latest commit of the 4.13 maintenance branch.

    Instead of using the makefile, we pass a list of .cc files in RocksDB to gcc-rs. The makefile is not used so that we can perform the build for both Linux and Windows platforms from the same build script.

    The build script loads a list of .cc files from a text file rocksdb_lib_sources.txt. This is generated using a Makefile (that calls RocksDB's makefile to get the sources list) and committed into the git repo.

    The process for updating RocksDB is as follows:

    • cd into rocksdb-sys/rocksdb.
    • git checkout the commit hash of the new version
    • cd into rocksdb-sys
    • run make gen_lib_sources
    • Change the commit sha and date in rocksdb-sys/build_version.cc (it would be nice to automate this in build.rs)
    • Test and commit those changes into git

    There's a chance that they may change the build process/makefile causing the above steps to not work. I think it would be best to tackle these issues as they come; I don't expect they will be very common.

    Alternative solutions

    Pulling in rocksdb source code with git submodules

    I chose to use git-submodules, despite concerns about the impact on build time when having to download the history of RocksDB.

    • RocksDB will be bundled in the crate that is uploaded to crates.io so this won't afect most users
    • Users who do reference the git repo from their Cargo.toml will have to download the RocksDB repo via the submodule, but this only happens on the first build as it is cached thereafter
    • It takes less than a minute for me to download (10Mbit connection)
    • I'm against making decisions based on performance concerns before actually trying it out

    Alternative solution 1: Bundle the RocksDB source code in the repo

    This is what the ethcore fork does

    This would be my second choice if we find git-submodules to be a pain. I wanted to avoid this for the following reasons:

    • Avoid bloat of this repo over time
    • It's very tempting to make changes to the bundled version of RocksDB, but this will make maintainability a pain

    Alternative solution 2: Download RocksDB during compile time

    This is what the ngaut fork does.

    I think this solution is horrible. You can find my thoughts about it in this comment: https://github.com/spacejam/rust-rocksdb/issues/69#issuecomment-256478979

    Compiling RocksDB using a build.rs file

    I decided to go with this as we can assume that all the platforms this project will be built on will have the ability to compile and run Rust code. The only dependency is a C++ compiler.

    Alternative solution 1: Call the makefile from build.rs

    I think this would be fine for Linux/Mac support but we will need something separate for Windows which uses CMake/MSBuild.

    Alternative solution 2: Use a bash script instead of build.rs

    This is an extension of "solution 1". It is what the ngaut fork does. I didn't like this for the following reasons:

    • We would need to implement a separate build script for Windows
    • We can already do a lot of the things that bash can do in Rust. But in a cross-platform way
    opened by kaedroho 13
  • Add drop_cf function to TransactionDB

    Add drop_cf function to TransactionDB

    Since TransactionDB is a subclass of StackableDB which is subclass of DB, there's no reason for the drop_cf function should be callable directly from TransactionDB.

    The core of this change is a cast in transaction_db.rs:

    self.inner as *mut ffi::rocksdb_t,
    

    The PR also includes a test, but that's mostly copy-pasted from a similar test on DB, with the addition of testing for error when opening a previously deleted column family to make sure that the drop was actually successful.

    opened by bothra90 1
  • segfaults and aborts with async_std

    segfaults and aborts with async_std

    When using rust-rocksdb with async_std and somehow keeping a reference to the DB inside a detached task, you can get SIGSEGV and SIGABRT.

    A small reproducer:

    #[async_std::test]
    async fn db_fun() {
        let path = Path::new("/tmp/node01");
        if path.exists() {
            std::fs::remove_dir_all(path).expect("remove to succeed");
        }
        let mut db_opts = rocksdb::Options::default();
        db_opts.create_missing_column_families(true);
        db_opts.create_if_missing(true);
    
        let cf = "foo";
        let db = rocksdb::DB::open_cf(&db_opts, path, [cf]).expect("open to succeed");
        async_std::task::spawn(async move {
            let res = db
                .get_cf(&db.cf_handle(cf).expect("cf to be there"), "key")
                .expect("ok");
            assert!(res.is_none());
            async_std::task::sleep(std::time::Duration::from_millis(100)).await;
        });
    }
    

    Lots of variations of this succeed. With tokio for example, it doesn't occur. With detached threads, this doesn't occur. It seems to boil down to the static global PeriodicWorkScheduler being destroyed at the point where the detached task gets dropped.

    Here is the field in question, it points to a static PeriodicWorkScheduler: https://github.com/facebook/rocksdb/blob/e656fa3d196c5b4c8a77255db1e6cd36a7ded348/db/db_impl/db_impl.h#L2532

    Setting the field periodic_work_scheduler_ to nullptr after this line: https://github.com/facebook/rocksdb/blob/e656fa3d196c5b4c8a77255db1e6cd36a7ded348/db/db_impl/db_impl.cc#L484 fixes the issue.

    It could be the order of static variables being cleaned up is a problem. The executor of async_std is kept inside a static var. Maybe the global PeriodicWorkScheduler is destroyed first?

    It also seems to be fixed in rocksdb 7.7.0 and above, as it doesn't use a static PeriodicTaskScheduler anymore (although this has a static Timer in it).

    So a big christmas wish for us would be an upgrade to rocksdb 7.7.3 :santa: :pray: :christmas_tree:

    opened by mfelsche 4
  • error: failed to run custom build command for librocksdb-sys in compaction_job

    error: failed to run custom build command for librocksdb-sys in compaction_job

    I got the below error when run cargo build --release. How can I fix it? cargo build -v --release

    The following warnings were emitted during compilation:

    warning: Assembler messages: warning: Error: can't open /tmp/ccSCYXdI.s for reading: No such file or directory

    error: failed to run custom build command for librocksdb-sys v0.8.0+7.4.4

    Caused by: process didn't exit successfully: /home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-aabd480a2f3b76e0/build-script-build (exit status: 1) --- stdout cargo:rerun-if-changed=rocksdb/ TARGET = Some("x86_64-unknown-linux-gnu") OPT_LEVEL = Some("3") HOST = Some("x86_64-unknown-linux-gnu") cargo:rerun-if-env-changed=CXX_x86_64-unknown-linux-gnu CXX_x86_64-unknown-linux-gnu = None cargo:rerun-if-env-changed=CXX_x86_64_unknown_linux_gnu CXX_x86_64_unknown_linux_gnu = None cargo:rerun-if-env-changed=HOST_CXX HOST_CXX = None cargo:rerun-if-env-changed=CXX CXX = None cargo:rerun-if-env-changed=CXXFLAGS_x86_64-unknown-linux-gnu CXXFLAGS_x86_64-unknown-linux-gnu = None cargo:rerun-if-env-changed=CXXFLAGS_x86_64_unknown_linux_gnu CXXFLAGS_x86_64_unknown_linux_gnu = None cargo:rerun-if-env-changed=HOST_CXXFLAGS HOST_CXXFLAGS = None cargo:rerun-if-env-changed=CXXFLAGS CXXFLAGS = None cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS CRATE_CC_NO_DEFAULTS = None DEBUG = Some("false") CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2") cargo:rerun-if-env-changed=CXX_x86_64-unknown-linux-gnu CXX_x86_64-unknown-linux-gnu = None cargo:rerun-if-env-changed=CXX_x86_64_unknown_linux_gnu CXX_x86_64_unknown_linux_gnu = None cargo:rerun-if-env-changed=HOST_CXX HOST_CXX = None cargo:rerun-if-env-changed=CXX CXX = None cargo:rerun-if-env-changed=CXXFLAGS_x86_64-unknown-linux-gnu CXXFLAGS_x86_64-unknown-linux-gnu = None cargo:rerun-if-env-changed=CXXFLAGS_x86_64_unknown_linux_gnu CXXFLAGS_x86_64_unknown_linux_gnu = None cargo:rerun-if-env-changed=HOST_CXXFLAGS HOST_CXXFLAGS = None cargo:rerun-if-env-changed=CXXFLAGS CXXFLAGS = None cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS CRATE_CC_NO_DEFAULTS = None CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2") cargo:rerun-if-env-changed=CXX_x86_64-unknown-linux-gnu CXX_x86_64-unknown-linux-gnu = None cargo:rerun-if-env-changed=CXX_x86_64_unknown_linux_gnu CXX_x86_64_unknown_linux_gnu = None cargo:rerun-if-env-changed=HOST_CXX HOST_CXX = None cargo:rerun-if-env-changed=CXX CXX = None cargo:rerun-if-env-changed=CXXFLAGS_x86_64-unknown-linux-gnu CXXFLAGS_x86_64-unknown-linux-gnu = None cargo:rerun-if-env-changed=CXXFLAGS_x86_64_unknown_linux_gnu CXXFLAGS_x86_64_unknown_linux_gnu = None cargo:rerun-if-env-changed=HOST_CXXFLAGS HOST_CXXFLAGS = None cargo:rerun-if-env-changed=CXXFLAGS CXXFLAGS = None cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS CRATE_CC_NO_DEFAULTS = None CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2") running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/cache/cache_reservation_manager.o" "-c" "rocksdb/cache/cache_reservation_manager.cc" running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/cache/cache.o" "-c" "rocksdb/cache/cache.cc" running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/cache/cache_key.o" "-c" "rocksdb/cache/cache_key.cc" running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/cache/cache_entry_roles.o" "-c" "rocksdb/cache/cache_entry_roles.cc" exit status: 0 running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/cache/clock_cache.o" "-c" "rocksdb/cache/clock_cache.cc" exit status: 0 running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/cache/fast_lru_cache.o" "-c" "rocksdb/cache/fast_lru_cache.cc" exit status: 0 running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/cache/lru_cache.o" "-c" "rocksdb/cache/lru_cache.cc" exit status: 0 running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/cache/compressed_secondary_cache.o" "-c" "rocksdb/cache/compressed_secondary_cache.cc" exit status: 0 running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/cache/sharded_cache.o" "-c" "rocksdb/cache/sharded_cache.cc" exit status: 0 running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/db/arena_wrapped_db_iter.o" "-c" "rocksdb/db/arena_wrapped_db_iter.cc" exit status: 0 running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/db/blob/blob_fetcher.o" "-c" "rocksdb/db/blob/blob_fetcher.cc" exit status: 0 running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/db/blob/blob_file_addition.o" "-c" "rocksdb/db/blob/blob_file_addition.cc" exit status: 0 running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/db/blob/blob_file_builder.o" "-c" "rocksdb/db/blob/blob_file_builder.cc" exit status: 0 running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/db/blob/blob_file_cache.o" "-c" "rocksdb/db/blob/blob_file_cache.cc" exit status: 0 running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/db/blob/blob_file_garbage.o" "-c" "rocksdb/db/blob/blob_file_garbage.cc" exit status: 0 running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/db/blob/blob_file_meta.o" "-c" "rocksdb/db/blob/blob_file_meta.cc" exit status: 0 running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/db/blob/blob_file_reader.o" "-c" "rocksdb/db/blob/blob_file_reader.cc" exit status: 0 running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/db/blob/blob_garbage_meter.o" "-c" "rocksdb/db/blob/blob_garbage_meter.cc" exit status: 0 running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/db/blob/blob_log_format.o" "-c" "rocksdb/db/blob/blob_log_format.cc" exit status: 0 running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/db/blob/blob_log_sequential_reader.o" "-c" "rocksdb/db/blob/blob_log_sequential_reader.cc" exit status: 0 running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/db/blob/blob_log_writer.o" "-c" "rocksdb/db/blob/blob_log_writer.cc" exit status: 0 running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/db/blob/blob_source.o" "-c" "rocksdb/db/blob/blob_source.cc" exit status: 0 running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/db/blob/prefetch_buffer_collection.o" "-c" "rocksdb/db/blob/prefetch_buffer_collection.cc" exit status: 0 running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/db/builder.o" "-c" "rocksdb/db/builder.cc" exit status: 0

    cargo:warning=Assembler messages: cargo:warning=Error: can't open /tmp/ccSCYXdI.s for reading: No such file or directory exit status: 1 running: "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/db/db_impl/db_impl_compaction_flush.o" "-c" "rocksdb/db/db_impl/db_impl_compaction_flush.cc" exit status: 0 exit status: 0 exit status: 0 exit status: 0

    --- stderr

    error occurred: Command "c++" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64" "-I" "rocksdb/include/" "-I" "rocksdb/" "-I" "rocksdb/third-party/gtest-1.8.1/fused-src/" "-I" "snappy/" "-I" "." "-Wall" "-Wextra" "-std=c++17" "-Wsign-compare" "-Wshadow" "-Wno-unused-parameter" "-Wno-unused-variable" "-Woverloaded-virtual" "-Wnon-virtual-dtor" "-Wno-missing-field-initializers" "-Wno-strict-aliasing" "-Wno-invalid-offsetof" "-msse2" "-std=c++17" "-DSNAPPY=1" "-DNDEBUG=1" "-DOS_LINUX" "-DROCKSDB_PLATFORM_POSIX" "-DROCKSDB_LIB_IO_POSIX" "-DROCKSDB_SUPPORT_THREAD_LOCAL" "-DWITH_JEMALLOC=ON" "-DHAVE_UINT128_EXTENSION=1" "-o" "/home/kayvan/developer/projects/rust-projects/substrate-node-template/target/release/build/librocksdb-sys-a13da7712a385c02/out/rocksdb/db/compaction/compaction_job.o" "-c" "rocksdb/db/compaction/compaction_job.cc" with args "c++" did not execute successfully (status code exit status: 1).

    opened by kayvan-source 0
  • lack of 'rocksdb_options_add_compact_on_deletion_collector_factory'

    lack of 'rocksdb_options_add_compact_on_deletion_collector_factory'

    hi,

    I have a situation: 'seek' after many separate 'delete', the performance of 'seek' degrades very obvious. I did some search, there are some ways may help with the problem: 1、use 'deleterange' instead of many separate 'delete', this can help reducing "delete tombstone" but can only be used at some specific scenario, mine is not fit 2、'compact' periodicaly, it helps getting a relatively stable performance, but may cause some impact on my other scenarios. 3、use a 'CompactOnDeletionCollectorFactory', it triggers compaction when the ratio of delete reachs the specified value, but it could not be found and set at the lastest version.

    so, is there any plan to add the interface?

    opened by AdjoiningCat 0
  • Having issue building on Debian Sid

    Having issue building on Debian Sid

    Everytime I try to build a Rust project that uses rocksdb I get the same build errors:

       Compiling librocksdb-sys v0.8.0+7.4.4
    error: failed to run custom build command for `librocksdb-sys v0.8.0+7.4.4`
    
    Caused by:
      process didn't exit successfully: `/home/brandon/sandbox/project/target/debug/build/librocksdb-sys-9c58c99f52a8c5ef/build-script-build` (exit status: 101)
      --- stderr
      thread 'main' panicked at '"enum_(unnamed_at_rocksdb/include/rocksdb/c_h_981_1)" is not a valid Ident', /home/brandon/.cargo/registry/src/github.com-1ecc6299db9ec823/proc-macro2-1.0.47/src/fallback.rs:756:9
      note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    
    

    First identified when trying to build substrate and posted here https://substrate.stackexchange.com/questions/6088/unable-to-compile-substrate-template-error-failed-to-run-custom-build-command

    I do have clang and llvm installed. I have even compiled clang + llvm from sources and installed them on the computer in an attempt to make sure the build system should work. I have the librocksdb-dev package installed as well. I am running on Debian Sid. I have entirely uninstalled librocksdb-dev llvm clang and even rust and then reinstalled them. I am unsure how to continue.

    The output of rustup +nightly show:

    ➜  ~ rustup +nightly show
    Default host: x86_64-unknown-linux-gnu
    rustup home:  /home/brandon/.rustup
    
    installed toolchains
    --------------------
    
    stable-x86_64-unknown-linux-gnu (default)
    nightly-x86_64-unknown-linux-gnu
    
    installed targets for active toolchain
    --------------------------------------
    
    wasm32-unknown-unknown
    x86_64-unknown-linux-gnu
    
    active toolchain
    ----------------
    
    nightly-x86_64-unknown-linux-gnu (overridden by +toolchain on the command line)
    rustc 1.67.0-nightly (c97b539e4 2022-11-30)
    
    
    opened by Brando753 10
  • ARM Android Build Fails

    ARM Android Build Fails

    When trying to build rocksdb for android arm64-v8a (I'm using NDK 25, API 33), I am able to get everything to compile but at link time I seem to get a handful of errors like

              ld: error: undefined symbol: __aarch64_swp4_acq
              >>> referenced by atomic:988 (/home/cavey/rust-android-example/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/atomic:988)
              >>>               thread_status_updater.o:(rocksdb::ThreadStatus::OperationStage std::__ndk1::__cxx_atomic_exchange<rocksdb::ThreadStatus::OperationStage>(std::__ndk1::__cxx_atomic_base_impl<rocksdb::ThreadStatus::OperationStage>*, rocksdb::ThreadStatus::OperationStage, std::__ndk1::memory_order)) in archive /home/cavey/android_atomics/target/aarch64-linux-android/debug/deps/liblibrocksdb_sys-986934185f1854e3.rlib
              
              ld: error: undefined symbol: __aarch64_swp4_rel
              >>> referenced by atomic:988 (/home/cavey/rust-android-example/android-ndk-r25b/toolchains/llvm/prebuilt/linux-x86_64/bin/../sysroot/usr/include/c++/v1/atomic:988)
              >>>               thread_status_updater.o:(rocksdb::ThreadStatus::OperationStage std::__ndk1::__cxx_atomic_exchange<rocksdb::ThreadStatus::OperationStage>(std::__ndk1::__cxx_atomic_base_impl<rocksdb::ThreadStatus::OperationStage>*, rocksdb::ThreadStatus::OperationStage, std::__ndk1::memory_order)) in archive /home/cavey/android_atomics/target/aarch64-linux-android/debug/deps/liblibrocksdb_sys-986934185f1854e3.rlib
    

    all related to the use of atomics. I'm able to build successfully for the x86_64 android target, so it's not an issue with android across the board, but I really need the arm64-v8a target.

    opened by cavemanloverboy 0
Releases(v0.19.0)
  • v0.19.0(Aug 5, 2022)

    What's Changed

    • Add support for building with io_uring on Linux (parazyd)
    • Change iterators to return Result (mina86)
    • Support RocksDB transaction (yiyuanliu)
    • Avoid pulling in dependencies via static feature flag (niklasf)
    • Bump rocksdb to 7.4.4 (niklasf)
    • Bump tikv-jemalloc-sys to 0.5 (niklasf)
    • Update set_use_fsync comment (nazar-pc)
    • Introduce ReadOptions::set_iterate_range and PrefixRange (mina86)
    • Bump rocksdb to 7.4.3 (aleksuss)
    • Don’t hold onto ReadOptions.inner when iterating (mina86)
    • Bump zstd-sys from 1.6 to 2.0 (slightknack)
    • Enable a building on the iOS platform (dignifiedquire)
    • Add DBRawIteratorWithThreadMode::item method (mina86)
    • Use NonNull in DBRawIteratorWithThreadMode (mina86)
    • Tiny refactoring including fix for UB (niklasf)
    • Add batched version MultiGet API (yhchiang-sol)
    • Upgrade to rocksdb v7.3.1 (yhchiang-sol)
    • Consistently use ffi_util::to_cpath to convert Path to CString (mina86)
    • Convert properties to &CStr (mina86)
    • Allow passing &CStr arguments (mina86)
    • Fix memory leak when reading properties and avoid memory allocation (mina86)
    • Fix Windows UTF-8 build flag (rajivshah3)
    • Use more target features to build librocksdb-sys (niklasf)
    • Fix bz_internal_error symbol multiply defined (nanpuyue)
    • Bump rocksdb to 7.1.2 (dignifiedquire)
    • Add BlobDB options (dignifiedquire)
    • Add snapshot PinnableSlice based API (zheland)

    New Contributors

    • @zheland made their first contribution in https://github.com/rust-rocksdb/rust-rocksdb/pull/606
    • @dignifiedquire made their first contribution in https://github.com/rust-rocksdb/rust-rocksdb/pull/610
    • @guerinoni made their first contribution in https://github.com/rust-rocksdb/rust-rocksdb/pull/627
    • @nanpuyue made their first contribution in https://github.com/rust-rocksdb/rust-rocksdb/pull/628
    • @yhchiang-sol made their first contribution in https://github.com/rust-rocksdb/rust-rocksdb/pull/645
    • @slightknack made their first contribution in https://github.com/rust-rocksdb/rust-rocksdb/pull/651
    • @nazar-pc made their first contribution in https://github.com/rust-rocksdb/rust-rocksdb/pull/659
    • @yiyuanliu made their first contribution in https://github.com/rust-rocksdb/rust-rocksdb/pull/565
    • @parazyd made their first contribution in https://github.com/rust-rocksdb/rust-rocksdb/pull/621

    Full Changelog: https://github.com/rust-rocksdb/rust-rocksdb/compare/v0.18.0...v0.19.0

    Source code(tar.gz)
    Source code(zip)
  • v0.18.0(Feb 8, 2022)

    What's Changed

    • Update RocksDB to v6.22.1 by @duarten in https://github.com/rust-rocksdb/rust-rocksdb/pull/540
    • Add WAL flush API by @duarten in https://github.com/rust-rocksdb/rust-rocksdb/pull/541
    • Fixes suggested by clippy by @aleksuss in https://github.com/rust-rocksdb/rust-rocksdb/pull/547
    • Support building RocksDB with jemalloc by @akrylysov in https://github.com/rust-rocksdb/rust-rocksdb/pull/542
    • Support UTF-8 file paths on Windows by @rajivshah3 in https://github.com/rust-rocksdb/rust-rocksdb/pull/551
    • Replace jemalloc by @0xdeafbeef in https://github.com/rust-rocksdb/rust-rocksdb/pull/554
    • options: add set_info_log_level to control log verbosity by @tkintscher in https://github.com/rust-rocksdb/rust-rocksdb/pull/553
    • add feature flag for runtime type information, and metadata for locating library and sources by @jgraettinger in https://github.com/rust-rocksdb/rust-rocksdb/pull/544
    • Derive serde::{Serialize, Deserialize} for configuration enums by @thibault-martinez in https://github.com/rust-rocksdb/rust-rocksdb/pull/556
    • Add merge operands iterator by @0xdeafbeef in https://github.com/rust-rocksdb/rust-rocksdb/pull/559
    • Support restoring from a specified backup by @GoldenLeaves in https://github.com/rust-rocksdb/rust-rocksdb/pull/561
    • Open DB with read-only access and with column family descriptors by @nikurt in https://github.com/rust-rocksdb/rust-rocksdb/pull/569
    • Update compression dependencies by @akrylysov in https://github.com/rust-rocksdb/rust-rocksdb/pull/570
    • Use *-sys crates where possible by @Dr-Emann in https://github.com/rust-rocksdb/rust-rocksdb/pull/555
    • Fix CI builds by @aleksuss in https://github.com/rust-rocksdb/rust-rocksdb/pull/582
    • fix ReadOptions method typo by @Congyuwang in https://github.com/rust-rocksdb/rust-rocksdb/pull/578
    • Optimize multi_get_cf_opt() to use size hint by @niklasf in https://github.com/rust-rocksdb/rust-rocksdb/pull/579
    • multi_get support by @olegnn in https://github.com/rust-rocksdb/rust-rocksdb/pull/572
    • Optimize non-overlapping copy in raw_data by @niklasf in https://github.com/rust-rocksdb/rust-rocksdb/pull/583
    • Replace mem::transmute with narrower conversions by @niklasf in https://github.com/rust-rocksdb/rust-rocksdb/pull/584
    • Make CacheWrapper and EnvWrapper Send and Sync by @aleksuss in https://github.com/rust-rocksdb/rust-rocksdb/pull/586
    • Add constants for all supported properties by @steviez in https://github.com/rust-rocksdb/rust-rocksdb/pull/589
    • Add BlockBasedOptions::set_whole_key_filtering() by @niklasf in https://github.com/rust-rocksdb/rust-rocksdb/pull/594
    • Support configuring bottom-most compression level by @mina86 in https://github.com/rust-rocksdb/rust-rocksdb/pull/590
    • Fix theoretical UB while transmuting Arc by @niklasf in https://github.com/rust-rocksdb/rust-rocksdb/pull/588
    • fixup! Add constants for all supported properties (#589) by @steviez in https://github.com/rust-rocksdb/rust-rocksdb/pull/599
    • Upgrade to RocksDB 6.28.2 by @akrylysov in https://github.com/rust-rocksdb/rust-rocksdb/pull/600
    • Make Ribbon filters available by @niklasf in https://github.com/rust-rocksdb/rust-rocksdb/pull/595
    • Add open_cf_descriptor methods for Seoncdary and ReadOnly AccessType by @steviez in https://github.com/rust-rocksdb/rust-rocksdb/pull/604
    Source code(tar.gz)
    Source code(zip)
  • v0.17.0(Jul 22, 2021)

  • v0.16.0(Apr 18, 2021)

  • v0.15.0(Aug 25, 2020)

  • v0.14.0(Apr 22, 2020)

  • v0.13.0(Nov 14, 2019)

  • v0.12.3(Jul 22, 2019)

  • v0.12.1(Mar 27, 2019)

  • v0.12.0(Mar 10, 2019)

  • v0.11.0(Jan 10, 2019)

  • v0.10.1(Nov 30, 2018)

Owner
null
UnQLite wrapper 1.0 is avaliable for Rust

unqlite A high-level UnQLite database engine wrapper. NOTE: Some of the documents is stolen from UnQLite Official Website. What is UnQLite? UnQLite is

Huo Linhe 101 Dec 12, 2022
An API Wrapper for https://paste.myst.rs written in rust

PasteMyst.RS pastemyst-rs is an api wrapper for pastemyst written in Rust. ⚠ This package is under development ⚠ Sample usage To get a paste from past

ANF Studios 14 Nov 28, 2021
duckdb-rs is an ergonomic wrapper for using duckdb from Rust.

duckdb-rs duckdb-rs is an ergonomic wrapper for using duckdb from Rust. It attempts to expose an interface similar to rusqlite. Acctually the initial

Wang Fenjin 126 Dec 30, 2022
ODBC wrapper for safe idiomatic Rust

ODBC wrapper for safe idiomatic Rust Library for writing ODBC applications in Rust. If you're looking for raw ODBC FFI bindings check odbc-safe and od

Konstantin V. Salikhov 91 Dec 10, 2022
Rusqlite is an ergonomic wrapper for using SQLite from Rust

Rusqlite Rusqlite is an ergonomic wrapper for using SQLite from Rust. It attempts to expose an interface similar to rust-postgres. use rusqlite::{para

Rusqlite 1.9k Jan 7, 2023
Thin wrapper around [`tokio::process`] to make it streamable

process-stream Wraps tokio::process::Command to future::stream. Install process-stream = "0.2.2" Example usage: From Vec<String> or Vec<&str> use proc

null 4 Jun 25, 2022
Postgres Foreign Data Wrapper for Clerk.com API

Pre-requisites Postgres-15 Rust pgrx Getting Started To run the program locally, clone the repository git clone https://github.com/tembo-io/clerk_fdw.

Tembo 3 Aug 22, 2023
🧰 The Rust SQL Toolkit. An async, pure Rust SQL crate featuring compile-time checked queries without a DSL. Supports PostgreSQL, MySQL, SQLite, and MSSQL.

SQLx ?? The Rust SQL Toolkit Install | Usage | Docs Built with ❤️ by The LaunchBadge team SQLx is an async, pure Rust† SQL crate featuring compile-tim

launchbadge 7.6k Dec 31, 2022
Redis re-implemented in Rust.

rsedis Redis re-implemented in Rust. Why? To learn Rust. Use Cases rsedis does not rely on UNIX-specific features. Windows users can run it as a repla

Sebastian Waisbrot 1.6k Jan 6, 2023
A generic connection pool for Rust

r2d2 A generic connection pool for Rust. Documentation Opening a new database connection every time one is needed is both inefficient and can lead to

Steven Fackler 1.2k Jan 8, 2023
An ArangoDB driver for Rust

Rincon Rincon is an ArangoDB driver for Rust. It enables low level access to ArangoDB in a typesafe and Rust idiomatic manner. The name Rincon is deri

Innoave 35 Mar 21, 2021
Cassandra DB native client written in Rust language. Find 1.x versions on https://github.com/AlexPikalov/cdrs/tree/v.1.x Looking for an async version? - Check WIP https://github.com/AlexPikalov/cdrs-async

CDRS CDRS is looking for maintainers CDRS is Apache Cassandra driver written in pure Rust. ?? Looking for an async version? async-std https://github.c

Alex Pikalov 338 Jan 1, 2023
Cassandra (CQL) driver for Rust, using the DataStax C/C++ driver under the covers.

cassandra-cpp This is a maintained Rust project that exposes the DataStax cpp driver at https://github.com/datastax/cpp-driver/ in a somewhat-sane cra

null 93 Jan 7, 2023
CouchDB client-side library for the Rust programming language

Chill Chill is a client-side CouchDB library for the Rust programming language, available on crates.io. It targets Rust Stable. Chill's three chief de

null 35 Jun 26, 2022
Sofa - CouchDB for Rust

Sofa - CouchDB for Rust Documentation Here: http://docs.rs/sofa Installation [dependencies] sofa = "0.6" Description This crate is an interface to Cou

66 Origin 40 Feb 11, 2022
⚡🦀 🧨 make your rust types fit DynamoDB and visa versa

?? ?? dynomite dynomite makes DynamoDB fit your types (and visa versa) Overview Goals ⚡ make writing dynamodb applications in rust a productive experi

Doug Tangren 197 Dec 15, 2022
A Rust client for the ElasticSearch REST API

rs-es Introduction An ElasticSearch client for Rust via the REST API. Targetting ElasticSearch 2.0 and higher. Other clients For later versions of Ela

Ben Ashford 218 Dec 27, 2022
An Elasticsearch REST API client for Rust

elastic elastic is an efficient, modular API client for Elasticsearch written in Rust. The API is targeting the Elastic Stack 7.x. elastic provides st

null 249 Oct 18, 2022
An etcd client library for Rust.

etcd An etcd client library for Rust. etcd on crates.io Documentation for the latest crates.io release Running the tests Install Docker and Docker Com

Jimmy Cuadra 138 Dec 27, 2022