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
|
|
}
|