diff --git a/transaction.go b/transaction.go index 9d10a6886..60989512a 100644 --- a/transaction.go +++ b/transaction.go @@ -246,6 +246,7 @@ func (tx *Transaction) Discard() { return } tx.reset(tx.tracer) + tx.TransactionData = nil } // End enqueues tx for sending to the Elastic APM server. diff --git a/transaction_test.go b/transaction_test.go index d625516e5..657a5f48f 100644 --- a/transaction_test.go +++ b/transaction_test.go @@ -300,6 +300,20 @@ func TestTransactionSampleRateOmission(t *testing.T) { } } +func TestTransactionDiscard(t *testing.T) { + tracer, transport := transporttest.NewRecorderTracer() + defer tracer.Close() + + tx := tracer.StartTransaction("name", "type") + tx.Discard() + assert.Nil(t, tx.TransactionData) + tx.End() // ending after discarding should be a no-op + + tracer.Flush(nil) + payloads := transport.Payloads() + require.Empty(t, payloads) +} + func BenchmarkTransaction(b *testing.B) { tracer, err := apm.NewTracer("service", "") require.NoError(b, err)