 9bdcbe0447
			
		
	
	9bdcbe0447
	
	
	
		
			
			Major integrations and fixes: - Added BACKBEAT SDK integration for P2P operation timing - Implemented beat-aware status tracking for distributed operations - Added Docker secrets support for secure license management - Resolved KACHING license validation via HTTPS/TLS - Updated docker-compose configuration for clean stack deployment - Disabled rollback policies to prevent deployment failures - Added license credential storage (CHORUS-DEV-MULTI-001) Technical improvements: - BACKBEAT P2P operation tracking with phase management - Enhanced configuration system with file-based secrets - Improved error handling for license validation - Clean separation of KACHING and CHORUS deployment stacks 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package loggabletracer
 | |
| 
 | |
| import opentracing "github.com/opentracing/opentracing-go"
 | |
| 
 | |
| type accessorPropagator struct {
 | |
| 	tracer *LoggableTracer
 | |
| }
 | |
| 
 | |
| // DelegatingCarrier is a flexible carrier interface which can be implemented
 | |
| // by types which have a means of storing the trace metadata and already know
 | |
| // how to serialize themselves (for example, protocol buffers).
 | |
| type DelegatingCarrier interface {
 | |
| 	SetState(traceID, spanID uint64, sampled bool)
 | |
| 	State() (traceID, spanID uint64, sampled bool)
 | |
| 	SetBaggageItem(key, value string)
 | |
| 	GetBaggage(func(key, value string))
 | |
| }
 | |
| 
 | |
| func (p *accessorPropagator) Inject(
 | |
| 	spanContext opentracing.SpanContext,
 | |
| 	carrier interface{},
 | |
| ) error {
 | |
| 	dc, ok := carrier.(DelegatingCarrier)
 | |
| 	if !ok || dc == nil {
 | |
| 		return opentracing.ErrInvalidCarrier
 | |
| 	}
 | |
| 	sc, ok := spanContext.(SpanContext)
 | |
| 	if !ok {
 | |
| 		return opentracing.ErrInvalidSpanContext
 | |
| 	}
 | |
| 	dc.SetState(sc.TraceID, sc.SpanID, sc.Sampled)
 | |
| 	for k, v := range sc.Baggage {
 | |
| 		dc.SetBaggageItem(k, v)
 | |
| 	}
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func (p *accessorPropagator) Extract(
 | |
| 	carrier interface{},
 | |
| ) (opentracing.SpanContext, error) {
 | |
| 	dc, ok := carrier.(DelegatingCarrier)
 | |
| 	if !ok || dc == nil {
 | |
| 		return nil, opentracing.ErrInvalidCarrier
 | |
| 	}
 | |
| 
 | |
| 	traceID, spanID, sampled := dc.State()
 | |
| 	sc := SpanContext{
 | |
| 		TraceID: traceID,
 | |
| 		SpanID:  spanID,
 | |
| 		Sampled: sampled,
 | |
| 		Baggage: nil,
 | |
| 	}
 | |
| 	dc.GetBaggage(func(k, v string) {
 | |
| 		if sc.Baggage == nil {
 | |
| 			sc.Baggage = map[string]string{}
 | |
| 		}
 | |
| 		sc.Baggage[k] = v
 | |
| 	})
 | |
| 
 | |
| 	return sc, nil
 | |
| }
 |