Skip to content

Conversation

@hassiebp
Copy link
Contributor

@hassiebp hassiebp commented Dec 1, 2025

Important

Reuse tracer_provider during reinitialization in LangfuseResourceManager to maintain consistent tracing behavior.

  • Behavior:
    • Reuse tracer_provider in _create_client_from_instance() in get_client.py by passing instance.tracer_provider.
    • Set self.tracer_provider in _initialize_instance() in resource_manager.py to reuse existing tracer_provider.
  • Functions:
    • Modify _create_client_from_instance() to include tracer_provider parameter.
    • Update _initialize_instance() to set self.tracer_provider with passed or initialized tracer_provider.

This description was created by Ellipsis for 57b2c3d. You can customize this summary. It will automatically update as commits are pushed.

Disclaimer: Experimental PR review

Greptile Overview

Greptile Summary

Preserves custom tracer_provider when reinitializing Langfuse clients through get_client().

  • Fixed bug: The resource manager now stores the passed tracer_provider as an instance attribute (resource_manager.py:182)
  • Fixed propagation: _create_client_from_instance now passes the stored tracer_provider when creating new client instances (get_client.py:55)
  • Impact: Ensures custom OpenTelemetry tracer providers are reused across client reinitialization, maintaining consistent tracing configuration

Confidence Score: 5/5

  • This PR is safe to merge with minimal risk
  • The changes are minimal, focused, and directly address a bug where custom tracer providers weren't being preserved during client reinitialization. Both changes are simple attribute assignments that maintain existing behavior while fixing the missing propagation. No breaking changes or side effects expected.
  • No files require special attention

Important Files Changed

File Analysis

Filename Score Overview
langfuse/_client/resource_manager.py 5/5 Stores passed tracer_provider as instance attribute for later reuse during client reinitialization
langfuse/_client/get_client.py 5/5 Passes tracer_provider from resource manager when creating new client instances to preserve custom tracer configuration

Sequence Diagram

sequenceDiagram
    participant User
    participant Langfuse
    participant ResourceManager
    participant get_client
    participant _create_client_from_instance
    
    User->>Langfuse: new Langfuse(tracer_provider=custom_provider)
    Langfuse->>ResourceManager: __new__(tracer_provider=custom_provider)
    ResourceManager->>ResourceManager: _initialize_instance()
    Note over ResourceManager: tracer_provider stored or initialized
    ResourceManager->>ResourceManager: self.tracer_provider = tracer_provider
    ResourceManager-->>Langfuse: singleton instance
    
    User->>get_client: get_client()
    get_client->>get_client: Look up instance in _instances
    get_client->>_create_client_from_instance: _create_client_from_instance(instance)
    _create_client_from_instance->>Langfuse: new Langfuse(tracer_provider=instance.tracer_provider)
    Note over _create_client_from_instance,Langfuse: Passes tracer_provider to preserve custom config
    Langfuse->>ResourceManager: __new__(tracer_provider=instance.tracer_provider)
    Note over ResourceManager: Reuses existing singleton with same tracer_provider
    ResourceManager-->>Langfuse: existing instance
    Langfuse-->>get_client: client with preserved tracer_provider
    get_client-->>User: client instance
Loading

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 files reviewed, no comments

Edit Code Review Agent Settings | Greptile

@hassiebp hassiebp merged commit 863b27a into main Dec 1, 2025
12 checks passed
@hassiebp hassiebp deleted the fix-tracer-provider-on-instance branch December 1, 2025 18:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants