Skip to content

Commit a8254ab

Browse files
committed
Small metrics handling optimizations/cleanup
1 parent 7ae7b13 commit a8254ab

22 files changed

+48
-89
lines changed

src/OpenTelemetry.Api.ProviderBuilderExtensions/Logs/OpenTelemetryDependencyInjectionLoggerProviderBuilderExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public static LoggerProviderBuilder AddInstrumentation<
3636

3737
loggerProviderBuilder.ConfigureBuilder((sp, builder) =>
3838
{
39-
builder.AddInstrumentation(() => sp.GetRequiredService<T>());
39+
builder.AddInstrumentation(sp.GetRequiredService<T>);
4040
});
4141

4242
return loggerProviderBuilder;

src/OpenTelemetry.Api.ProviderBuilderExtensions/Metrics/OpenTelemetryDependencyInjectionMeterProviderBuilderExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public static MeterProviderBuilder AddInstrumentation<
3636

3737
meterProviderBuilder.ConfigureBuilder((sp, builder) =>
3838
{
39-
builder.AddInstrumentation(() => sp.GetRequiredService<T>());
39+
builder.AddInstrumentation(sp.GetRequiredService<T>);
4040
});
4141

4242
return meterProviderBuilder;

src/OpenTelemetry.Api.ProviderBuilderExtensions/Trace/OpenTelemetryDependencyInjectionTracerProviderBuilderExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public static TracerProviderBuilder AddInstrumentation<
3636

3737
tracerProviderBuilder.ConfigureBuilder((sp, builder) =>
3838
{
39-
builder.AddInstrumentation(() => sp.GetRequiredService<T>());
39+
builder.AddInstrumentation(sp.GetRequiredService<T>);
4040
});
4141

4242
return tracerProviderBuilder;

src/OpenTelemetry.Api/Internal/OpenTelemetryApiEventSource.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace OpenTelemetry.Internal;
1212
[EventSource(Name = "OpenTelemetry-Api")]
1313
internal sealed class OpenTelemetryApiEventSource : EventSource
1414
{
15-
public static OpenTelemetryApiEventSource Log = new();
15+
public static readonly OpenTelemetryApiEventSource Log = new();
1616

1717
[NonEvent]
1818
public void ActivityContextExtractException(string format, Exception ex)

src/OpenTelemetry.Api/Trace/TracerProvider.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ protected override void Dispose(bool disposing)
7878
{
7979
if (disposing)
8080
{
81-
var tracers = Interlocked.CompareExchange(ref this.Tracers, null, this.Tracers);
81+
var tracers = Interlocked.Exchange(ref this.Tracers, null);
8282
if (tracers != null)
8383
{
8484
lock (tracers)
@@ -90,8 +90,6 @@ protected override void Dispose(bool disposing)
9090
tracer.ActivitySource = null;
9191
activitySource?.Dispose();
9292
}
93-
94-
tracers.Clear();
9593
}
9694
}
9795
}

src/OpenTelemetry.Exporter.OpenTelemetryProtocol/PersistentStorage/DirectorySizeTracker.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,14 @@ public DirectorySizeTracker(long maxSizeInBytes, string path)
3636
/// <returns>True if space is available else false.</returns>
3737
public bool IsSpaceAvailable(out long currentSizeInBytes)
3838
{
39-
currentSizeInBytes = Interlocked.Read(ref this.directoryCurrentSizeInBytes);
39+
currentSizeInBytes = Volatile.Read(ref this.directoryCurrentSizeInBytes);
4040
return currentSizeInBytes < this.maxSizeInBytes;
4141
}
4242

4343
public void RecountCurrentSize()
4444
{
4545
var size = CalculateFolderSize(this.path);
46-
Interlocked.Exchange(ref this.directoryCurrentSizeInBytes, size);
46+
Volatile.Write(ref this.directoryCurrentSizeInBytes, size);
4747
}
4848

4949
internal static long CalculateFolderSize(string path)

src/OpenTelemetry.Exporter.OpenTelemetryProtocol/PersistentStorage/PersistentStorageAbstractionsEventSource.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace OpenTelemetry.PersistentStorage.Abstractions;
99
[EventSource(Name = EventSourceName)]
1010
internal sealed class PersistentStorageAbstractionsEventSource : EventSource
1111
{
12-
public static PersistentStorageAbstractionsEventSource Log = new PersistentStorageAbstractionsEventSource();
12+
public static readonly PersistentStorageAbstractionsEventSource Log = new PersistentStorageAbstractionsEventSource();
1313
#if BUILDING_INTERNAL_PERSISTENT_STORAGE
1414
private const string EventSourceName = "OpenTelemetry-PersistentStorage-Abstractions-Otlp";
1515
#else

src/OpenTelemetry.Exporter.OpenTelemetryProtocol/PersistentStorage/PersistentStorageEventSource.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace OpenTelemetry.PersistentStorage.FileSystem;
99
[EventSource(Name = EventSourceName)]
1010
internal sealed class PersistentStorageEventSource : EventSource
1111
{
12-
public static PersistentStorageEventSource Log = new PersistentStorageEventSource();
12+
public static readonly PersistentStorageEventSource Log = new PersistentStorageEventSource();
1313
#if BUILDING_INTERNAL_PERSISTENT_STORAGE
1414
private const string EventSourceName = "OpenTelemetry-PersistentStorage-FileSystem-Otlp";
1515
#else

src/OpenTelemetry.Extensions.Hosting/Implementation/HostingExtensionsEventSource.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace OpenTelemetry.Extensions.Hosting.Implementation;
1111
[EventSource(Name = "OpenTelemetry-Extensions-Hosting")]
1212
internal sealed class HostingExtensionsEventSource : EventSource
1313
{
14-
public static HostingExtensionsEventSource Log = new();
14+
public static readonly HostingExtensionsEventSource Log = new();
1515

1616
[Event(1, Message = "OpenTelemetry TracerProvider was not found in application services. Tracing will remain disabled.", Level = EventLevel.Warning)]
1717
public void TracerProviderNotRegistered()

src/OpenTelemetry/Internal/InterlockedHelper.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,29 +18,28 @@ public static void Add(ref double location, double value)
1818
var returnedValue = Interlocked.CompareExchange(ref location, currentValue + value, currentValue);
1919
if (returnedValue != currentValue)
2020
{
21-
AddRare(ref location, value, returnedValue);
21+
AddRare(ref location, value);
2222
}
2323
}
2424

2525
[MethodImpl(MethodImplOptions.AggressiveInlining)]
2626
public static double Read(ref double location)
27-
=> Interlocked.CompareExchange(ref location, double.NaN, double.NaN);
27+
=> Interlocked.CompareExchange(ref location, 0, 0);
2828

2929
[MethodImpl(MethodImplOptions.NoInlining)]
30-
private static void AddRare(ref double location, double value, double currentValue)
30+
private static void AddRare(ref double location, double value)
3131
{
3232
var sw = default(SpinWait);
3333
while (true)
3434
{
3535
sw.SpinOnce();
3636

37+
double currentValue = Volatile.Read(ref location);
3738
var returnedValue = Interlocked.CompareExchange(ref location, currentValue + value, currentValue);
3839
if (returnedValue == currentValue)
3940
{
4041
break;
4142
}
42-
43-
currentValue = returnedValue;
4443
}
4544
}
4645
}

0 commit comments

Comments
 (0)