Partilhar via


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

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

O System.Diagnostics.ActivitySamplingResult enum 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:

Atividade Amostragem Resultado Atividade criada Atividade. Registada Atividade.IsAllDataRequested
Nenhum Não
Dados de Propagação Sim Falso Falso
Todos os dados Sim Falso Verdadeiro
TodosOsDadosEGravados Sim Verdadeiro Verdadeiro

Também é possível criar um Activity associado a 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 eram definidas da seguinte maneira:

Atividade Amostragem Resultado Atividade criada Atividade. Registada Atividade.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:

Atividade Amostragem Resultado Atividade criada Atividade. Registada Atividade.IsAllDataRequested
Dados de Propagação Sim Falso Falso

Versão introduzida

.NET 10

Tipo de mudança de rutura

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

Motivo da mudança

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

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

Se você usar o OpenTelemetry .NET e tiver personalizado o amostrador, verifique a configuração do amostrador. A configuração padrão do OpenTelemetry .NET utiliza um algoritmo de base parental que não é afetado.

APIs afetadas