[Question] RC QP state machine client side question
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 9
- Forks
- 1
- Avg merge
- 1d 9h
- Merged PRs (30d)
- 7
Description
A vendor asks:
I'm trying to understand the RC QP state machine on the client side. I see that finishTransferAfterReply() calls connectRcPeer() which moves the QP to RTR and then to RTS. Does it mean that the QP is ready for RDMA ops only after the S3 reply is received? If yes, I don't understand the PUT/GET object flow:
- The client's QP is in INIT state.
- The client sends a PUT (or GET) object to the server.
- The server sends an S3 response with a token. At this point, the server is still unable to run RDMA ops (because we're still in the INIT state).
- The client gets the response, calls finishTransferAfterReply() and only then the server can run RDMA read, but this is too late.
If my assumptions so far are OK, what will happen during the next S3 request? At this point, the QP is already connected.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing finishTransferAfterReply() and connectRcPeer(), then follow the PUT/GET object flow and the RC QP transitions from INIT through RTR and RTS. Verify when the S3 reply and token are handled, when the server performs RDMA operations, and how a subsequent S3 request behaves with an already-connected QP. Done means the state-machine timing and next-request behavior are clearly documented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- networking
- Issue type
- Documentation
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100