-
Notifications
You must be signed in to change notification settings - Fork 888
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
ParentBased is a decorator #3706
Conversation
I am not in favor of using explicitly object-oriented language to describe things in the specification given many languages that implement it are not object-oriented. Also, the implementation of this sampler can quite literally be a decision hierarchy tree matching what you define as "composite". I think the current definition is correct. |
Decorator is a design pattern that means "modifies behavior of underlying thing without changing its interface". A function can decorate another function, there's nothing inherently object-oriented about it. In contrast, "composite" means containing more than one other things, and doesn't imply anything about the resulting interface. In the context of ParentBased sampler decorator is a better term. |
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.
This is a modification to a Stable doc. I believe we are allowed to do since it does not change any contract or behavior, it merely uses a more correct terminology.
ParentBased sampler is decorator (and not a composite).
ParentBased
does not produce a tree. Composite aims to solve a different (but kind of similar) problem.The key feature of the
ParentBased
is how it changes the "behavior" of the wrapped sampler. We decorate the existing sampler so that it handles the sampling based on the parent's span.References:
Related issue open-telemetry/opentelemetry-go#4565