Skip to content

Commit 4292c46

Browse files
committed
Push SentryTransaction extras into the Contexts.Trace.Data element
1 parent bcfde36 commit 4292c46

File tree

2 files changed

+18
-11
lines changed

2 files changed

+18
-11
lines changed

src/Sentry/Protocol/Trace.cs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace Sentry.Protocol;
77
/// <summary>
88
/// Trace context data.
99
/// </summary>
10-
public class Trace : ITraceContext, ISentryJsonSerializable, ICloneable<Trace>, IUpdatable<Trace>
10+
public class Trace : ITraceContext, IHasExtra, ISentryJsonSerializable, ICloneable<Trace>, IUpdatable<Trace>
1111
{
1212
/// <summary>
1313
/// Tells Sentry which type of context this is.
@@ -103,6 +103,7 @@ public void WriteTo(Utf8JsonWriter writer, IDiagnosticLogger? logger)
103103
writer.WriteString("origin", Origin ?? Internal.OriginHelper.Manual);
104104
writer.WriteStringIfNotWhiteSpace("description", Description);
105105
writer.WriteStringIfNotWhiteSpace("status", Status?.ToString().ToSnakeCase());
106+
writer.WriteDictionaryIfNotEmpty("data", _extra, logger);
106107

107108
writer.WriteEndObject();
108109
}
@@ -120,6 +121,7 @@ public static Trace FromJson(JsonElement json)
120121
var description = json.GetPropertyOrNull("description")?.GetString();
121122
var status = json.GetPropertyOrNull("status")?.GetString()?.Replace("_", "").ParseEnum<SpanStatus>();
122123
var isSampled = json.GetPropertyOrNull("sampled")?.GetBoolean();
124+
var extra = json.GetPropertyOrNull("data")?.GetDictionaryOrNull() ?? new();
123125

124126
return new Trace
125127
{
@@ -130,7 +132,19 @@ public static Trace FromJson(JsonElement json)
130132
Origin = origin,
131133
Description = description,
132134
Status = status,
133-
IsSampled = isSampled
135+
IsSampled = isSampled,
136+
_extra = extra
134137
};
135138
}
139+
140+
141+
// not readonly for serialization
142+
private Dictionary<string, object?> _extra = new();
143+
144+
/// <inheritdoc />
145+
public IReadOnlyDictionary<string, object?> Extra => _extra;
146+
147+
/// <inheritdoc />
148+
public void SetExtra(string key, object? value)
149+
=> _extra[key] = value;
136150
}

src/Sentry/SentryTransaction.cs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -179,11 +179,9 @@ public IReadOnlyList<string> Fingerprint
179179
/// <inheritdoc />
180180
public IReadOnlyCollection<Breadcrumb> Breadcrumbs => _breadcrumbs;
181181

182-
// Not readonly because of deserialization
183-
private Dictionary<string, object?> _extra = new();
184182

185183
/// <inheritdoc />
186-
public IReadOnlyDictionary<string, object?> Extra => _extra;
184+
public IReadOnlyDictionary<string, object?> Extra => Contexts.Trace.Extra;
187185

188186
// Not readonly because of deserialization
189187
private Dictionary<string, string> _tags = new();
@@ -270,7 +268,6 @@ public SentryTransaction(ITransactionTracer tracer)
270268
Sdk = tracer.Sdk;
271269
Fingerprint = tracer.Fingerprint;
272270
_breadcrumbs = tracer.Breadcrumbs.ToList();
273-
_extra = tracer.Extra.ToDict();
274271
_tags = tracer.Tags.ToDict();
275272

276273
_spans = FromTracerSpans(tracer);
@@ -340,7 +337,7 @@ public void AddBreadcrumb(Breadcrumb breadcrumb) =>
340337

341338
/// <inheritdoc />
342339
public void SetExtra(string key, object? value) =>
343-
_extra[key] = value;
340+
Contexts.Trace.SetExtra(key, value);
344341

345342
/// <inheritdoc />
346343
public void SetTag(string key, string value) =>
@@ -401,7 +398,6 @@ public void WriteTo(Utf8JsonWriter writer, IDiagnosticLogger? logger)
401398
writer.WriteSerializable("sdk", Sdk, logger);
402399
writer.WriteStringArrayIfNotEmpty("fingerprint", _fingerprint);
403400
writer.WriteArrayIfNotEmpty("breadcrumbs", _breadcrumbs, logger);
404-
writer.WriteDictionaryIfNotEmpty("extra", _extra, logger);
405401
writer.WriteStringDictionaryIfNotEmpty("tags", _tags!);
406402
writer.WriteArrayIfNotEmpty("spans", _spans, logger);
407403
writer.WriteDictionaryIfNotEmpty("measurements", _measurements, logger);
@@ -434,8 +430,6 @@ public static SentryTransaction FromJson(JsonElement json)
434430
.EnumerateArray().Select(j => j.GetString()!).ToArray();
435431
var breadcrumbs = json.GetPropertyOrNull("breadcrumbs")?
436432
.EnumerateArray().Select(Breadcrumb.FromJson).ToList() ?? new();
437-
var extra = json.GetPropertyOrNull("extra")?
438-
.GetDictionaryOrNull() ?? new();
439433
var tags = json.GetPropertyOrNull("tags")?
440434
.GetStringDictionaryOrNull()?.WhereNotNullValue().ToDict() ?? new();
441435
var measurements = json.GetPropertyOrNull("measurements")?
@@ -459,7 +453,6 @@ public static SentryTransaction FromJson(JsonElement json)
459453
Sdk = sdk,
460454
_fingerprint = fingerprint,
461455
_breadcrumbs = breadcrumbs,
462-
_extra = extra,
463456
_tags = tags,
464457
_measurements = measurements,
465458
_spans = spans

0 commit comments

Comments
 (0)