Skip to content

Commit 715b5db

Browse files
authored
Merge pull request #414 from DataDog/ivoanjo/update-process-context
[PROF-12646] Update OTel process context support with latest version of reference library
2 parents 619b4f7 + 19fe5dc commit 715b5db

5 files changed

Lines changed: 650 additions & 321 deletions

File tree

ddprof-lib/src/main/cpp/javaApi.cpp

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -440,9 +440,6 @@ Java_com_datadoghq_profiler_JVMAccess_healthCheck0(JNIEnv *env,
440440
return true;
441441
}
442442

443-
// Static variable to track the current published context
444-
static otel_process_ctx_result* current_published_context = nullptr;
445-
446443
extern "C" DLLEXPORT void JNICALL
447444
Java_com_datadoghq_profiler_OTelContext_setProcessCtx0(JNIEnv *env,
448445
jclass unused,
@@ -460,16 +457,19 @@ Java_com_datadoghq_profiler_OTelContext_setProcessCtx0(JNIEnv *env,
460457
JniString version_str(env, version);
461458
JniString tracer_version_str(env, tracer_version);
462459

460+
const char *host_name_attrs[] = {"host.name", hostname_str.c_str(), NULL};
461+
463462
otel_process_ctx_data data = {
464-
.deployment_environment_name = const_cast<char*>(env_str.c_str()),
465-
.host_name = const_cast<char*>(hostname_str.c_str()),
466-
.service_instance_id = const_cast<char*>(runtime_id_str.c_str()),
467-
.service_name = const_cast<char*>(service_str.c_str()),
468-
.service_version = const_cast<char*>(version_str.c_str()),
469-
.telemetry_sdk_language = const_cast<char*>("java"),
470-
.telemetry_sdk_version = const_cast<char*>(tracer_version_str.c_str()),
471-
.telemetry_sdk_name = const_cast<char*>("dd-trace-java"),
472-
.resources = NULL // TODO: Arbitrary tags not supported yet for Java
463+
.deployment_environment_name = env_str.c_str(),
464+
.service_instance_id = runtime_id_str.c_str(),
465+
.service_name = service_str.c_str(),
466+
.service_version = version_str.c_str(),
467+
.telemetry_sdk_language = "java",
468+
.telemetry_sdk_version = tracer_version_str.c_str(),
469+
.telemetry_sdk_name = "dd-trace-java",
470+
.resource_attributes = host_name_attrs,
471+
.extra_attributes = NULL,
472+
.thread_ctx_config = NULL
473473
};
474474

475475
otel_process_ctx_result result = otel_process_ctx_publish(&data);
@@ -491,8 +491,6 @@ Java_com_datadoghq_profiler_OTelContext_readProcessCtx0(JNIEnv *env, jclass unus
491491
// Convert C strings to Java strings
492492
jstring jDeploymentEnvironmentName = result.data.deployment_environment_name ?
493493
env->NewStringUTF(result.data.deployment_environment_name) : nullptr;
494-
jstring jHostName = result.data.host_name ?
495-
env->NewStringUTF(result.data.host_name) : nullptr;
496494
jstring jServiceInstanceId = result.data.service_instance_id ?
497495
env->NewStringUTF(result.data.service_instance_id) : nullptr;
498496
jstring jServiceName = result.data.service_name ?
@@ -505,7 +503,17 @@ Java_com_datadoghq_profiler_OTelContext_readProcessCtx0(JNIEnv *env, jclass unus
505503
env->NewStringUTF(result.data.telemetry_sdk_version) : nullptr;
506504
jstring jTelemetrySdkName = result.data.telemetry_sdk_name ?
507505
env->NewStringUTF(result.data.telemetry_sdk_name) : nullptr;
508-
// TODO: result.data.resources not supported yet for Java
506+
507+
// Extract host.name from resource_attributes
508+
jstring jHostName = nullptr;
509+
if (result.data.resource_attributes != NULL) {
510+
for (int i = 0; result.data.resource_attributes[i] != NULL; i += 2) {
511+
if (strcmp(result.data.resource_attributes[i], "host.name") == 0 && result.data.resource_attributes[i + 1] != NULL) {
512+
jHostName = env->NewStringUTF(result.data.resource_attributes[i + 1]);
513+
break;
514+
}
515+
}
516+
}
509517

510518
otel_process_ctx_read_drop(&result);
511519

0 commit comments

Comments
 (0)