public FullTestPruner(
     IFullPruningDb pruningDb,
     IPruningTrigger pruningTrigger,
     IPruningConfig pruningConfig,
     IBlockTree blockTree,
     IStateReader stateReader,
     ILogManager logManager)
     : base(pruningDb, pruningTrigger, pruningConfig, blockTree, stateReader, logManager)
 {
 }
Пример #2
0
 public FullPruner(
     IFullPruningDb fullPruningDb,
     IPruningTrigger pruningTrigger,
     IPruningConfig pruningConfig,
     IBlockTree blockTree,
     IStateReader stateReader,
     ILogManager logManager)
 {
     _fullPruningDb         = fullPruningDb;
     _pruningTrigger        = pruningTrigger;
     _pruningConfig         = pruningConfig;
     _blockTree             = blockTree;
     _stateReader           = stateReader;
     _logManager            = logManager;
     _pruningTrigger.Prune += OnPrune;
     _logger = _logManager.GetClassLogger();
     _minimumPruningDelay = TimeSpan.FromHours(_pruningConfig.FullPruningMinimumDelayHours);
 }
Пример #3
0
        private static void InitializeFullPruning(
            IPruningConfig pruningConfig,
            IInitConfig initConfig,
            INethermindApi api,
            IStateReader stateReader)
        {
            IPruningTrigger CreateAutomaticTrigger(string dbPath)
            {
                long threshold = pruningConfig.FullPruningThresholdMb.MB();

                switch (pruningConfig.FullPruningTrigger)
                {
                case FullPruningTrigger.StateDbSize:
                    return(new PathSizePruningTrigger(dbPath, threshold, api.TimerFactory, api.FileSystem));

                case FullPruningTrigger.VolumeFreeSpace:
                    return(new DiskFreeSpacePruningTrigger(dbPath, threshold, api.TimerFactory, api.FileSystem));

                default:
                    return(null);
                }
            }

            if (pruningConfig.Mode.IsFull())
            {
                IDb stateDb = api.DbProvider !.StateDb;
                if (stateDb is IFullPruningDb fullPruningDb)
                {
                    IPruningTrigger pruningTrigger = CreateAutomaticTrigger(fullPruningDb.GetPath(initConfig.BaseDbPath));
                    if (pruningTrigger is not null)
                    {
                        api.PruningTrigger.Add(pruningTrigger);
                    }

                    FullPruner pruner = new(fullPruningDb, api.PruningTrigger, pruningConfig, api.BlockTree !, stateReader, api.LogManager);
                    api.DisposeStack.Push(pruner);
                }
            }
        }
Пример #4
0
        public FullPruner(
            IFullPruningDb fullPruningDb,
            IPruningTrigger pruningTrigger,
            IPruningConfig pruningConfig,
            IBlockTree blockTree,
            IStateReader stateReader,
            ILogManager logManager)
        {
            _fullPruningDb         = fullPruningDb;
            _pruningTrigger        = pruningTrigger;
            _pruningConfig         = pruningConfig;
            _blockTree             = blockTree;
            _stateReader           = stateReader;
            _logManager            = logManager;
            _pruningTrigger.Prune += OnPrune;
            _logger = _logManager.GetClassLogger();
            _minimumPruningDelay = TimeSpan.FromHours(_pruningConfig.FullPruningMinimumDelayHours);

            if (_pruningConfig.FullPruningCompletionBehavior != FullPruningCompletionBehavior.None)
            {
                _fullPruningDb.PruningFinished += HandlePruningFinished;
            }
        }
Пример #5
0
 /// <summary>
 /// Adds new <see cref="IPruningTrigger"/> to the be watched."/>
 /// </summary>
 /// <param name="trigger">trigger to be watched</param>
 public void Add(IPruningTrigger trigger)
 {
     trigger.Prune += OnPrune;
 }