Skip to content

Commit

Permalink
Regression and Perf Fixes (#52956)
Browse files Browse the repository at this point in the history
  • Loading branch information
tarekgh committed May 19, 2021
1 parent 28e6327 commit 220fee4
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1058,13 +1058,6 @@ internal static Activity Create(ActivitySource source, string name, ActivityKind
}
}

activity.IsAllDataRequested = request == ActivitySamplingResult.AllData || request == ActivitySamplingResult.AllDataAndRecorded;

if (request == ActivitySamplingResult.AllDataAndRecorded)
{
activity.ActivityTraceFlags |= ActivityTraceFlags.Recorded;
}

if (parentId != null)
{
activity._parentId = parentId;
Expand All @@ -1083,6 +1076,13 @@ internal static Activity Create(ActivitySource source, string name, ActivityKind
activity._traceState = parentContext.TraceState;
}

activity.IsAllDataRequested = request == ActivitySamplingResult.AllData || request == ActivitySamplingResult.AllDataAndRecorded;

if (request == ActivitySamplingResult.AllDataAndRecorded)
{
activity.ActivityTraceFlags |= ActivityTraceFlags.Recorded;
}

if (startTime != default)
{
activity.StartTimeUtc = startTime.UtcDateTime;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -196,35 +196,35 @@ internal static void NotifyForPublishedInstrument(Instrument instrument)
}

[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal void NotifyMeasurement<T>(Instrument instrument, T measurement, ReadOnlySpan<KeyValuePair<string, object?>> tags, object? state)
internal void NotifyMeasurement<T>(Instrument instrument, T measurement, ReadOnlySpan<KeyValuePair<string, object?>> tags, object? state) where T : struct
{
if (measurement is byte byteMeasurement)
if (typeof(T) == typeof(byte))
{
_byteMeasurementCallback(instrument, byteMeasurement, tags, state);
_byteMeasurementCallback(instrument, (byte)(object)measurement, tags, state);
}
else if (measurement is short shortMeasurement)
if (typeof(T) == typeof(short))
{
_shortMeasurementCallback(instrument, shortMeasurement, tags, state);
_shortMeasurementCallback(instrument, (short)(object)measurement, tags, state);
}
else if (measurement is int intMeasurement)
if (typeof(T) == typeof(int))
{
_intMeasurementCallback(instrument, intMeasurement, tags, state);
_intMeasurementCallback(instrument, (int)(object)measurement, tags, state);
}
else if (measurement is long longMeasurement)
if (typeof(T) == typeof(long))
{
_longMeasurementCallback(instrument, longMeasurement, tags, state);
_longMeasurementCallback(instrument, (long)(object)measurement, tags, state);
}
else if (measurement is float floatMeasurement)
if (typeof(T) == typeof(float))
{
_floatMeasurementCallback(instrument, floatMeasurement, tags, state);
_floatMeasurementCallback(instrument, (float)(object)measurement, tags, state);
}
else if (measurement is double doubleMeasurement)
if (typeof(T) == typeof(double))
{
_doubleMeasurementCallback(instrument, doubleMeasurement, tags, state);
_doubleMeasurementCallback(instrument, (double)(object)measurement, tags, state);
}
else if (measurement is decimal decimalMeasurement)
if (typeof(T) == typeof(decimal))
{
_decimalMeasurementCallback(instrument, decimalMeasurement, tags, state);
_decimalMeasurementCallback(instrument, (decimal)(object)measurement, tags, state);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,37 @@ public void TestListeningToConstructedActivityEvents()
}).Dispose();
}

[ConditionalFact(typeof(RemoteExecutor), nameof(RemoteExecutor.IsSupported))]
public void EnsureRecordingTest()
{
RemoteExecutor.Invoke(() => {
Activity.ForceDefaultIdFormat = true;
Activity.DefaultIdFormat = ActivityIdFormat.W3C;
ActivitySource aSource = new ActivitySource("EnsureRecordingTest");
ActivityListener listener = new ActivityListener
{
ShouldListenTo = (activitySource) => true,
Sample = (ref ActivityCreationOptions<ActivityContext> activityOptions) =>
{
// Access activityOptions.TraceId to ensure generating the non-default value.
ActivityTraceId traceId = activityOptions.TraceId;
Assert.NotEqual(default(ActivityTraceId), traceId);
return ActivitySamplingResult.AllDataAndRecorded;
}
};
ActivitySource.AddActivityListener(listener);
Activity a = aSource.StartActivity("RecordedActivity");
Assert.NotNull(a);
Assert.True(a.Recorded);
Assert.True((a.Context.TraceFlags & ActivityTraceFlags.Recorded) != 0);
}).Dispose();
}

[ConditionalFact(typeof(RemoteExecutor), nameof(RemoteExecutor.IsSupported))]
public void TestExpectedListenersReturnValues()
{
Expand Down Expand Up @@ -947,7 +978,7 @@ public void TestActivityCreate()
Assert.Null(a3.Parent);
Assert.Equal("ParentId", a3.ParentId);
ActivityContext parentContext = new ActivityContext(ActivityTraceId.CreateRandom(), ActivitySpanId.CreateRandom(), ActivityTraceFlags.None);
ActivityContext parentContext = new ActivityContext(ActivityTraceId.CreateRandom(), ActivitySpanId.CreateRandom(), ActivityTraceFlags.Recorded);
using (Activity a4 = aSource.CreateActivity("a4", ActivityKind.Internal, parentContext, tags, links))
{
Assert.NotNull(a4);
Expand Down

0 comments on commit 220fee4

Please sign in to comment.