[ 
https://issues.apache.org/jira/browse/ARROW-2045?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16342019#comment-16342019
 ] 

Yuxin Wu commented on ARROW-2045:
---------------------------------

Blocking put + blocking get (already exists) would be sufficient. This is just 
the interface of a python queue.

A blocking pop (get & remove the object) instead of get would be better but 
this can be implemented by get+release anyway.

 

Pin also sounds like a way. But I guess you still can have both blocking and 
non-blocking interface when everything is pinned and there is no space. This is 
more like customizing the eviction strategy, orthogonal to the put/get 
interface.

> More primitive operations on plasma store
> -----------------------------------------
>
>                 Key: ARROW-2045
>                 URL: https://issues.apache.org/jira/browse/ARROW-2045
>             Project: Apache Arrow
>          Issue Type: New Feature
>          Components: Plasma (C++)
>            Reporter: Yuxin Wu
>            Priority: Minor
>
> Hi Developers,
> I found plasma store very useful – it's fast and simple to use. However, I 
> think there are more operations that can make it a more general IPC/messaging 
> tool and potentially helpful in more scenarios.
> Conceptually, an object store can support the following "put" methods:
>  # Evict when full
>  # Wait for space when full, perhaps with a timeout (i.e. blocking)
>  # Return failure when full (i.e. non-blocking)
> And the following "get" methods:
>  # Wait for the object to appear (i.e. blocking)
>  # Return failure when object doesn't exist (i.e. non-blocking)
>  # Remove the object after get
> Some of the above features can be implemented with others. But some of them 
> are primitives (e.g. return failure when full) that needs to be supported.
>  
> My use case: I wanted to use plasma to send/recv large buffers between 
> processes, i.e. build a message passing interface on top of shared memory. 
> Plasma has made it quite easy (only have to send/recv the id) and efficient 
> (faster than unix pipe). But "evict when full" is now the only available 
> "put" method, so that could create many trouble if I want to ensure message 
> delivery.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to