mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-23 02:45:38 -06:00
3bc188efe5
* [AI] fix(diagnostics-otel): keep telemetry exporting across in-process restarts Owned diagnostics-otel generations previously registered their OpenTelemetry providers globally and only shut the providers down on stop. The pinned sdk-node registers globals without override and never unregisters them, so a second in-process generation (config-watcher reload, OPENCLAW_NO_RESPAWN=1, containers) kept exporting through the first, already-shutdown providers and telemetry silently stopped. Switch owned mode to private BasicTracerProvider + MeterProvider instances whose handles are injected directly into the existing recorder runtime, and keep the preloaded (OPENCLAW_OTEL_PRELOADED=1) mode on the host's global providers without ever registering or replacing globals. Resource detection honors the pinned NodeSDK OTEL_NODE_RESOURCE_DETECTORS contract (unset defaults to env+process+host; none/subset/all are respected), and the unused @opentelemetry/sdk-node dependency is removed with a minimal lockfile update. Adds a real-SDK two-generation restart regression, real-SDK resource-detector selection coverage, migrates the unit mocks to the provider lifecycle, and updates the OpenTelemetry docs. Fixes #119997 Co-Authored-By: glm-5.2 <noreply@anthropic.com> * [AI] test(diagnostics-otel): restore OpenTelemetry globals after restart test The restart regression disables global context, metrics, propagation, and trace APIs and forces OPENCLAW_OTEL_PRELOADED=0, but its cleanup only reset diagnostic events, so a later test in the same worker could inherit no-op providers. Snapshot the prior global registrations and preloaded env at module load, and re-register/restore them in afterEach, matching the existing exporter-health integration test pattern. Co-Authored-By: glm-5.2 <noreply@anthropic.com> * [AI] fix(diagnostics-otel): reconcile private providers with OTEL_SDK_DISABLED Rebase onto main after #119961 (honor OTEL_SDK_DISABLED) changed the disabled admission path to return before SDK construction. Restore the removed getBooleanFromEnv import, drop the stale ownedNodeSdkDisabled guard, and update disabled-mode tests to the new semantics (all routes off, disabled runtime registered) plus the private-provider signal path for the integration suite. Related to #119997 Co-Authored-By: Claude <noreply@anthropic.com> * fix(diagnostics-otel): isolate restartable provider generations * test(diagnostics-otel): prove same-pid generation routing * test(diagnostics-otel): use supported watcher reload mode * test(diagnostics-otel): satisfy ownership proof gates * test(diagnostics-otel): use managed proof cleanup * test(diagnostics-otel): verify injected trace ancestry --------- Co-authored-by: glm-5.2 <noreply@anthropic.com> Co-authored-by: Vincent Koc <vincentkoc@ieee.org>