mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-10-07 15:09:07 +00:00
fix(observability): finish abandoned transactions
This commit is contained in:
parent
a0abb76da3
commit
94a297d144
2 changed files with 42 additions and 1 deletions
|
|
@ -152,6 +152,43 @@ public class SentryObservabilityTests
|
||||||
transaction.Verify(t => t.Finish(SpanStatus.Cancelled), Times.Never);
|
transaction.Verify(t => t.Finish(SpanStatus.Cancelled), Times.Never);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Dispose_UnfinishedTransaction_FinishesOnceWithUnknownErrorStatus()
|
||||||
|
{
|
||||||
|
var (hub, _) = CreateHub();
|
||||||
|
var transaction = new Mock<ITransactionTracer>();
|
||||||
|
hub.Setup(h => h.StartTransaction(
|
||||||
|
It.IsAny<ITransactionContext>(),
|
||||||
|
It.IsAny<IReadOnlyDictionary<string, object?>>()))
|
||||||
|
.Returns(transaction.Object);
|
||||||
|
|
||||||
|
var handle = SentryObservability.BeginBackgroundTransaction(hub.Object, "job", "Fn");
|
||||||
|
handle.Dispose();
|
||||||
|
handle.Dispose();
|
||||||
|
|
||||||
|
transaction.Verify(t => t.Finish(SpanStatus.UnknownError), Times.Once);
|
||||||
|
transaction.Verify(t => t.Finish(It.IsAny<SpanStatus>()), Times.Once);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Dispose_AfterFinish_DoesNotFinishAgain()
|
||||||
|
{
|
||||||
|
var (hub, _) = CreateHub();
|
||||||
|
var transaction = new Mock<ITransactionTracer>();
|
||||||
|
hub.Setup(h => h.StartTransaction(
|
||||||
|
It.IsAny<ITransactionContext>(),
|
||||||
|
It.IsAny<IReadOnlyDictionary<string, object?>>()))
|
||||||
|
.Returns(transaction.Object);
|
||||||
|
|
||||||
|
var handle = SentryObservability.BeginBackgroundTransaction(hub.Object, "job", "Fn");
|
||||||
|
handle.FinishOk();
|
||||||
|
handle.Dispose();
|
||||||
|
|
||||||
|
transaction.Verify(t => t.Finish(SpanStatus.Ok), Times.Once);
|
||||||
|
transaction.Verify(t => t.Finish(SpanStatus.UnknownError), Times.Never);
|
||||||
|
transaction.Verify(t => t.Finish(It.IsAny<SpanStatus>()), Times.Once);
|
||||||
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void TelemetryScrubber_RemovesRequestSecrets_AndKeepsOnlyOpaqueUserId()
|
public void TelemetryScrubber_RemovesRequestSecrets_AndKeepsOnlyOpaqueUserId()
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -264,5 +264,9 @@ public sealed class SentryBackgroundTransactionHandle : IDisposable
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose() => _scope.Dispose();
|
public void Dispose()
|
||||||
|
{
|
||||||
|
Finish(() => _transaction.Finish(SpanStatus.UnknownError));
|
||||||
|
_scope.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue