Bringing things to order in workflows/ #363

Closed
atolstikhin wants to merge 12 commits from (deleted):v3 into v3
2 changed files with 10 additions and 14 deletions
Showing only changes of commit 268a8e2cb1 - Show all commits

View File

@ -55,10 +55,7 @@ func NewContext(ctx context.Context, md Metadata) context.Context {
if ctx == nil { if ctx == nil {
ctx = context.Background() ctx = context.Background()
} }
ctx = context.WithValue(ctx, mdKey{}, &rawMetadata{md}) return context.WithValue(ctx, mdKey{}, &rawMetadata{md})
ctx = context.WithValue(ctx, mdIncomingKey{}, &rawMetadata{})
ctx = context.WithValue(ctx, mdOutgoingKey{}, &rawMetadata{})
return ctx
} }
// SetOutgoingContext modify outgoing context with given metadata // SetOutgoingContext modify outgoing context with given metadata
@ -90,11 +87,7 @@ func NewIncomingContext(ctx context.Context, md Metadata) context.Context {
if ctx == nil { if ctx == nil {
ctx = context.Background() ctx = context.Background()
} }
ctx = context.WithValue(ctx, mdIncomingKey{}, &rawMetadata{md}) return context.WithValue(ctx, mdIncomingKey{}, &rawMetadata{md})
if v, ok := ctx.Value(mdOutgoingKey{}).(*rawMetadata); !ok || v == nil {
ctx = context.WithValue(ctx, mdOutgoingKey{}, &rawMetadata{})
}
return ctx
} }
// NewOutgoingContext creates a new context with outcoming metadata attached // NewOutgoingContext creates a new context with outcoming metadata attached
@ -102,11 +95,7 @@ func NewOutgoingContext(ctx context.Context, md Metadata) context.Context {
if ctx == nil { if ctx == nil {
ctx = context.Background() ctx = context.Background()
} }
ctx = context.WithValue(ctx, mdOutgoingKey{}, &rawMetadata{md}) return context.WithValue(ctx, mdOutgoingKey{}, &rawMetadata{md})
if v, ok := ctx.Value(mdIncomingKey{}).(*rawMetadata); !ok || v == nil {
ctx = context.WithValue(ctx, mdIncomingKey{}, &rawMetadata{})
}
return ctx
} }
// AppendOutgoingContext apends new md to context // AppendOutgoingContext apends new md to context

View File

@ -80,6 +80,13 @@ func TestPassing(t *testing.T) {
ctx = NewIncomingContext(ctx, md1) ctx = NewIncomingContext(ctx, md1)
testCtx(ctx) testCtx(ctx)
md, ok := FromOutgoingContext(ctx) md, ok := FromOutgoingContext(ctx)
if ok {
t.Fatalf("create outgoing context")
}
ctx = NewOutgoingContext(ctx, New(1))
testCtx(ctx)
md, ok = FromOutgoingContext(ctx)
if !ok { if !ok {
t.Fatalf("missing metadata from outgoing context") t.Fatalf("missing metadata from outgoing context")
} }