Example #1
0
 public DashboardService(IPubSubFactory pubSubFactory, ILogger logger, IProcessDataStorage cacheStorage, IStateManager stateManager, Bus bus) : base(nameof(DashboardService), logger)
 {
     _pubSubFactory = pubSubFactory;
     _cacheStorage  = cacheStorage;
     _stateManager  = stateManager;
     _bus           = bus;
 }
Example #2
0
        //object _syncLock=new object();

        public ProcessWatchDog(ILogger logger, IStateManager stateManager,
                               IBatchEngineSubscribers batchEngineSubscribers, ICacheAside cacheAside,
                               ISerializersFactory serializersFactory, IEntityFactory entityFactory, IEventAggregator eventAggregator,
                               IProcessDataStorage storage, IPubSubFactory pubSubFactory, IResolver resolver,
                               IBatchLoggerFactory loggerFactory, IProcessRepository registeredProcesses,
                               ProcessVolumePipeline volumePipeline) : base("WatchDog", logger)
        {
            _stateManager           = stateManager;
            _batchEngineSubscribers = batchEngineSubscribers;
            _cacheAside             = cacheAside;
            _eventAggregator        = eventAggregator;
            _storage             = storage;
            _pubSubFactory       = pubSubFactory;
            _resolver            = resolver;
            _loggerFactory       = loggerFactory;
            _registeredProcesses = registeredProcesses;
            _volumePipeline      = volumePipeline;
            _groupsHandler       = new GroupsHandler(logger, batchEngineSubscribers, stateManager, serializersFactory, entityFactory, resolver, loggerFactory);
            Interval             = TimeSpan.FromMinutes(3);

            _subGroupRemoved = eventAggregator.Subscribe4Broadcast <ProcessGroupRemovedMessage>(RemoveGroup);
            _subRem          = eventAggregator.Subscribe <TextMessage>(ProcessRemoved, Constants.EventProcessFinished);

            _serializer = SerializersFactory.Instance.GetSerializer(typeof(GroupMessage));

            this._volumeGenSub = eventAggregator.Subscribe <TextMessage>(OnVolumeGenerated, Constants.EventProcessVolumeGenerated);
            _checkGroupSub     =
                eventAggregator.Subscribe <TextMessage>(CheckProcessGroup, Constants.EventCheckGroupCommand);
            _retrySub     = eventAggregator.Subscribe <TextMessage>(OnVolumeGenerated, Constants.EventProcessRetry);
            _healthSub    = eventAggregator.Subscribe4Broadcast <HealthMessage>(PublishHealth);
            _systemLogger = _loggerFactory.GetSystemLogger();

            this._processAddedSub = eventAggregator.Subscribe <TextMessage>(OnProcessGroupAdded, Constants.EventProcessGroupAdded);
            _volErrorSub          = eventAggregator.Subscribe <VolumeErrorMessage>(OnProcessVolumeError);
        }
