Skip to content
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

ARROW-7998: [C++][Plasma] Make Seal requests synchronous #6529

Closed
wants to merge 1 commit into from

Conversation

stephanie-wang
Copy link
Contributor

When handling a Seal request to create an object and make it visible to other clients, the plasma store does not wait until the seal is complete before responding to the requesting client. This makes the interface hard to use, since the client is not guaranteed that the object is visible yet and would have to use an additional IPC round-trip to determine when the object is ready.

This improvement would require the plasma store to wait until the object has been created before responding to the client.

@github-actions
Copy link

github-actions bot commented Mar 3, 2020

@pitrou
Copy link
Member

pitrou commented Mar 4, 2020

cc @pcmoritz @robertnishihara

@pcmoritz
Copy link
Contributor

pcmoritz commented Mar 5, 2020

Just to expand a bit more on the PR description: This problem can happen in a scenario like this (time runs top down: the object is sealed in client1, control is passed to client2 which tries to get the object):

client1                          | client2
========================================================
seal(object_id1)                 |
client2.process(object_id1)      |
                                 | get(object_id1)

The user would expect that the object is sealed once client2 calls get.
However, the get request can arrive at the store before the seal request arrives and therefore the messages can be out of order in the store.

At first I was a bit confused, since plasma handlers are atomic so I thought this could not happen, but in case the get request arrives at the store when seal has not even started running (e.g. it is still queued in the OS message buffer), there can indeed be a race condition.

@pcmoritz pcmoritz closed this in 66b05ab Mar 5, 2020
@wesm
Copy link
Member

wesm commented Mar 5, 2020

Any way to test this or is it something that only occurs under high concurrency / load?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants