public static void Initialize()
        {
            try
            {
                if (string.IsNullOrWhiteSpace(TraceAgentMetadata.ProcessPath))
                {
                    return;
                }

                if (DomainMetadata.ShouldAvoidAppDomain())
                {
                    Log.Information("Skipping process manager initialization for AppDomain: {AppDomain}", DomainMetadata.AppDomainName);
                    return;
                }

                if (!Directory.Exists(TraceAgentMetadata.DirectoryPath))
                {
                    Log.Warning("Directory for trace agent does not exist: {Directory}", TraceAgentMetadata.DirectoryPath);
                    return;
                }

                Log.Debug("Starting child processes from process {ProcessName}, AppDomain {AppDomain}.", DomainMetadata.ProcessName, DomainMetadata.AppDomainName);
                StartProcesses();
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Error when attempting to initialize process manager.");
            }
        }
Exemple #2
0
 public EFRepositoryProvider(
     IServiceProvider serviceProvider,
     DomainMetadata domainMetadata,
     IObjectAccessor <MiCakeEFCoreOptions> options)
 {
     _serviceProvider        = serviceProvider;
     _aggregateRootsMetadata = domainMetadata.DomainObject.AggregateRoots;
     _options = options.Value;
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="ImmutableTracerSettings"/> class from
        /// a TracerSettings instance.
        /// </summary>
        /// <param name="settings">The tracer settings to use to populate the immutable tracer settings</param>
        public ImmutableTracerSettings(TracerSettings settings)
        {
            Environment      = settings.Environment;
            ServiceName      = settings.ServiceName;
            ServiceVersion   = settings.ServiceVersion;
            TraceEnabled     = settings.TraceEnabled;
            ExporterSettings = new ImmutableExporterSettings(settings.ExporterSettings);
            TracesTransport  = settings.TracesTransport;
#pragma warning disable 618 // App analytics is deprecated, but still used
            AnalyticsEnabled = settings.AnalyticsEnabled;
#pragma warning restore 618
            MaxTracesSubmittedPerSecond = settings.MaxTracesSubmittedPerSecond;
            CustomSamplingRules         = settings.CustomSamplingRules;
            GlobalSamplingRate          = settings.GlobalSamplingRate;
            Integrations                      = new ImmutableIntegrationSettingsCollection(settings.Integrations, settings.DisabledIntegrationNames);
            GlobalTags                        = new ReadOnlyDictionary <string, string>(settings.GlobalTags);
            HeaderTags                        = new ReadOnlyDictionary <string, string>(settings.HeaderTags);
            GrpcTags                          = new ReadOnlyDictionary <string, string>(settings.GrpcTags);
            TracerMetricsEnabled              = settings.TracerMetricsEnabled;
            RuntimeMetricsEnabled             = settings.RuntimeMetricsEnabled;
            KafkaCreateConsumerScopeEnabled   = settings.KafkaCreateConsumerScopeEnabled;
            StartupDiagnosticLogEnabled       = settings.StartupDiagnosticLogEnabled;
            HttpClientExcludedUrlSubstrings   = settings.HttpClientExcludedUrlSubstrings;
            HttpServerErrorStatusCodes        = settings.HttpServerErrorStatusCodes;
            HttpClientErrorStatusCodes        = settings.HttpClientErrorStatusCodes;
            ServiceNameMappings               = settings.ServiceNameMappings;
            TraceBufferSize                   = settings.TraceBufferSize;
            TraceBatchInterval                = settings.TraceBatchInterval;
            RouteTemplateResourceNamesEnabled = settings.RouteTemplateResourceNamesEnabled;
            DelayWcfInstrumentationEnabled    = settings.DelayWcfInstrumentationEnabled;
            TraceMethods                      = settings.TraceMethods;
            IsActivityListenerEnabled         = settings.IsActivityListenerEnabled;

            TagMongoCommands           = settings.TagMongoCommands;
            TagRedisCommands           = settings.TagRedisCommands;
            TagElasticsearchQueries    = settings.TagElasticsearchQueries;
            TraceResponseHeaderEnabled = settings.TraceResponseHeaderEnabled;
            RecordedValueMaxLength     = settings.RecordedValueMaxLength;
            SignalFxAccessToken        = settings.SignalFxAccessToken;
            Convention = settings.Convention;
            Exporter   = settings.Exporter;

            ThreadSamplingEnabled = settings.ThreadSamplingEnabled;
            ThreadSamplingPeriod  = settings.ThreadSamplingPeriod;
            LogSubmissionSettings = ImmutableDirectLogSubmissionSettings.Create(settings.LogSubmissionSettings);
            // Logs injection is enabled by default if direct log submission is enabled, otherwise disabled by default
            LogsInjectionEnabled = settings.LogSubmissionSettings.LogsInjectionEnabled ?? LogSubmissionSettings.IsEnabled;

            PropagationStyleInject  = settings.PropagationStyleInject;
            PropagationStyleExtract = settings.PropagationStyleExtract;

            // we cached the static instance here, because is being used in the hotpath
            // by IsIntegrationEnabled method (called from all integrations)
            _domainMetadata = DomainMetadata.Instance;

            ExpandRouteTemplatesEnabled = settings.ExpandRouteTemplatesEnabled || !RouteTemplateResourceNamesEnabled;
        }
Exemple #4
0
    internal static bool IsIntegrationEnabled(this TracerSettings settings, IntegrationInfo integration, bool defaultValue = true)
    {
        if (settings.TraceEnabled && !DomainMetadata.ShouldAvoidAppDomain())
        {
            return(settings.Integrations[integration].Enabled ?? defaultValue);
        }

        return(false);
    }
        public DefaultFreeRepositoryFactory(
            IEnumerable <IFreeRepositoryProvider <TEntity, TKey> > repositoryProvider,
            DomainMetadata domainMetadata
            )
        {
            //if has more repository provider(ef core,dapper,ado).always choose last one.
            _repositoryProvider = repositoryProvider.Last();

            _entityDescriptors = domainMetadata.DomainObject.Entities;
        }
        internal bool IsOptInIntegrationEnabled(string name)
        {
            if (TraceEnabled && !DomainMetadata.ShouldAvoidAppDomain())
            {
                var disabled = Integrations[name].Enabled != true || DisabledIntegrationNames.Contains(name);
                return(!disabled);
            }

            return(false);
        }
        public DefaultRepositoryFacotry(
            IEnumerable <IRepositoryProvider <TAggregateRoot, TKey> > repositoryProvider,
            DomainMetadata domainMetadata
            )
        {
            //if has more repository provider(ef core,dapper,ado).always choose last one.
            _repositoryProvider = repositoryProvider.Last();

            _aggregateRootDescriptors = domainMetadata.DomainObject.AggregateRoots;
        }
        public static void Initialize()
        {
            try
            {
                if (string.IsNullOrWhiteSpace(TraceAgentMetadata.ProcessPath))
                {
                    return;
                }

                if (DomainMetadata.ShouldAvoidAppDomain())
                {
                    Log.Information("Skipping process manager initialization for AppDomain: {0}", DomainMetadata.AppDomainName);
                    return;
                }

                if (!Directory.Exists(TraceAgentMetadata.DirectoryPath))
                {
                    Log.Warning("Directory for trace agent does not exist: {0}", TraceAgentMetadata.DirectoryPath);
                    return;
                }

                InitializePortManagerClaimFiles(TraceAgentMetadata.DirectoryPath);
                _cancellationTokenSource = new CancellationTokenSource();

                if (_isProcessManager)
                {
                    Log.Debug("Starting child processes from process {0}, AppDomain {1}.", DomainMetadata.ProcessName, DomainMetadata.AppDomainName);
                    StartProcesses();
                }

                Log.Debug("Initializing sub process port file watchers.");
                foreach (var instance in Processes)
                {
                    instance.InitializePortFileWatcher();
                }
            }
            catch (Exception ex)
            {
                Log.SafeLogError(ex, "Error when attempting to initialize process manager.");
            }
        }
Exemple #9
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ImmutableTracerSettings"/> class from
        /// a TracerSettings instance.
        /// </summary>
        /// <param name="settings">The tracer settings to use to populate the immutable tracer settings</param>
        public ImmutableTracerSettings(TracerSettings settings)
        {
            Environment    = settings.Environment;
            ServiceName    = settings.ServiceName;
            ServiceVersion = settings.ServiceVersion;
            TraceEnabled   = settings.TraceEnabled;
            Exporter       = new ImmutableExporterSettings(settings.Exporter);
#pragma warning disable 618 // App analytics is deprecated, but still used
            AnalyticsEnabled = settings.AnalyticsEnabled;
#pragma warning restore 618
            LogsInjectionEnabled        = settings.LogsInjectionEnabled;
            MaxTracesSubmittedPerSecond = settings.MaxTracesSubmittedPerSecond;
            CustomSamplingRules         = settings.CustomSamplingRules;
            GlobalSamplingRate          = settings.GlobalSamplingRate;
            Integrations                      = new ImmutableIntegrationSettingsCollection(settings.Integrations, settings.DisabledIntegrationNames);
            GlobalTags                        = new ReadOnlyDictionary <string, string>(settings.GlobalTags);
            HeaderTags                        = new ReadOnlyDictionary <string, string>(settings.HeaderTags);
            TracerMetricsEnabled              = settings.TracerMetricsEnabled;
            RuntimeMetricsEnabled             = settings.RuntimeMetricsEnabled;
            KafkaCreateConsumerScopeEnabled   = settings.KafkaCreateConsumerScopeEnabled;
            StartupDiagnosticLogEnabled       = settings.StartupDiagnosticLogEnabled;
            HttpClientExcludedUrlSubstrings   = settings.HttpClientExcludedUrlSubstrings;
            HttpServerErrorStatusCodes        = settings.HttpServerErrorStatusCodes;
            HttpClientErrorStatusCodes        = settings.HttpClientErrorStatusCodes;
            ServiceNameMappings               = settings.ServiceNameMappings;
            TraceBufferSize                   = settings.TraceBufferSize;
            TraceBatchInterval                = settings.TraceBatchInterval;
            RouteTemplateResourceNamesEnabled = settings.RouteTemplateResourceNamesEnabled;
            DelayWcfInstrumentationEnabled    = settings.DelayWcfInstrumentationEnabled;
            PropagationStyleInject            = settings.PropagationStyleInject;
            PropagationStyleExtract           = settings.PropagationStyleExtract;

            LogSubmissionSettings = ImmutableDirectLogSubmissionSettings.Create(settings.LogSubmissionSettings);

            // we cached the static instance here, because is being used in the hotpath
            // by IsIntegrationEnabled method (called from all integrations)
            _domainMetadata = DomainMetadata.Instance;

            ExpandRouteTemplatesEnabled = settings.ExpandRouteTemplatesEnabled || !RouteTemplateResourceNamesEnabled;
        }
Exemple #10
0
            static void AppDomainCallback()
            {
                var result = DomainMetadata.ShouldAvoidAppDomain();

                AppDomain.CurrentDomain.SetData(TestDataKey, result);
            }
Exemple #11
0
 private List <Type> FilterPersistentTypeFormMetadata(DomainMetadata domainMetadata)
 {
     return(domainMetadata.DomainObject.AggregateRoots.Where(s => s.HasPersistentObject && s.PersistentObject != null)
            .Select(j => j.PersistentObject).ToList());
 }
Exemple #12
0
 public PersistentObjectActivator(DomainMetadata domainMetadata)
 {
     _domainMetadata = domainMetadata;
 }