Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

How to start trace with custom trace-id and parent-id?

Ouverte
#9,155 1 commentaire 1 réaction 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 2 jours

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
25/100
Type d'issue
Fonctionnalité
Clarté
À clarifier
Activité
À l'abandon
Stack technique
java, kafka

Piste de recherche

Commencez par les points d’entrée Java présentés dans l’exemple—GlobalTracer.get(), buildSpan(...).asChildOf() et CustomSpanContext—et comparez la manière dont les en-têtes Kafka stockés sont consommés dans le conteneur outbox. Déterminez quelle API prise en charge, s’il en existe une, accepte le trace-id et le parent-id tout en préservant le tracing distribué. C’est terminé lorsqu’un span provenant de publishFromOutbox apparaît dans la trace existante avec des logs corrélés.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

type: feature request
Library Name

micronaut

Library Version(s)

dd-trace:1.50.1

Describe the feature you'd like

Hi,

We are storing outbox events for Kafka in the database with current span context headers:

headers={
x-datadog-parent-id=1425649086485655485,
x-datadog-sampling-priority=1,
tracestate=dd=s:1;
o:rum;
p:13c8ec4a6e566fbd,
x-datadog-origin=rum,
traceparent=00-000000000000000024fefac4c68ae928-13c8ec4a6e566fbd-01,
x-datadog-trace-id=2665843752501438760
}

and when these outbox events are picked (by a different container), we want to trace that operation but attach those spans to an already existing trace so that we can have support for:

  • distributed tracing
  • distributed logs
Is your feature request related to a problem?

No response

Describe alternatives you've considered

This is what we tried

  void publishFromOutbox(final Outbox outboxEvent) {
    final var tracer = GlobalTracer.get();
    final Span span = tracer.buildSpan(JOBS)
      .withTag(DDTags.RESOURCE_NAME, OUTBOX_SCHEDULER_PUBLISH)
      .ignoreActiveSpan()
      .asChildOf(new CustomSpanContext(
        outboxEvent.headers().get(X_DATADOG_TRACE_ID), outboxEvent.headers().get(X_DATADOG_PARENT_ID)))
      .start();
    tracer.activateSpan(span);
    publish(outboxEvent);
    tracer.activeSpan().finish();
  }

but we can see this doesn't work. Trace is not created or attached to any existing trace.

How can we accomplish starting trace with custom trace-id and parent-id? For PHP services we are using this handy method that you provide

    /**
     * Apply the distributed tracing information on the current and future spans. That API can be called if there is no
     * other currently active span.
     *
     * The distributed tracing context can be reset by calling 'set_distributed_tracing_context("0", "0")'
     *
     * @param string $traceId The unique integer (128-bit unsigned) ID of the trace containing this span
     * @param string $parentId The span integer ID of the parent span
     * @param string|null $origin The distributed tracing origin
     * @param array|string|null $propagated_tags If provided, propagated tags from the root span will be cleared and
     * replaced by the given tags and applied to existing spans
     * @return bool 'true' if the distributed tracing context was properly set, else 'false' if an error occurred
     */
    function set_distributed_tracing_context(
        string $traceId,
        string $parentId,
        ?string $origin = null,
        array|string|null $propagated_tags = null
    ): bool {}
Additional context

No response

Langage dominant
Java
Étoiles
736
Forks
364
Merge moyen
3 j 9 h
PR mergées (30 j)
182

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de DataDog/dd-trace-java

Toutes les issues de DataDog/dd-trace-java

Issues similaires

Plus d'issues Java

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.