[
https://issues.apache.org/jira/browse/ARROW-13152?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Bruce Martin updated ARROW-13152:
-
Description:
If a plasma client issues a Get request containing duplicate object IDs, and a
timeout of -1, the server will hang.
The logic at the end of `PlasmaStore::ProcessGetRequest()` only returns a
response when the number of satisfied requests match the number of *unique*
objects to wait for. The former is calculated using the number of requested
object IDs, not the number of unique requested object IDs.
To reproduce:
{code:java}
# start the plasma store first
from pyarrow import plasma
client = plasma.connect("/tmp/plasma")
oid = client.put("hello, world")
print(client.get([oid, oid], -1))print("done.")
{code}
was:
If a plasma client issues a Get request containing duplicate object IDs, and a
timeout of -1, the server will hang.
The logic at the end of `PlasmaStore::ProcessGetRequest()` only returns a
response when the number of satisfied requests match the number of *unique*
objects to wait for. The former is calculated using the number of requested
object IDs, not the number of unique requested object IDs.
To reproduce:
{code:java}
# start the plasma store first
from pyarrow import plasma
client = plasma.connect("/tmp/plasma")# oid = plasma.ObjectID(b'0'*20)oid =
client.put("hello, world")
print(client.get([oid, oid], -1))print("done.")
{code}
> Plasma server hangs on Get requests containing duplicate object IDs
> ---
>
> Key: ARROW-13152
> URL: https://issues.apache.org/jira/browse/ARROW-13152
> Project: Apache Arrow
> Issue Type: Bug
> Components: C++
>Affects Versions: 4.0.1
> Environment: tested on Linux/Python 3.8/pyarrow 4.0.1
>Reporter: Bruce Martin
>Priority: Major
>
> If a plasma client issues a Get request containing duplicate object IDs, and
> a timeout of -1, the server will hang.
> The logic at the end of `PlasmaStore::ProcessGetRequest()` only returns a
> response when the number of satisfied requests match the number of *unique*
> objects to wait for. The former is calculated using the number of requested
> object IDs, not the number of unique requested object IDs.
> To reproduce:
>
> {code:java}
> # start the plasma store first
> from pyarrow import plasma
> client = plasma.connect("/tmp/plasma")
> oid = client.put("hello, world")
> print(client.get([oid, oid], -1))print("done.")
> {code}
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)