internal DataSourceUpdatesImpl(
            IDataStore store,
            IDataStoreStatusProvider dataStoreStatusProvider,
            TaskExecutor taskExecutor,
            Logger baseLogger,
            TimeSpan?outageLoggingTimeout
            )
        {
            _store = store;
            _dataStoreStatusProvider = dataStoreStatusProvider;
            _taskExecutor            = taskExecutor;
            _log = baseLogger.SubLogger(LogNames.DataSourceSubLog);

            _dependencyTracker = new DependencyTracker();

            _outageTracker = outageLoggingTimeout.HasValue ?
                             new DataSourceOutageTracker(_log, outageLoggingTimeout.Value) : null;

            var initialStatus = new DataSourceStatus
            {
                State      = DataSourceState.Initializing,
                StateSince = DateTime.Now,
                LastError  = null
            };

            _status = new StateMonitor <DataSourceStatus, StateAndError>(initialStatus, MaybeUpdateStatus, _log);
        }