mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-09-30 08:23:12 +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);
|
||||
}
|
||||
|
||||
[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]
|
||||
public void TelemetryScrubber_RemovesRequestSecrets_AndKeepsOnlyOpaqueUserId()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -264,5 +264,9 @@ public sealed class SentryBackgroundTransactionHandle : IDisposable
|
|||
finish();
|
||||
}
|
||||
|
||||
public void Dispose() => _scope.Dispose();
|
||||
public void Dispose()
|
||||
{
|
||||
Finish(() => _transaction.Finish(SpanStatus.UnknownError));
|
||||
_scope.Dispose();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue