Unverified Commit a92831d2 authored by Tommaso Tocci's avatar Tommaso Tocci
Browse files

Wraps rocksDB ops into MetadataDB class

parent 80b15641
Loading
Loading
Loading
Loading
+3 −6
Original line number Original line Diff line number Diff line
@@ -110,14 +110,11 @@ if (NOT USE_OFI_VERBS AND NOT USE_OFI_PSM2 AND NOT USE_CCI AND NOT USE_BMI)
    add_definitions(-DRPC_PROTOCOL="bmi+tcp")
    add_definitions(-DRPC_PROTOCOL="bmi+tcp")
endif()
endif()


set(INCLUDE_DIR "${CMAKE_SOURCE_DIR}/include")

# define include directories that are relevant for all targets
# define include directories that are relevant for all targets
include_directories(
include_directories(
    include
    ${INCLUDE_DIR}
    ${ABT_INCLUDE_DIRS}
    ${ABT_SNOOZER_INCLUDE_DIRS}
    ${LIBEV_INCLUDE_DIRS}
    ${MERCURY_INCLUDE_DIRS}
    ${MARGO_INCLUDE_DIRS}
)
)


# Daemon
# Daemon
+0 −7
Original line number Original line Diff line number Diff line
@@ -11,13 +11,6 @@
// third party libs
// third party libs
#include <extern/spdlog/spdlog.h>
#include <extern/spdlog/spdlog.h>
#include <extern/spdlog/fmt/fmt.h>
#include <extern/spdlog/fmt/fmt.h>
// rocksdb
#include <rocksdb/db.h>
#include <rocksdb/slice.h>
#include <rocksdb/options.h>
#include <rocksdb/utilities/transaction.h>
#include <rocksdb/utilities/optimistic_transaction_db.h>
#include <rocksdb/write_batch.h>
// margo
// margo
extern "C" {
extern "C" {
#include <abt.h>
#include <abt.h>
+31 −0
Original line number Original line Diff line number Diff line
#ifndef IFS_METADATA_DB_HPP
#define IFS_METADATA_DB_HPP

#include <memory>
#include "rocksdb/db.h"

namespace rdb = rocksdb;


class MetadataDB {
    private:
        std::unique_ptr<rdb::DB> db;
        rdb::Options options;
        rdb::WriteOptions write_opts;
        std::string path;
        static void optimize_rocksdb_options(rdb::Options& options);

    public:
        MetadataDB(const std::string& path);

        bool get(const std::string& key, std::string& val);
        bool put(const std::string& key, const std::string& val);
        bool remove(const std::string& key);
        bool exists(const std::string& key);
        bool update(const std::string& old_key, const std::string& new_key, const std::string& val);
        bool update_size(const std::string& key, size_t size, off64_t offset, bool append);
        void iterate_all();
};


#endif //IFS_METADATA_DB_HPP
+8 −33
Original line number Original line Diff line number Diff line
@@ -4,6 +4,9 @@


#include <daemon/adafs_daemon.hpp>
#include <daemon/adafs_daemon.hpp>


/* Forward declarations */
class MetadataDB;

#include <unordered_map>
#include <unordered_map>
#include <functional> //std::hash
#include <functional> //std::hash


@@ -38,14 +41,8 @@ private:
    size_t host_size_;
    size_t host_size_;
    std::string rpc_port_;
    std::string rpc_port_;


    // rocksdb
    // Database
    std::shared_ptr<rocksdb::DB> rdb_;
    std::shared_ptr<MetadataDB> mdb_;
    std::shared_ptr<rocksdb::DB> rdb_crt_; // additional db instance (currently not used)
    std::shared_ptr<rocksdb::OptimisticTransactionDB> txn_rdb_;
    rocksdb::Options rdb_options_;
    rocksdb::OptimisticTransactionOptions txn_rdb_options_; // needed for snapshots
    rocksdb::WriteOptions rdb_write_options_;
    std::string rdb_path_;


    // configurable metadata
    // configurable metadata
    bool atime_state_;
    bool atime_state_;
@@ -116,33 +113,11 @@ public:


    void chunk_path(const std::string& chunk_path_);
    void chunk_path(const std::string& chunk_path_);


    const std::shared_ptr<rocksdb::DB>& rdb() const;
    const std::shared_ptr<MetadataDB>& mdb() const;

    void rdb(const std::shared_ptr<rocksdb::DB>& rdb);

    const rocksdb::Options& rdb_options() const;

    void rdb_options(const rocksdb::Options& rdb_options);

    const std::string& rdb_path() const;

    void rdb_path(const std::string& rdb_path);

    const std::shared_ptr<rocksdb::OptimisticTransactionDB>& txn_rdb() const;

    void txn_rdb(const std::shared_ptr<rocksdb::OptimisticTransactionDB>& tx_rdb);

    const std::shared_ptr<rocksdb::DB>& rdb_crt() const;

    void rdb_crt(const std::shared_ptr<rocksdb::DB>& rdb_crt);

    const rocksdb::OptimisticTransactionOptions& txn_rdb_options() const;

    void txn_rdb_options(const rocksdb::OptimisticTransactionOptions& tx_rdb_options);


    const rocksdb::WriteOptions& rdb_write_options() const;
    void mdb(const std::shared_ptr<MetadataDB>& mdb);


    void rdb_write_options(const rocksdb::WriteOptions& rdb_write_options);
    void close_mdb();


    const std::string& hosts_raw() const;
    const std::string& hosts_raw() const;


Loading