public DBTrieInvoiceRepository(IOptions <Config> conf, IKeysRepository keysRepository, ISystemClock systemClock, NRustLightningNetworkProvider networkProvider, ILogger <DBTrieInvoiceRepository> logger) { _dbPath = conf.Value.InvoiceDBFilePath; _keysRepository = keysRepository; _systemClock = systemClock; _networkProvider = networkProvider; _logger = logger; _engine = DBTrieEngine.OpenFromFolder(_dbPath).Result; _engine.ConfigurePagePool(new PagePool(pageSize: conf.Value.DBCacheMB)); }
public DbTrieRepository(IOptions <Config> conf, ILogger <DbTrieRepository> logger) { _dbPath = conf.Value.DBFilePath; _conf = conf; _logger = logger; _pool = MemoryPool <byte> .Shared; _engine = OpenEngine(CancellationToken.None).GetAwaiter().GetResult(); var pageSize = 8192; _engine.ConfigurePagePool(new PagePool(pageSize, (_conf.Value.DBCacheMB * 1000 * 1000) / pageSize)); }
private async ValueTask <DBTrieEngine> OpenEngine(CancellationToken ct) { int tried = 0; retry: try { return(await DBTrieEngine.OpenFromFolder(_dbPath)); } catch when(tried < 10) { tried++; await Task.Delay(500, ct); goto retry; } }
public void Setup() { folder = @"BenchData"; Directory.CreateDirectory($@"BenchData"); Directory.CreateDirectory($@"{folder}\trie"); trie = DBTrieEngine.OpenFromFolder($@"{folder}\trie").Result; ldb = new DB(new Options { CreateIfMissing = true }, $@"{folder}\ldb"); Directory.CreateDirectory($@"{folder}\litedb"); litedb = new LiteDatabase(new ConnectionString() { Filename = $@"{folder}\litedb\db" }); this.litedbCol = litedb.GetCollection <LiteDbEntity>("tbl"); trx = trie.OpenTransaction().Result; tbl = trx.GetTable("tbl"); rocksdb = rdb.RocksDb.Open(new rdb.DbOptions().SetCreateIfMissing(true), $@"{folder}\rocksdb"); }