-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Propogate context for better span correlation of recording viewing #49142
Conversation
9ee8754
to
76107ea
Compare
Traces generated from playing back session recordings were incomplete due to the correct context not being used at various levels of the events and player code. This attempts to rectify that by setting the correct context.Context along the way.
76107ea
to
0431952
Compare
ctx := context.Background() | ||
if cfg.Context != nil { | ||
ctx = cfg.Context | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Isn't it better to pass it as a first argument to New
? I get New
shouldn't get context, but it shouldn't start goroutines either. At least it'd be clearer it does something beyond creation. Or while changing the signature (adding a new argument) possibly renaming to Start
or something is an option.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree the better approach would probably be to separate creating the Player from starting the playback. However, I wasn't sure that making such changes here was wise.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought Start(ctx context.Context, cfg *Config) (*Player, error)
could both create and start the Player (same as New
does now). Would it be a big change to replace New
with that?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not really sure that's much better. I think I'd prefer splitting initialization of the player and starting the play back, though that has idempotency concerns.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree splitting this would be ideal, but I think we don't share the same concern. My worry is that there is a chance someone will forget to pass the context again. But let's not drill this any longer.
@rosstimothy See the table below for backport results.
|
Traces generated from playing back session recordings were incomplete due to the correct context not being used at various levels of the events and player code. This attempts to rectify that by setting the correct context.Context along the way.