private void StartBeamSyncComponents()
        {
            // so bad
            BeamSyncDbProvider         beamSyncDbProvider = _dbProvider as BeamSyncDbProvider;
            ISyncFeed <StateSyncBatch> beamSyncFeed       = beamSyncDbProvider.BeamSyncFeed;
            StateSyncDispatcher        dispatcher         = new StateSyncDispatcher(beamSyncFeed, _syncPeerPool, new StateSyncAllocationStrategyFactory(), _logManager);

            dispatcher.Start(_syncCancellation.Token).ContinueWith(t =>
            {
                if (t.IsFaulted)
                {
                    if (_logger.IsError)
                    {
                        _logger.Error("Beam sync failed", t.Exception);
                    }
                }
                else
                {
                    if (_logger.IsInfo)
                    {
                        _logger.Info("Beam sync completed.");
                    }
                }
            });
        }
        public async Task Execute(CancellationToken _)
        {
            ILogger logger = _context.LogManager.GetClassLogger();

            /* sync */
            IDbConfig   dbConfig   = _context.Config <IDbConfig>();
            ISyncConfig syncConfig = _context.Config <ISyncConfig>();
            IInitConfig initConfig = _context.Config <IInitConfig>();

            foreach (PropertyInfo propertyInfo in typeof(IDbConfig).GetProperties())
            {
                if (logger.IsDebug)
                {
                    logger.Debug($"DB {propertyInfo.Name}: {propertyInfo.GetValue(dbConfig)}");
                }
            }

            _context.DbProvider = await GetDbProvider(initConfig, dbConfig, initConfig.StoreReceipts || syncConfig.DownloadReceiptsInFastSync);

            if (syncConfig.BeamSync)
            {
                _context.SyncModeSelector = new PendingSyncModeSelector();
                BeamSyncDbProvider beamSyncProvider = new BeamSyncDbProvider(_context.SyncModeSelector, _context.DbProvider, _context.Config <ISyncConfig>(), _context.LogManager);
                _context.DbProvider = beamSyncProvider;
            }
        }
Beispiel #3
0
        public async Task Execute()
        {
            ILogger logger = _context.LogManager.GetClassLogger();

            /* sync */
            IDbConfig   dbConfig   = _context.Config <IDbConfig>();
            ISyncConfig syncConfig = _context.Config <ISyncConfig>();
            IInitConfig initConfig = _context.Config <IInitConfig>();

            foreach (PropertyInfo propertyInfo in typeof(IDbConfig).GetProperties())
            {
                if (logger.IsDebug)
                {
                    logger.Debug($"DB {propertyInfo.Name}: {propertyInfo.GetValue(dbConfig)}");
                }
            }

            _context.DbProvider = await GetDbProvider(initConfig, dbConfig, initConfig.StoreReceipts || syncConfig.DownloadReceiptsInFastSync);

            if (syncConfig.BeamSync)
            {
                BeamSyncDbProvider beamSyncProvider = new BeamSyncDbProvider(_context.DbProvider, "processor DB", _context.LogManager);
                _context.DbProvider       = beamSyncProvider;
                _context.NodeDataConsumer = beamSyncProvider.NodeDataConsumer;
            }
        }
        public async Task ProviderInitTests_BeamSyncDbProvider()
        {
            var         syncModeSelector   = Substitute.For <ISyncModeSelector>();
            var         dbProvider         = TestMemDbProvider.Init();
            var         rocksDbFactory     = new RocksDbFactory(new DbConfig(), LimboLogs.Instance, Path.Combine(_folderWithDbs, "beam"));
            IDbProvider beamSyncDbProvider = new BeamSyncDbProvider(syncModeSelector, dbProvider, new SyncConfig(), LimboLogs.Instance);
            var         initializer        = new BaselineDbInitializer(beamSyncDbProvider, new BaselineConfig(), rocksDbFactory, new MemDbFactory());
            await initializer.Init();

            Assert.NotNull(beamSyncDbProvider.GetDb <IDb>(BaselineDbNames.BaselineTree));
            Assert.NotNull(beamSyncDbProvider.GetDb <IDb>(BaselineDbNames.BaselineTreeMetadata));
            Assert.IsTrue(beamSyncDbProvider.GetDb <IDb>(BaselineDbNames.BaselineTree) is MemDb);
            Assert.IsTrue(beamSyncDbProvider.GetDb <IDb>(BaselineDbNames.BaselineTreeMetadata) is MemDb);
        }
        public async Task ProviderInitTests_BeamSyncDbProvider()
        {
            var syncModeSelector = Substitute.For <ISyncModeSelector>();
            var dbProvider       = await TestMemDbProvider.InitAsync();

            var         rocksDbFactory     = new RocksDbFactory(new DbConfig(), LimboLogs.Instance, Path.Combine(_folderWithDbs, "beam"));
            IDbProvider beamSyncDbProvider = new BeamSyncDbProvider(syncModeSelector, dbProvider, new SyncConfig(), LimboLogs.Instance);
            var         initializer        = new ConsumerNdmDbInitializer(beamSyncDbProvider, new NdmConfig(), rocksDbFactory, new MemDbFactory());

            initializer.Reset();
            await initializer.InitAsync();

            Assert.IsTrue(beamSyncDbProvider.GetDb <IDb>(ConsumerNdmDbNames.ConsumerDepositApprovals) is MemDb);
            Assert.IsTrue(beamSyncDbProvider.GetDb <IDb>(ConsumerNdmDbNames.ConsumerReceipts) is MemDb);
            Assert.IsTrue(beamSyncDbProvider.GetDb <IDb>(ConsumerNdmDbNames.ConsumerSessions) is MemDb);
            Assert.IsTrue(beamSyncDbProvider.GetDb <IDb>(ConsumerNdmDbNames.Deposits) is MemDb);
        }
