private void ProcessAdded(EtlProcess etl) { if (_perEtlProcessStats.TryGetValue(etl.ConfigurationName, out var processes) == false) { return; } processes.TryAdd(etl.TransformationName, new EtlProcessAndPerformanceStatsList(etl)); }
private void EtlProcessRemoved(EtlProcess etl) { if (_perEtlProcessStats.TryGetValue(etl.ConfigurationName, out var processes) == false) { return; } processes.TryRemove(etl.TransformationName, out _); }
public static EtlProcessState GetProcessState(List <Transformation> configTransforms, DocumentDatabase database, string configurationName) { EtlProcessState processState = null; foreach (var transform in configTransforms) { if (transform.Name == null) { continue; } processState = EtlProcess.GetProcessState(database, configurationName, transform.Name); if (processState.NodeTag != null) { break; } } return(processState ?? new EtlProcessState()); }
private IEnumerable <EtlProcess> GetRelevantProcesses <T, TConnectionString>(List <T> configurations, HashSet <string> uniqueNames) where T : EtlConfiguration <TConnectionString> where TConnectionString : ConnectionString { foreach (var config in configurations) { SqlEtlConfiguration sqlConfig = null; RavenEtlConfiguration ravenConfig = null; var connectionStringNotFound = false; switch (config.EtlType) { case EtlType.Raven: ravenConfig = config as RavenEtlConfiguration; if (_databaseRecord.RavenConnectionStrings.TryGetValue(config.ConnectionStringName, out var ravenConnection)) { ravenConfig.Initialize(ravenConnection); } else { connectionStringNotFound = true; } break; case EtlType.Sql: sqlConfig = config as SqlEtlConfiguration; if (_databaseRecord.SqlConnectionStrings.TryGetValue(config.ConnectionStringName, out var sqlConnection)) { sqlConfig.Initialize(sqlConnection); } else { connectionStringNotFound = true; } break; default: ThrownUnknownEtlConfiguration(config.GetType()); break; } if (connectionStringNotFound) { LogConfigurationError(config, new List <string> { $"Connection string named '{config.ConnectionStringName}' was not found for {config.EtlType} ETL" }); continue; } if (config.Disabled) { continue; } if (ValidateConfiguration(config, uniqueNames) == false) { continue; } var processState = GetProcessState(config.Transforms, _database, config.Name); var whoseTaskIsIt = _database.WhoseTaskIsIt(_databaseRecord.Topology, config, processState); if (whoseTaskIsIt != _serverStore.NodeTag) { continue; } foreach (var transform in config.Transforms) { if (transform.Disabled) { continue; } EtlProcess process = null; if (sqlConfig != null) { process = new SqlEtl(transform, sqlConfig, _database, _serverStore); } if (ravenConfig != null) { process = new RavenEtl(transform, ravenConfig, _database, _serverStore); } yield return(process); } } }