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

MetadataDB: use exceptions on put()

parent c2ee0f60
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@

int create_node(const std::string& path, const uid_t uid, const gid_t gid, mode_t mode);

int create_metadentry(const std::string& path, mode_t mode);
void create_metadentry(const std::string& path, mode_t mode);

int db_val_to_stat(const std::string& path, std::string db_val, struct stat& attr);

+1 −1
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ class MetadataDB {
        MetadataDB(const std::string& path);

        std::string get(const std::string& key) const;
        bool put(const std::string& key, const std::string& val);
        void put(const std::string& key, const std::string& val);
        void 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);
+4 −2
Original line number Diff line number Diff line
@@ -64,8 +64,10 @@ bool init_environment() {
    ADAFS_DATA->link_cnt_state(MDATA_USE_LINK_CNT);
    ADAFS_DATA->blocks_state(MDATA_USE_BLOCKS);
    // Create metadentry for root directory
    if (create_metadentry(ADAFS_DATA->mountdir(), S_IFDIR | 777) != 0) {
        ADAFS_DATA->spdlogger()->error("{}() Unable to write root metadentry to KV store.", __func__);
    try {
        create_metadentry(ADAFS_DATA->mountdir(), S_IFDIR | 777);
    } catch (const std::exception& e ) {
        ADAFS_DATA->spdlogger()->error("{}() Unable to write root metadentry to KV store: {}", __func__, e.what());
        return false;
    }
    ADAFS_DATA->spdlogger()->info("Startup successful. Daemon is ready.");
+2 −3
Original line number Diff line number Diff line
@@ -15,9 +15,8 @@ ino_t generate_inode_no() {
 * Creates metadata (if required) and dentry at the same time
 * @param path
 * @param mode
 * @return
 */
int create_metadentry(const std::string& path, mode_t mode) {
void create_metadentry(const std::string& path, mode_t mode) {

    Metadata md{path, mode};
    // update metadata object based on what metadata is needed
@@ -39,7 +38,7 @@ int create_metadentry(const std::string& path, mode_t mode) {
    if (ADAFS_DATA->inode_no_state())
        md.inode_no(generate_inode_no());

    return ADAFS_DATA->mdb()->put(path, md.serialize()) ? 0 : -1;
    ADAFS_DATA->mdb()->put(path, md.serialize());
}

std::string get_metadentry_str(const std::string& path) {
+2 −3
Original line number Diff line number Diff line
@@ -43,13 +43,12 @@ std::string MetadataDB::get(const std::string& key) const {
    return val;
}

bool MetadataDB::put(const std::string& key, const std::string& val) {
void MetadataDB::put(const std::string& key, const std::string& val) {
    auto cop = CreateOperand(val);
    auto s = db->Merge(write_opts, key, cop.serialize());
    if(!s.ok()){
        //TODO ADAFS_DATA->spdlogger()->error("Failed to create metadentry size. RDB error: [{}]", s.ToString());
        MetadataDB::throw_rdb_status_excpt(s);
    }
    return s.ok();
}

void MetadataDB::remove(const std::string& key) {
Loading