Introducing ledger shards and new ledger syncing logic. (#247)

- The ledgers are stored in a sqlite database in ledger file system.
- Ledgers are organized in shards inside primary folder.
- Raw inputs are saved as shards inside blob folder. No input files are created if neither inputs nor outputs are available.
- Both last primary shard hash and last blob shard hashes are subjected to consensus and necessary sync operations are performed if out of sync.
- Hpfs sync support setting single sync targets from both ends of the list. (Targets set from front are prioritized).
- Contract and ledger syncs and serving are performed independently.
This commit is contained in:
Savinda Senevirathne
2021-02-18 11:24:05 +05:30
committed by GitHub
parent e394497698
commit 16c5b3fae2
53 changed files with 1917 additions and 2317 deletions

View File

@@ -12,8 +12,7 @@
#include "usr/read_req.hpp"
#include "p2p/p2p.hpp"
#include "consensus.hpp"
#include "ledger.hpp"
#include "ledger/ledger_sample.hpp"
#include "ledger/ledger.hpp"
#include "unl.hpp"
/**
@@ -71,7 +70,6 @@ void deinit()
p2p::deinit();
read_req::deinit();
consensus::deinit();
ledger::ledger_sample::deinit(); // Deinit method in new ledger implementation.
sc::deinit();
ledger::deinit();
conf::deinit();
@@ -197,7 +195,6 @@ int main(int argc, char **argv)
LOG_INFO << "Contract: " << conf::cfg.contract.id << " (" << conf::cfg.contract.version << ")";
if (sc::init() == -1 ||
ledger::ledger_sample::init() == -1 || // Init method of new ledger implementaiton.
ledger::init() == -1 ||
unl::init() == -1 ||
consensus::init() == -1 ||