Compartilhar via


Alteração do comportamento de ActivitySource.CreateActivity e ActivitySource.StartActivity

As APIs ActivitySource.CreateActivity e ActivitySource.StartActivity retornam apenas uma Activity quando há um ouvinte registrado que decide que a instância deve ser criada. Isso é geralmente conhecido como amostragem.

A enumeração System.Diagnostics.ActivitySamplingResult define as possíveis decisões de amostragem.

Ao criar um Activity sem um pai, ActivitySamplingResult determina se o Activity é criado e, em seguida, como as propriedades Recorded e IsAllDataRequested são definidas:

ResultadoDeAmostragemDeAtividade Atividade criada Activity.Recorded Activity.IsAllDataRequested
Nenhum Não
Dados de Propagação Sim Falso Falso
AllData Sim Falso Verdadeiro
AllDataAndRecorded Sim Verdadeiro Verdadeiro

Também é possível criar um Activity com um pai. O pai pode estar no mesmo processo ou pode ser um pai remoto propagado para o processo atual.

Comportamento anterior

Anteriormente, ao criar um Activity como PropagationData com um pai marcado como Recorded, as propriedades Recorded e IsAllDataRequested foram definidas da seguinte maneira:

ResultadoDeAmostragemDeAtividade Atividade criada Activity.Recorded Activity.IsAllDataRequested
Dados de Propagação Sim Verdadeiro Falso

Novo comportamento

A partir do .NET 10, quando você cria um Activity como PropagationData com um pai marcado como Recorded, as propriedades Recorded e IsAllDataRequested são definidas da seguinte maneira:

ResultadoDeAmostragemDeAtividade Atividade criada Activity.Recorded Activity.IsAllDataRequested
Dados de Propagação Sim Falso Falso

Versão introduzida

.NET 10

Tipo de alteração interruptiva

Essa alteração é uma mudança comportamental .

Motivo da alteração

O comportamento anterior não seguiu a especificação OpenTelemetry.

Se você tiver implementado ActivityListener.Sample diretamente E se usa ActivitySamplingResult.PropagationData, verifique se não depende do comportamento falho. Para restaurar o comportamento anterior, você pode definir Activity.ActivityTraceFlags para Recorded após a chamada CreateActivity ou StartActivity.

Se você usar o OpenTelemetry .NET e tiver personalizado o sampler, verifique a configuração do sampler. A configuração padrão do .NET do OpenTelemetry usa um algoritmo baseado em pai que não é afetado.

APIs afetadas