mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2025-01-30 04:40:41 +02:00
sdk/trace: Refine context cancellation in batchSpanProcessor.ForceFlush (#4369)
This commit is contained in:
parent
b4264c53bc
commit
4f0d73cbc2
@ -50,6 +50,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
|
|||||||
- If a Reader's AggregationSelector return nil or DefaultAggregation the pipeline will use the default aggregation. (#4350)
|
- If a Reader's AggregationSelector return nil or DefaultAggregation the pipeline will use the default aggregation. (#4350)
|
||||||
- Log a suggested view that fixes instrument conflicts in `go.opentelemetry.io/otel/sdk/metric`. (#4349)
|
- Log a suggested view that fixes instrument conflicts in `go.opentelemetry.io/otel/sdk/metric`. (#4349)
|
||||||
- Fix possible panic, deadlock and race condition in batch span processor in `go.opentelemetry.io/otel/sdk/trace`. (#4353)
|
- Fix possible panic, deadlock and race condition in batch span processor in `go.opentelemetry.io/otel/sdk/trace`. (#4353)
|
||||||
|
- Improve context cancelation handling in batch span processor's `ForceFlush` in `go.opentelemetry.io/otel/sdk/trace`. (#4369)
|
||||||
|
|
||||||
## [1.16.0/0.39.0] 2023-05-18
|
## [1.16.0/0.39.0] 2023-05-18
|
||||||
|
|
||||||
|
@ -187,6 +187,11 @@ func (f forceFlushSpan) SpanContext() trace.SpanContext {
|
|||||||
|
|
||||||
// ForceFlush exports all ended spans that have not yet been exported.
|
// ForceFlush exports all ended spans that have not yet been exported.
|
||||||
func (bsp *batchSpanProcessor) ForceFlush(ctx context.Context) error {
|
func (bsp *batchSpanProcessor) ForceFlush(ctx context.Context) error {
|
||||||
|
// Interrupt if context is already canceled.
|
||||||
|
if err := ctx.Err(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
// Do nothing after Shutdown.
|
// Do nothing after Shutdown.
|
||||||
if bsp.stopped.Load() {
|
if bsp.stopped.Load() {
|
||||||
return nil
|
return nil
|
||||||
|
@ -560,6 +560,18 @@ func TestBatchSpanProcessorForceFlushCancellation(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestBatchSpanProcessorForceFlushTimeout(t *testing.T) {
|
||||||
|
// Add timeout to context to test deadline
|
||||||
|
ctx, cancel := context.WithTimeout(context.Background(), time.Nanosecond)
|
||||||
|
defer cancel()
|
||||||
|
<-ctx.Done()
|
||||||
|
|
||||||
|
bsp := sdktrace.NewBatchSpanProcessor(indefiniteExporter{})
|
||||||
|
if got, want := bsp.ForceFlush(ctx), context.DeadlineExceeded; !errors.Is(got, want) {
|
||||||
|
t.Errorf("expected %q error, got %v", want, got)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestBatchSpanProcessorForceFlushQueuedSpans(t *testing.T) {
|
func TestBatchSpanProcessorForceFlushQueuedSpans(t *testing.T) {
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user