Beispiel #1
0
 public IColumnsDb <T> CreateColumnsDb <T>(RocksDbSettings rocksDbSettings)
 {
     return(new SimpleColumnRocksDb <T>(_basePath,
                                        rocksDbSettings,
                                        _dbConfig,
                                        _logManager));
 }
Beispiel #2
0
        /// <inheritdoc />
        public virtual bool TryStartPruning(bool duplicateReads, out IPruningContext context)
        {
            RocksDbSettings ClonedDbSettings()
            {
                RocksDbSettings clonedDbSettings = _settings.Clone();

                clonedDbSettings.DeleteOnStart = true;
                return(clonedDbSettings);
            }

            // create new pruning context with new sub DB and try setting it as current
            // returns true when new pruning is started
            // returns false only on multithreaded access, returns started pruning context then
            PruningContext newContext     = new(this, CreateDb(ClonedDbSettings()), duplicateReads);
            PruningContext?pruningContext = Interlocked.CompareExchange(ref _pruningContext, newContext, null);

            context = pruningContext ?? newContext;
            if (pruningContext is null)
            {
                PruningStarted?.Invoke(this, new PruningEventArgs(context));
                return(true);
            }

            return(false);
        }
Beispiel #3
0
 public IDb CreateDb(RocksDbSettings rocksDbSettings)
 {
     return(new SimpleRocksDb(_basePath,
                              rocksDbSettings,
                              _dbConfig,
                              _logManager));
 }
Beispiel #4
0
 public FullPruningDb(RocksDbSettings settings, IRocksDbFactory dbFactory, Action?updateDuplicateWriteMetrics = null)
 {
     _settings  = settings;
     _dbFactory = dbFactory;
     _updateDuplicateWriteMetrics = updateDuplicateWriteMetrics;
     _currentDb = CreateDb(_settings);
 }
Beispiel #5
0
 public SimpleRocksDb(
     string basePath,
     RocksDbSettings rocksDbSettings,
     IDbConfig dbConfig,
     ILogManager logManager = null)
     : base(basePath, rocksDbSettings, dbConfig, logManager)
 {
 }
Beispiel #6
0
    public ColumnsDb(string basePath, RocksDbSettings settings, IDbConfig dbConfig, ILogManager logManager, IReadOnlyList <T> keys)
        : base(basePath, settings, dbConfig, logManager, GetColumnFamilies(dbConfig, settings.DbName, GetEnumKeys(keys)))
    {
        keys = GetEnumKeys(keys);

        foreach (T key in keys)
        {
            _columnDbs[key] = new ColumnDb(_db, this, key.ToString() !);
        }
    }
Beispiel #7
0
        protected ColumnsDb(string basePath, RocksDbSettings settings, IDbConfig dbConfig, ILogManager logManager, params T[] keys)
            : base(basePath, settings, dbConfig, logManager, GetColumnFamilies(dbConfig, settings.DbName, GetEnumKeys(keys)))
        {
            Name = settings.DbName;
            keys = GetEnumKeys(keys);

            foreach (T key in keys)
            {
                _columnDbs[key] = new ColumnDb(Db, this, key.ToString() !);
            }
        }
Beispiel #8
0
        // When creating a new DB, we need to change its inner settings
        private RocksDbSettings GetRocksDbSettings(RocksDbSettings rocksDbSettings)
        {
            _index++;

            // if its -1 then this is first db.
            bool firstDb = _index == -1;

            // if first DB, then we will put it into main directory and not use indexed subdirectory
            string          dbName     = firstDb ? rocksDbSettings.DbName : rocksDbSettings.DbName + _index;
            string          dbPath     = firstDb ? rocksDbSettings.DbPath : _fileSystem.Path.Combine(rocksDbSettings.DbPath, _index.ToString());
            RocksDbSettings dbSettings = rocksDbSettings.Clone(dbName, dbPath);

            dbSettings.CanDeleteFolder = !firstDb; // we cannot delete main db folder, only indexed subfolders
            return(dbSettings);
        }
Beispiel #9
0
        public void clone_test()
        {
            RocksDbSettings settings = new("Name", "Path")
            {
                BlockCacheSize            = 1,
                UpdateReadMetrics         = () => { },
                UpdateWriteMetrics        = () => { },
                WriteBufferNumber         = 5,
                WriteBufferSize           = 10,
                CacheIndexAndFilterBlocks = true
            };

            RocksDbSettings settings2 = settings.Clone("Name2", "Path2");

            settings2.Should().BeEquivalentTo(settings,
                                              o => o.Excluding(s => s.DbName).Excluding(s => s.DbPath));
            settings2.DbName.Should().Be("Name2");
            settings2.DbPath.Should().Be("Path2");
        }
    }
