What? Why? How?

What: A simple introduction to understanding how a "read" works in RAMCloud based on my current understanding.

Why: For me to refer to later on, and hopefully to serve as a good starting point to other new comers to RAMCloud system.

How: Information deduced from reading code, and asking lot of silly questions to Diego, Ryan; and a few to Stephen, Nandu and Christian.

Now that we have that out of the way..

Follow the code and read along..

Code Flow:

Here is a simple diagram that shows the flow of data in the code.

This is an edited version of the figure originally made by Cristian (thanks for sharing!)

RamCloud.cc -> read()

MasterClient.cc -> read()

MasterServer.cc

NOTE about code flow:
When xClient - sendRecv,   ?where x is Coordinator or Master
xServer - handleRpc<>() -> dispatch() -> callHandler<>() -> ..

ObjectFinder.cc -> lookup()

Some general information:

On the other hand:

BUFFER contains: