private Map inject()

in genie-common-internal/src/main/java/com/netflix/genie/common/internal/tracing/brave/impl/EnvVarBraveTracePropagatorImpl.java [201:246]


    private Map<String, String> inject(final TraceContext traceContext, final boolean isForAgent) {
        try {
            final Map<String, String> propagationContext = new HashMap<>();
            propagationContext.put(
                isForAgent ? GENIE_AGENT_B3_TRACE_ID_LOW_KEY : GENIE_JOB_B3_TRACE_ID_LOW_KEY,
                Long.toString(traceContext.traceId())
            );
            propagationContext.put(
                isForAgent ? GENIE_AGENT_B3_SPAN_ID_KEY : GENIE_JOB_B3_SPAN_ID_KEY,
                Long.toString(traceContext.spanId())
            );
            propagationContext.put(
                isForAgent ? GENIE_AGENT_B3_SAMPLED_KEY : GENIE_JOB_B3_SAMPLED_KEY,
                traceContext.sampled().toString()
            );

            // only propagate high bits of trace id if they're non-zero
            final long traceIdHigh = traceContext.traceIdHigh();
            if (traceIdHigh != NO_TRACE_ID_HIGH) {
                propagationContext.put(
                    isForAgent ? GENIE_AGENT_B3_TRACE_ID_HIGH_KEY : GENIE_JOB_B3_TRACE_ID_HIGH_KEY,
                    Long.toString(traceIdHigh)
                );
            }

            final Long parentSpanId = traceContext.parentId();
            if (parentSpanId != null) {
                propagationContext.put(
                    isForAgent ? GENIE_AGENT_B3_PARENT_SPAN_ID_KEY : GENIE_JOB_B3_PARENT_SPAN_ID_KEY,
                    Long.toString(parentSpanId)
                );
            }

            return propagationContext;
        } catch (final Throwable t) {
            LOG.warn(
                "Unable to inject trace context for propagation to {} due to {}",
                isForAgent ? "agent" : "job",
                t.getMessage(),
                t
            );
            // Since we don't know what has been injected and what hasn't for now just punt and return
            // empty so that downstream starts fresh
            return new HashMap<>();
        }
    }