Beispiel #10
0
        public IColumnsDb <T> CreateColumnsDb <T>(RocksDbSettings rocksDbSettings)
        {
            var rocksDb = _wrappedRocksDbFactory.CreateColumnsDb <T>(rocksDbSettings);

            return(new ReadOnlyColumnsDb <T>(new RpcColumnsDb <T>(rocksDbSettings.DbName, _jsonSerializer, _jsonRpcClient, _logManager, rocksDb), true));
        }
Beispiel #11
0
 public string GetFullDbPath(RocksDbSettings rocksDbSettings) => _wrappedRocksDbFactory.GetFullDbPath(rocksDbSettings);
Beispiel #12
0
        /// <inheritdoc />
        public string GetFullDbPath(RocksDbSettings rocksDbSettings)
        {
            RocksDbSettings settings = GetRocksDbSettings(rocksDbSettings);

            return(_rocksDbFactory.GetFullDbPath(settings));
        }
Beispiel #13
0
        /// <inheritdoc />
        public IColumnsDb <T> CreateColumnsDb <T>(RocksDbSettings rocksDbSettings) where T : notnull
        {
            RocksDbSettings settings = GetRocksDbSettings(rocksDbSettings);

            return(_rocksDbFactory.CreateColumnsDb <T>(settings));
        }
Beispiel #14
0
 public IDb CreateDb(RocksDbSettings rocksDbSettings) =>
 new DbOnTheRocks(_basePath, rocksDbSettings, _dbConfig, _logManager);
 public IColumnsDb <T> CreateColumnsDb <T>(RocksDbSettings rocksDbSettings) where T : struct, Enum =>
 new ColumnsDb <T>(_basePath, rocksDbSettings, _dbConfig, _logManager, Array.Empty <T>());
Beispiel #16
0
 private IDb CreateDb(RocksDbSettings settings) => _dbFactory.CreateDb(settings);
Beispiel #17
0
 public IColumnsDb <T> CreateColumnsDb <T>(RocksDbSettings rocksDbSettings) where T : notnull => _memDbFactory.CreateColumnsDb <T>(rocksDbSettings.DbName);
Beispiel #18
0
 public IColumnsDb <T> CreateColumnsDb <T>(RocksDbSettings rocksDbSettings) where T : struct, Enum => _memDbFactory.CreateColumnsDb <T>(rocksDbSettings.DbName);
Beispiel #19
0
 public IDb CreateDb(RocksDbSettings rocksDbSettings) => _memDbFactory.CreateDb(rocksDbSettings.DbName);
Beispiel #20
0
 public string GetFullDbPath(RocksDbSettings rocksDbSettings) => DbOnTheRocks.GetFullDbPath(rocksDbSettings.DbPath, _basePath);
Beispiel #21
0
        public IDb CreateDb(RocksDbSettings rocksDbSettings)
        {
            var rocksDb = _wrappedRocksDbFactory.CreateDb(rocksDbSettings);

            return(WrapWithRpc(rocksDb));
        }
Beispiel #22
0
 public ISnapshotableDb CreateSnapshotableDb(RocksDbSettings rocksDbSettings)
 {
     return(new StateDb(CreateDb(rocksDbSettings)));
 }
Beispiel #23
0
 public IColumnsDb <T> CreateColumnsDb <T>(RocksDbSettings rocksDbSettings) where T : notnull
 {
     return(new ColumnsDb <T>(_basePath, rocksDbSettings, _dbConfig, _logManager));
 }
Beispiel #24
0
 public DbOnTheRocks(string basePath, RocksDbSettings rocksDbSettings, IDbConfig dbConfig, ILogManager logManager, ColumnFamilies columnFamilies = null, bool deleteOnStart = false)
 {
     Name      = rocksDbSettings.DbName;
     _settings = rocksDbSettings;
     Db        = Init(basePath, rocksDbSettings.DbPath, dbConfig, logManager, columnFamilies, deleteOnStart);
 }
Beispiel #25
0
        /// <inheritdoc />
        public IDb CreateDb(RocksDbSettings rocksDbSettings)
        {
            RocksDbSettings settings = GetRocksDbSettings(rocksDbSettings);

            return(_rocksDbFactory.CreateDb(settings));
        }