Beispiel #6
0
        public async Task Execute()
        {
            ILogger logger = _context.LogManager.GetClassLogger();

            /* sync */
            IDbConfig   dbConfig   = _context.Config <IDbConfig>();
            ISyncConfig syncConfig = _context.Config <ISyncConfig>();
            IInitConfig initConfig = _context.Config <IInitConfig>();

            foreach (PropertyInfo propertyInfo in typeof(IDbConfig).GetProperties())
            {
                if (logger.IsDebug)
                {
                    logger.Debug($"DB {propertyInfo.Name}: {propertyInfo.GetValue(dbConfig)}");
                }
            }

            if (initConfig.UseMemDb)
            {
                _context.DbProvider = new MemDbProvider();
            }
            else
            {
                RocksDbProvider rocksDbProvider = new RocksDbProvider(_context.LogManager);
                await rocksDbProvider.Init(initConfig.BaseDbPath, dbConfig, initConfig.StoreReceipts || syncConfig.DownloadReceiptsInFastSync);

                _context.DbProvider = rocksDbProvider;
            }

            if (syncConfig.BeamSync)
            {
                BeamSyncDbProvider beamSyncProvider = new BeamSyncDbProvider(_context.DbProvider, "processor DB", _context.LogManager);
                _context.DbProvider       = beamSyncProvider;
                _context.NodeDataConsumer = beamSyncProvider.NodeDataConsumer;
            }

            // IDbProvider debugRecorder = new RocksDbProvider(Path.Combine(_context._initConfig.BaseDbPath, "debug"), dbConfig, _context._logManager, _context._initConfig.StoreTraces, _context._initConfig.StoreReceipts);
            // _context._dbProvider = new RpcDbProvider(_context._jsonSerializer, new BasicJsonRpcClient(KnownRpcUris.Localhost, _context._jsonSerializer, _context._logManager), _context._logManager, debugRecorder);

            // IDbProvider debugReader = new ReadOnlyDbProvider(new RocksDbProvider(Path.Combine(_context._initConfig.BaseDbPath, "debug"), dbConfig, _context._logManager, _context._initConfig.StoreTraces, _context._initConfig.StoreReceipts), false);
            // _context._dbProvider = debugReader;
        }
Beispiel #7
0
        public async Task Execute(CancellationToken _)
        {
            ILogger logger = _api.LogManager.GetClassLogger();

            /* sync */
            IDbConfig   dbConfig   = _api.Config <IDbConfig>();
            ISyncConfig syncConfig = _api.Config <ISyncConfig>();
            IInitConfig initConfig = _api.Config <IInitConfig>();

            foreach (PropertyInfo propertyInfo in typeof(IDbConfig).GetProperties())
            {
                if (logger.IsDebug)
                {
                    logger.Debug($"DB {propertyInfo.Name}: {propertyInfo.GetValue(dbConfig)}");
                }
            }

            try
            {
                var useReceiptsDb = initConfig.StoreReceipts || syncConfig.DownloadReceiptsInFastSync;
                InitDbApi(initConfig, dbConfig, initConfig.StoreReceipts || syncConfig.DownloadReceiptsInFastSync);
                var dbInitializer = new StandardDbInitializer(_api.DbProvider, _api.RocksDbFactory, _api.MemDbFactory);
                await dbInitializer.InitStandardDbsAsync(useReceiptsDb);

                if (syncConfig.BeamSync)
                {
                    _api.SyncModeSelector = new PendingSyncModeSelector();
                    BeamSyncDbProvider beamSyncProvider = new BeamSyncDbProvider(_api.SyncModeSelector, _api.DbProvider, _api.Config <ISyncConfig>(), _api.LogManager);
                    _api.DbProvider = beamSyncProvider;
                }
            }
            catch (TypeInitializationException)
            {
                if (logger.IsError)
                {
                    logger.Error("RocksDb was not found, please make sure it is installed on your machine. \n On macOs : 'brew install rocksdb'");
                }
            }
        }