Example #3
0
        public Bus(IEntityFactory entityFactory, IVolumeHandler volumeHandler, IPubSubFactory pubSubFactory, IStateManager stateManager, IProcessDataStorage storage,
                   IDistributedMutexFactory distributedMutexFactory, IResolver resolver, IBatchLoggerFactory batchLoggerFactory)
        {
            EntityFactory           = entityFactory;
            VolumeHandler           = volumeHandler;
            PubSubFactory           = pubSubFactory;
            _stateManager           = stateManager;
            _storage                = storage;
            DistributedMutexFactory = distributedMutexFactory;
            _resolver               = resolver;
            _batchLoggerFactory     = batchLoggerFactory;
            _cts = new CancellationTokenSource();
            _cancellationToken = _cts.Token;
            HookExceptionEvents();

            _logger         = batchLoggerFactory.GetSystemLogger();
            EventAggregator = new TinyEventAggregator();

            var wrapper = new BusStateManager(_stateManager, _logger, resolver);

            _stateManager = wrapper;

            var originalStorage = _storage;

            _storage = new CacheBusWrapper(_logger, originalStorage, resolver);
            _cacheCommandPipeline = new CacheStoragePipeline(_logger, _cancellationToken, originalStorage);


            _cacheAside = new CacheAside(_stateManager, _storage, EventAggregator, _logger, batchLoggerFactory);

            _processRepository = _resolver.Resolve <IProcessRepository>();
            //var taskListener = resolver.Resolve<ITaskListener>();
            //if (!ReferenceEquals(taskListener, _processRepository))
            //{
            //    Console.WriteLine("ALERT");
            //}

            _taskExecutorsRepo = new TaskExecutorsPool(_logger, _cacheAside, _cancellationToken, _stateManager, _processRepository, EventAggregator, resolver, _logger);


            //BuildCommandHandlerPipeline();
            _statePersistencePipeline = new StatePersistencePipeline(_logger, _cancellationToken);
            this._databasePipeline    = new DatabasePipeline(_logger, _cancellationToken, 0);//todo 500

            _taskProcessorPipeline = GetTaskProcessorPipeLine();
            //_grouPipeline=new GroupHandlerPipeline(_stateManager, _logger, _branchEngineSubscriber);

            //_volumePipeline = new ProcessVolumePipeline(_cancellationToken, _logger, _stateManager, _cacheAside, _processRepository, VolumeHandler, resolver, EventAggregator, _branchEngineSubscriber);
            _branchEngineSubscriber = new BatchEngineSubscribers();

            //_watchDog = new ProcessWatchDog(_logger, StateManager, _branchEngineSubscriber, _cacheAside, SerializersFactory.Instance, EntityFactory, EventAggregator, Storage);
            //watchDog.Start(_cancellationToken);//todo
            // _grouPipeline = new Pipeline<GroupMessage>(_watchDog);
            //_watchDogPipeline = new Pipeline<IWatchDogMessage>(_watchDog);

            _taskProducer = new TaskProducerWorker(_logger, _cacheAside, VolumeHandler, resolver, batchLoggerFactory);

            _leaderManager = DistributedMutexFactory.CreateDistributedMutex(NodeSettings.Instance.LockKey, RunLocalWatchDog, () => SwitchToPubSubWatchDog(null), batchLoggerFactory.GetSystemLogger());
        }
Example #4
0
 public CacheAside(IStateManager stateManager, IProcessDataStorage storage, IEventAggregator eventAggregator, ILogger logger, IBatchLoggerFactory batchLoggerFactory)
 {
     _stateManager       = stateManager;
     _storage            = storage;
     _eventAggregator    = eventAggregator;
     _logger             = logger;
     _batchLoggerFactory = batchLoggerFactory;
     _subRem             = eventAggregator.Subscribe <TextMessage>(ProcessRemoved, Constants.EventProcessFinished);
 }
Example #5
0
 public CacheStoragePipeline(ILogger logger, CancellationToken token, IProcessDataStorage originalStorage)
     : base(new ActionCommandHandler(), "CacheStoragePipeline", logger, 9, 500, token,
            exception =>
 {
     logger.Warn($"Error in Cache pipeline. {exception.Message}", exception);
     Robustness.Instance.ExecuteUntilTrue(originalStorage.RefreshIfNotHealth, token);
 })
 {
     _logger          = logger;
     _originalStorage = originalStorage;
     //IProcessDataStorage
 }
Example #6
0
 public ProcessExecutionContext(ILogger logger, IReadWritableProcessState processState,
                                IProcessConfiguration configuration, IProcessDataStorage storage,
                                IReadWritableGroupEntity groupDetailsGroupEntity)
 {
     Logger = logger;
     //ProcessState = processState;
     WritableProcessState = processState;
     Configuration        = configuration;
     _storage             = storage;
     GroupEntity          = groupDetailsGroupEntity;
     Criteria             =
         SerializersFactory.Instance.DefaultSerializer.DeserializeFromString <JobCriteria>(processState.Criteria);
 }
Example #7
0
 public CacheBusWrapper(ILogger logger, IProcessDataStorage processDataStorageImplementation, IResolver resolver)
 {
     _logger = logger;
     _processDataStorageImplementation = processDataStorageImplementation;
     _resolver = resolver;
 }