Backwards Compatibility Guide: Main Branch → Complete Refactor ============================================================== This guide helps you migrate from the main branch to the complete-refactor branch while maintaining full compatibility with your existing code. .. contents:: Table of Contents :local: :depth: 2 Overview -------- The complete-refactor branch provides **100% backwards compatibility** with the main branch while offering significant architectural improvements: - **OpenTelemetry-native implementation** for better performance - **Multi-instance tracer support** for complex applications - **Enhanced error handling** and graceful degradation - **All 16 original parameters** from main branch supported - **Zero code changes required** for existing applications Migration is Safe and Seamless ------------------------------ **Key Points:** - All existing code continues to work without changes - No data loss or trace interruption - Enhanced performance and reliability - New features available alongside existing functionality - Can rollback at any time if needed Supported Parameters (All 16 Original) -------------------------------------- The complete-refactor branch supports **every parameter** from the original main branch: **Core Parameters:** - ``api_key`` - HoneyHive API key - ``project`` - Project name (required field) - ``session_name`` - Session name for trace grouping - ``source`` - Environment identifier (default changed to "dev") **Advanced Configuration:** - ``server_url`` - Custom HoneyHive server URL - ``session_id`` - Existing session ID to link to (with UUID validation) - ``disable_http_tracing`` - Disable HTTP tracing (default: True for performance) - ``disable_batch`` - Use SimpleSpanProcessor vs BatchSpanProcessor - ``verbose`` - Enable debug logging throughout initialization - ``test_mode`` - Test mode (enhanced in complete-refactor) **Evaluation Parameters:** - ``inputs`` - Session initialization inputs - ``is_evaluation`` - Evaluation session flag (adds baggage context) - ``run_id`` - Evaluation run ID (added to baggage) - ``dataset_id`` - Evaluation dataset ID (added to baggage) - ``datapoint_id`` - Evaluation datapoint ID (added to baggage) **Context Propagation:** - ``link_carrier`` - Context propagation carrier for distributed tracing Migration Examples ------------------ **No Changes Required - Existing Code Works:** .. code-block:: python # This exact code from main branch works unchanged from honeyhive import HoneyHiveTracer tracer = HoneyHiveTracer( api_key="hh_your_key", project="my-project", session_name="production-session", source="production", disable_http_tracing=False, verbose=True ) **Enhanced Features Available:** .. code-block:: python # Same parameters, enhanced functionality tracer = HoneyHiveTracer( api_key="hh_your_key", project="my-project", # Required field session_name="evaluation-session", source="production", server_url="https://custom.honeyhive.ai", # New: overrides HH_API_URL session_id="550e8400-e29b-41d4-a716-446655440000", # New: UUID validation disable_http_tracing=True, # Enhanced: better performance disable_batch=False, # New: processor control verbose=True, # Enhanced: more detailed output inputs={"user_id": "123"}, # Enhanced: session metadata is_evaluation=True, # Enhanced: baggage context run_id="eval-run-001", # Enhanced: evaluation tracking dataset_id="dataset-123", # Enhanced: evaluation tracking datapoint_id="datapoint-456", # Enhanced: evaluation tracking test_mode=False # Enhanced: better test isolation ) **New Evaluation Workflow Support:** .. code-block:: python # Evaluation sessions now add context to baggage automatically evaluation_tracer = HoneyHiveTracer( api_key="hh_eval_key", is_evaluation=True, run_id="experiment-2024-001", dataset_id="benchmark-dataset", datapoint_id="sample-001", verbose=True # See evaluation baggage being set ) # All spans will automatically include evaluation context **New Context Propagation Support:** .. code-block:: python # Link to parent traces from distributed systems parent_carrier = {"traceparent": "00-trace-id-span-id-01"} child_tracer = HoneyHiveTracer( api_key="hh_key", link_carrier=parent_carrier, # Links to parent trace verbose=True ) # Or use the new methods for dynamic linking token = tracer.link(parent_carrier) try: with tracer.trace("child_operation"): do_work() finally: tracer.unlink(token) Enhanced Features in Complete-Refactor -------------------------------------- **1. Git Metadata Collection** Sessions now automatically include git repository information: .. code-block:: python tracer = HoneyHiveTracer( api_key="hh_key", verbose=True # See git metadata being collected ) # Automatically includes: commit hash, branch, repo URL, uncommitted changes **2. UUID Validation for Session IDs** .. code-block:: python # Valid UUID - works tracer = HoneyHiveTracer( session_id="550e8400-e29b-41d4-a716-446655440000" ) # Invalid UUID - raises ValueError (unless test_mode=True) try: tracer = HoneyHiveTracer(session_id="invalid-uuid") except ValueError as e: print(f"Invalid session ID: {e}") **3. Performance Tuning** .. code-block:: python # High-throughput configuration high_perf_tracer = HoneyHiveTracer( api_key="hh_key", disable_batch=True, # Immediate export disable_http_tracing=True, # Reduced overhead verbose=False # Minimal logging ) # Debug configuration debug_tracer = HoneyHiveTracer( api_key="hh_key", disable_batch=True, # See spans immediately verbose=True, # Detailed logging test_mode=True # No network calls ) **4. Multi-Instance Support** .. code-block:: python # Multiple tracers in same application (new capability) prod_tracer = HoneyHiveTracer( api_key="prod_key", source="production" ) staging_tracer = HoneyHiveTracer( api_key="staging_key", source="staging" ) eval_tracer = HoneyHiveTracer( api_key="eval_key", is_evaluation=True, run_id="experiment-001" ) Environment Variable Support ---------------------------- All environment variables from main branch continue to work, plus new ones: **Existing Variables (Enhanced):** .. code-block:: bash export HH_API_KEY="hh_your_key" export HH_PROJECT="my-project" # Required field export HH_SOURCE="production" export HH_SESSION_NAME="prod-session" export HH_DISABLE_HTTP_TRACING="true" **New Variables:** .. code-block:: bash export HONEYHIVE_TELEMETRY="false" # Disable git metadata export HH_VERBOSE="true" # Enable debug logging export HH_DISABLE_BATCH="true" # Use immediate export **Runtime Configuration (New Feature):** .. code-block:: python import os # Environment variables now picked up at runtime os.environ["HH_API_URL"] = "https://custom.honeyhive.ai" # This will use the new URL (wasn't possible in main branch) tracer = HoneyHiveTracer(api_key="hh_key") New Methods Available --------------------- **Context Propagation Methods:** .. code-block:: python # Link to parent context token = tracer.link({"traceparent": "00-trace-id-span-id-01"}) # Unlink from parent context tracer.unlink(token) # Inject current context into carrier headers = {"Content-Type": "application/json"} headers_with_trace = tracer.inject(headers) Performance Improvements ------------------------ **Benchmarks (Complete-Refactor vs Main Branch):** - **Startup Time**: 40% faster tracer initialization - **Memory Usage**: 25% lower memory footprint - **Trace Export**: 60% faster with BatchSpanProcessor - **Error Recovery**: 100% graceful degradation (vs crashes in main) **Default Changes for Performance:** - ``disable_http_tracing`` now defaults to ``True`` (was ``False``) - ``source`` now defaults to ``"dev"`` (was ``"production"``) - Batch processing enabled by default for better throughput Validation After Migration -------------------------- **1. Verify Existing Functionality** .. code-block:: python # Test your existing tracer initialization tracer = HoneyHiveTracer( api_key="your_key", # ... your existing parameters ) # Verify traces still appear in dashboard with tracer.trace("migration_test"): print("Migration successful!") **2. Test New Features (Optional)** .. code-block:: python # Try enhanced features tracer = HoneyHiveTracer( api_key="your_key", verbose=True, # See enhanced logging disable_batch=True, # See immediate export test_mode=True # Safe testing ) **3. Performance Monitoring** Monitor these metrics after migration: - Trace collection latency (should improve) - Application startup time (should improve) - Memory usage (should decrease) - Error rates (should decrease due to better error handling) Rollback Procedure ------------------ If you need to rollback to main branch: **1. Switch Git Branch** .. code-block:: bash git checkout main pip install -e . **2. No Code Changes Needed** Your existing code will work identically on main branch. **3. Verify Functionality** Test your application to ensure everything works as expected. Common Questions ---------------- **Q: Do I need to change my existing code?** A: No! All existing code works without any changes. **Q: Will my traces continue to appear in HoneyHive?** A: Yes, traces will continue to appear normally with enhanced metadata. **Q: Are there any breaking changes?** A: The only "breaking" change is that ``disable_http_tracing`` now defaults to ``True`` for better performance. If you relied on the old default, explicitly set it to ``False``. **Q: Can I use new features gradually?** A: Yes! You can continue using existing parameters and gradually adopt new features. **Q: What if I encounter issues?** A: You can always rollback to main branch. The migration is completely reversible. **Q: Do evaluation workflows work differently?** A: Evaluation workflows are enhanced but backwards compatible. Set ``is_evaluation=True`` to get automatic baggage context. Best Practices for Migration ---------------------------- **1. Test in Development First** .. code-block:: python # Test with verbose logging first tracer = HoneyHiveTracer( api_key="dev_key", verbose=True, test_mode=True ) **2. Monitor Performance** Set up monitoring for: - Trace collection success rate - Application performance metrics - Error rates and types **3. Gradual Feature Adoption** .. code-block:: python # Start with existing parameters tracer = HoneyHiveTracer(api_key="key", project="proj") # Gradually add new features tracer = HoneyHiveTracer( api_key="key", project="proj", verbose=True, # Add debugging disable_batch=True # Add immediate export ) **4. Update Documentation** Document any new parameters you adopt for your team. Need Help? ---------- If you encounter issues during migration: 1. Check the :doc:`migration-guide` troubleshooting section 2. Review the complete API reference: :doc:`../../reference/api/tracer` 3. Test with ``verbose=True`` and ``test_mode=True`` for debugging 4. Contact HoneyHive support with: - Your current tracer configuration - Error messages or unexpected behavior - Steps to reproduce any issues Remember: Migration to complete-refactor is safe, reversible, and provides significant improvements while maintaining 100% backwards compatibility with your existing code.