Check EnabledFor* individually for non-self-describing events (#46555)
authorBrian Robbins <brianrob@microsoft.com>
Tue, 5 Jan 2021 16:54:55 +0000 (08:54 -0800)
committerGitHub <noreply@github.com>
Tue, 5 Jan 2021 16:54:55 +0000 (08:54 -0800)
src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventSource.cs

index 7b5f398..9a96d44 100644 (file)
@@ -1242,40 +1242,37 @@ namespace System.Diagnostics.Tracing
                     }
 
 #if FEATURE_MANAGED_ETW
-                    if (m_eventData[eventId].EnabledForETW
+                    if (!SelfDescribingEvents)
+                    {
+                        if (m_eventData[eventId].EnabledForETW && !m_etwProvider.WriteEvent(ref m_eventData[eventId].Descriptor, m_eventData[eventId].EventHandle, pActivityId, relatedActivityId, eventDataCount, (IntPtr)data))
+                            ThrowEventSourceException(m_eventData[eventId].Name);
+#if FEATURE_PERFTRACING
+                        if (m_eventData[eventId].EnabledForEventPipe && !m_eventPipeProvider.WriteEvent(ref m_eventData[eventId].Descriptor, m_eventData[eventId].EventHandle, pActivityId, relatedActivityId, eventDataCount, (IntPtr)data))
+                            ThrowEventSourceException(m_eventData[eventId].Name);
+#endif // FEATURE_PERFTRACING
+                    }
+                    else if (m_eventData[eventId].EnabledForETW
 #if FEATURE_PERFTRACING
                             || m_eventData[eventId].EnabledForEventPipe
 #endif // FEATURE_PERFTRACING
-                        )
+                            )
                     {
-                        if (!SelfDescribingEvents)
+                        TraceLoggingEventTypes? tlet = m_eventData[eventId].TraceLoggingEventTypes;
+                        if (tlet == null)
                         {
-                            if (!m_etwProvider.WriteEvent(ref m_eventData[eventId].Descriptor, m_eventData[eventId].EventHandle, pActivityId, relatedActivityId, eventDataCount, (IntPtr)data))
-                                ThrowEventSourceException(m_eventData[eventId].Name);
-#if FEATURE_PERFTRACING
-                            if (!m_eventPipeProvider.WriteEvent(ref m_eventData[eventId].Descriptor, m_eventData[eventId].EventHandle, pActivityId, relatedActivityId, eventDataCount, (IntPtr)data))
-                                ThrowEventSourceException(m_eventData[eventId].Name);
-#endif // FEATURE_PERFTRACING
+                            tlet = new TraceLoggingEventTypes(m_eventData[eventId].Name,
+                                                                m_eventData[eventId].Tags,
+                                                                m_eventData[eventId].Parameters);
+                            Interlocked.CompareExchange(ref m_eventData[eventId].TraceLoggingEventTypes, tlet, null);
                         }
-                        else
+                        EventSourceOptions opt = new EventSourceOptions
                         {
-                            TraceLoggingEventTypes? tlet = m_eventData[eventId].TraceLoggingEventTypes;
-                            if (tlet == null)
-                            {
-                                tlet = new TraceLoggingEventTypes(m_eventData[eventId].Name,
-                                                                    m_eventData[eventId].Tags,
-                                                                    m_eventData[eventId].Parameters);
-                                Interlocked.CompareExchange(ref m_eventData[eventId].TraceLoggingEventTypes, tlet, null);
-                            }
-                            EventSourceOptions opt = new EventSourceOptions
-                            {
-                                Keywords = (EventKeywords)m_eventData[eventId].Descriptor.Keywords,
-                                Level = (EventLevel)m_eventData[eventId].Descriptor.Level,
-                                Opcode = (EventOpcode)m_eventData[eventId].Descriptor.Opcode
-                            };
+                            Keywords = (EventKeywords)m_eventData[eventId].Descriptor.Keywords,
+                            Level = (EventLevel)m_eventData[eventId].Descriptor.Level,
+                            Opcode = (EventOpcode)m_eventData[eventId].Descriptor.Opcode
+                        };
 
-                            WriteMultiMerge(m_eventData[eventId].Name, ref opt, tlet, pActivityId, relatedActivityId, data);
-                        }
+                        WriteMultiMerge(m_eventData[eventId].Name, ref opt, tlet, pActivityId, relatedActivityId, data);
                     }
 #endif // FEATURE_MANAGED_ETW