Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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
otel instrumentation for outgoing calls using generated clientlibs #19
base: master
Are you sure you want to change the base?
otel instrumentation for outgoing calls using generated clientlibs #19
Changes from 15 commits
9c4dafa
bcb08b1
2fd9b59
fe45923
ff7dbfa
5570a13
a1e18ab
e4e067b
6c84689
7709ebc
2b60a7d
2787ca2
04f3633
c328e36
c3dc6e8
a86f45e
f78fcd6
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
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.
What is the right way to get the Request object?
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.
There's no guarantee we're in a pyramid request context when this is being called. We should not rely on it. You'd need whatever the otel equivalent of
py_zipkin
'sStack
type, I suspect. If this was built internally--which I'm somewhat more inclined to--then we could maybe reusedistributed-context
's mechanisms? Also, perhaps you're mixing up this library up withpyramid-zipkin
, which would have access to the pyramid request 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.
tl;dr
I've used contruct_request from bravado to get the Request object.
Yeah that makes sense this is instrumenting for a outgoing call (not an incoming call where pyramid.request.Request would be available).
For zipkin_decorator it was straightforward since we the zipkin context was used to just inject B3 headers in the outgoing call.
For otel, the context itself is available in the trace object and we can inject zipkin and otel headers. But the additional functionality being added here is the generation of a CLIENT span. For this purpose a bunch of fields are needed: url, path, etc and hence the need for a Request object. This wont be available in the otel/zipkin 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.
Ah, I see I misunderstood which request you meant. I think this should be fine, although I don't think any other bravado decorator has done anything like this before.
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.
The correct return type here is
Iterator[None]
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.
Is this still correct? Do we even need this try/except anymore?
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 don't think overriding
__dir__
is desirable here, especially since we're not overriding__getattr__
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.
Also here.