#include #include "glog/logging.h" #include "database/graph_db.hpp" #include "database/graph_db_accessor.hpp" #include "database/storage_gc_single_node.hpp" #include "durability/paths.hpp" #include "durability/recovery.hpp" #include "durability/snapshooter.hpp" #include "storage/concurrent_id_mapper_single_node.hpp" #include "transactions/engine_single_node.hpp" #include "utils/flag_validation.hpp" using namespace storage; namespace database { namespace impl { class PrivateBase : public GraphDb { public: explicit PrivateBase(const Config &config) : config_(config) {} virtual ~PrivateBase() {} const Config config_; Storage &storage() override { return *storage_; } durability::WriteAheadLog &wal() override { return wal_; } int WorkerId() const override { return config_.worker_id; } // Makes a local snapshot from the visibility of accessor bool MakeSnapshot(GraphDbAccessor &accessor) override { const bool status = durability::MakeSnapshot( *this, accessor, fs::path(config_.durability_directory), config_.snapshot_max_retained); if (status) { LOG(INFO) << "Snapshot created successfully." << std::endl; } else { LOG(ERROR) << "Snapshot creation failed!" << std::endl; } return status; } void ReinitializeStorage() override { storage_ = std::make_unique(WorkerId()); } protected: std::unique_ptr storage_ = std::make_unique(config_.worker_id); durability::WriteAheadLog wal_{config_.worker_id, config_.durability_directory, config_.durability_enabled}; }; template