Hello everyone, I have a doubt, What I seems to understand : when a client makes a req to rgw, then the req is spawn into multiple threads and the each of the thread will have its own req_state instances, and so if I define any data structure inside req_state then there cant be any race condition right to that data structure Am I right? If not then does this mean that req_state is global to multiple threads and there is chance of race condition?
RGW creates a new, unique req_state for each incoming request. In general, only one thread is operating on a request (or it's unique req_state instance) at any time. A special case is when (lower level) RADOS operations are being started and completed during the processing of the RGW request--a different set of (currently) threads is responsible for executing the RADOS operations, so there is locking involved. Matt On Wed, May 20, 2020 at 9:20 AM Abhinav Singh <singhabhinav0796@gmail.com> wrote:
Hello everyone,
I have a doubt,
What I seems to understand :
when a client makes a req to rgw, then the req is spawn into multiple threads and the each of the thread will have its own req_state instances, and so if I define any data structure inside req_state then there cant be any race condition right to that data structure
Am I right? If not then does this mean that req_state is global to multiple threads and there is chance of race condition? _______________________________________________ Dev mailing list -- dev@ceph.io To unsubscribe send an email to dev-leave@ceph.io
-- Matt Benjamin Red Hat, Inc. 315 West Huron Street, Suite 140A Ann Arbor, Michigan 48103 http://www.redhat.com/en/technologies/storage tel. 734-821-5101 fax. 734-769-8938 cel. 734-216-5309
great info on the request flow in this video: https://www.youtube.com/watch?v=soSq9jD-ve8 On Wed, May 20, 2020 at 4:27 PM Matt Benjamin <mbenjami@redhat.com> wrote:
RGW creates a new, unique req_state for each incoming request. In general, only one thread is operating on a request (or it's unique req_state instance) at any time. A special case is when (lower level) RADOS operations are being started and completed during the processing of the RGW request--a different set of (currently) threads is responsible for executing the RADOS operations, so there is locking involved.
Matt
On Wed, May 20, 2020 at 9:20 AM Abhinav Singh <singhabhinav0796@gmail.com> wrote:
Hello everyone,
I have a doubt,
What I seems to understand :
when a client makes a req to rgw, then the req is spawn into multiple
threads and the each of the thread will have its own req_state instances, and so if I define any data structure inside req_state then there cant be any race condition right to that data structure
Am I right? If not then does this mean that req_state is global to
multiple threads and there is chance of race condition?
_______________________________________________ Dev mailing list -- dev@ceph.io To unsubscribe send an email to dev-leave@ceph.io
--
Matt Benjamin Red Hat, Inc. 315 West Huron Street, Suite 140A Ann Arbor, Michigan 48103
http://www.redhat.com/en/technologies/storage
tel. 734-821-5101 fax. 734-769-8938 cel. 734-216-5309 _______________________________________________ Dev mailing list -- dev@ceph.io To unsubscribe send an email to dev-leave@ceph.io
participants (3)
-
Abhinav Singh
-
Matt Benjamin
-
Yuval Lifshitz