Comments (4)
Hi @rubenfonseca
Thanks for providing the code snippet. I was able to run it and confirm that the ## h
subsegment indeed becomes the child of the Invocation
subsegment. I debugged and found that the current entity when the h()
method is being invoked is actually the ## f
subsegment, however it doesn't become the parent when the method executes on the thread pool.
I noticed similar behavior in the code for official suggestion in the documentation.
I am still investigating the root cause but thought I would provide an update of my findings in the meantime. Apologies for the delay.
from aws-xray-sdk-python.
I suspect this _refresh_context
method is the source of problem.
It tries to get a segment
object from the current thread local(code). If this segment
is not present, then the context is reinitialized (code) making the current entity to be the facade segment, which is essentially the Invocation
subsegment in the final trace.
The question is why isn't the segment
present on thread local attribute when the ## h
subsegment is created in a thread pool execution?
from aws-xray-sdk-python.
Thank you for the update @srprash. When I dug into the problem, I come to basically the same conclusion. However, my python skills are not strong enough to understand why the thread local attribute is not present.
from aws-xray-sdk-python.
I did some more investigation and found that the thread local state is not being propagated between the main thread and the thread on the thread pool even though they share the same thread local instance. That explains why the segment
stored in main thread is not present when ##h
subsegment is created.
In a nutshell, multi-threading is not working as I expected. Found this SO post that is related to the behavior: https://stackoverflow.com/questions/72374802/shared-memory-in-threads-confusion
from aws-xray-sdk-python.
Related Issues (20)
- IndexError when using AWS X-Ray SDK with SQLAlchemy HOT 1
- EKSPlugin HOT 1
- Very rare ReferenceError HOT 2
- Support for psycopg3 HOT 2
- Link a Textract async operation with downstream process HOT 1
- Current tox versions do not like how testenv.passenv is set
- aws_xray_sdk.core.exceptions.exceptions.SegmentNameMissingException: Segment name is required. HOT 1
- Using psycopg2 connection_factory throws exceptions HOT 4
- Documentation for patch_all HOT 2
- Sampling configuration should discuss DefaultSampler vs. LocalSampler HOT 1
- Flask middleware errors when an earlier Flask extension throws an exception in a before_request method HOT 1
- Patched DB cursor and template may record outside of XRayMiddleware HOT 2
- Segment not propgated when subsegment metadata is sufficiently long HOT 4
- sqlalchemy_core patch errors for unencoded special characters in db url HOT 1
- Error when using AsyncContext in python 3.11.5 HOT 3
- MongoDB AttributeError: 'NoneType' object has no attribute 'put_annotation'
- aws-xray-sdk-python compatibility with Python 3.12 HOT 9
- Fix docstring in Entity.close() HOT 1
- No supported for fastAPI, need to add middleware for fastapi HOT 1
- Incompatible with Pynamodb 6.x HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from aws-xray-sdk-python.