[jira] [Assigned] (ARROW-5533) [Plasma] Plasma client should be thread-safe

2019-06-08 Thread Zhijun Fu (JIRA)


 [ 
https://issues.apache.org/jira/browse/ARROW-5533?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Zhijun Fu reassigned ARROW-5533:


Assignee: Zhijun Fu

> [Plasma] Plasma client should be thread-safe
> 
>
> Key: ARROW-5533
> URL: https://issues.apache.org/jira/browse/ARROW-5533
> Project: Apache Arrow
>  Issue Type: Improvement
>  Components: C++ - Plasma
>Reporter: Zhijun Fu
>Assignee: Zhijun Fu
>Priority: Major
>
> [https://github.com/ray-project/ray/pull/4922#discussion_r291422782]
> Make plasma client thread safe, so it's guaranteed when the PlasmaBuffer for 
> an object destructs, the call to plasma_client.Release(object_id) is properly 
> protected. 



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


[jira] [Assigned] (ARROW-5142) [CI] Fix conda calls in AppVeyor scripts

2019-06-08 Thread Zhijun Fu (JIRA)


 [ 
https://issues.apache.org/jira/browse/ARROW-5142?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Zhijun Fu reassigned ARROW-5142:


Assignee: (was: Zhijun Fu)

> [CI] Fix conda calls in AppVeyor scripts
> 
>
> Key: ARROW-5142
> URL: https://issues.apache.org/jira/browse/ARROW-5142
> Project: Apache Arrow
>  Issue Type: Bug
>  Components: Continuous Integration
>Affects Versions: 0.13.0
>Reporter: Antoine Pitrou
>Priority: Blocker
>  Labels: pull-request-available
> Fix For: 0.14.0
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> Our {{.bat}} files for AppVeyor CI use "{{conda}}" to execute Conda commands, 
> unfortunately those exit the {{.bat}} script immediately after returning. We 
> need to invoke Conda using "{{call conda}}" instead. However, doing so 
> exposes a bug in the wheel tests that went unnoticed.
> See https://github.com/apache/arrow/pull/4015



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


[jira] [Created] (ARROW-5533) [Plasma] Plasma client should be thread-safe

2019-06-08 Thread Zhijun Fu (JIRA)
Zhijun Fu created ARROW-5533:


 Summary: [Plasma] Plasma client should be thread-safe
 Key: ARROW-5533
 URL: https://issues.apache.org/jira/browse/ARROW-5533
 Project: Apache Arrow
  Issue Type: Improvement
  Components: C++ - Plasma
Reporter: Zhijun Fu


[https://github.com/ray-project/ray/pull/4922#discussion_r291422782]

Make plasma client thread safe, so it's guaranteed when the PlasmaBuffer for an 
object destructs, the call to plasma_client.Release(object_id) is properly 
protected. 



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


[jira] [Assigned] (ARROW-5142) [CI] Fix conda calls in AppVeyor scripts

2019-06-08 Thread Zhijun Fu (JIRA)


 [ 
https://issues.apache.org/jira/browse/ARROW-5142?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Zhijun Fu reassigned ARROW-5142:


Assignee: Zhijun Fu

> [CI] Fix conda calls in AppVeyor scripts
> 
>
> Key: ARROW-5142
> URL: https://issues.apache.org/jira/browse/ARROW-5142
> Project: Apache Arrow
>  Issue Type: Bug
>  Components: Continuous Integration
>Affects Versions: 0.13.0
>Reporter: Antoine Pitrou
>Assignee: Zhijun Fu
>Priority: Blocker
>  Labels: pull-request-available
> Fix For: 0.14.0
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> Our {{.bat}} files for AppVeyor CI use "{{conda}}" to execute Conda commands, 
> unfortunately those exit the {{.bat}} script immediately after returning. We 
> need to invoke Conda using "{{call conda}}" instead. However, doing so 
> exposes a bug in the wheel tests that went unnoticed.
> See https://github.com/apache/arrow/pull/4015



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


[jira] [Created] (ARROW-5402) [Plasma] Pin objects in plasma store

2019-05-23 Thread Zhijun Fu (JIRA)
Zhijun Fu created ARROW-5402:


 Summary: [Plasma] Pin objects in plasma store
 Key: ARROW-5402
 URL: https://issues.apache.org/jira/browse/ARROW-5402
 Project: Apache Arrow
  Issue Type: Improvement
Reporter: Zhijun Fu
Assignee: Zhijun Fu


[https://github.com/apache/arrow/issues/4368]

Sometimes we want to "pin" an object in plasma store - we don't want this 
object to be deleted even though there's nobody that's currently referencing 
it. In this case, we can specify a flag when creating the object so that it 
won't be deleted by LRU cache when its refcnt drops to 0, and can only be 
deleted by an explicit {{Delete()}} call.

Currently, we found that an actor FO problem. The actor creation task depends 
on a plasma object put by user. After the the actor running for a long time, 
the object will be deleted by plasma LRU. Then, an Actor FO happens, the 
creation task cannot find the object put by user, so the FO is hanging forever.

Would this make sense to you?

 

 



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


[jira] [Created] (ARROW-4711) [Plasma] enhance plasma client interfaces to work with multiple objects

2019-02-27 Thread Zhijun Fu (JIRA)
Zhijun Fu created ARROW-4711:


 Summary: [Plasma]  enhance plasma client interfaces to work with 
multiple objects
 Key: ARROW-4711
 URL: https://issues.apache.org/jira/browse/ARROW-4711
 Project: Apache Arrow
  Issue Type: Improvement
  Components: C++ - Plasma
Reporter: Zhijun Fu


Right now the Delete() interface in plasma client supports deleting multiple 
objects in a single shot, so that we can save IPCs (inter-processing 
communication) between plasma clients and plasma store. This reduces latency 
for plasma clients, and also improve the actual throughput for plasma store.

I made a simple prototype for changing Release() function as well, when 
batching release 10 objects in a single IPC, it only takes about 1/6 of the 
time compared with using 10 separate IPCs. Also from profiling, processing IPCs 
takes a lot of CPU cycles in plasma store currently, as UNIX domain socket 
processing needs to go through kernel, thus batching multiple IPCs into a 
single one should greatly improve the plasma store performance as well.

 

This change mostly applies to Release(), Seal(), and Create() interfaces.



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


[jira] [Commented] (ARROW-4418) [Plasma] replace event loop with boost::asio for plasma store

2019-01-31 Thread Zhijun Fu (JIRA)


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

Zhijun Fu commented on ARROW-4418:
--

[~suquark] yes I think that's probably a good idea. It should be simpler than 
that as plasma store only deals with local UNIX domain socket.

> [Plasma] replace event loop with boost::asio for plasma store
> -
>
> Key: ARROW-4418
> URL: https://issues.apache.org/jira/browse/ARROW-4418
> Project: Apache Arrow
>  Issue Type: Improvement
>  Components: Plasma (C++)
>Reporter: Zhijun Fu
>Priority: Major
>  Labels: pull-request-available
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> Original text:
> It would be nice to move plasma store from current event loop to boost::asio 
> to modernize the code, and more importantly to benefit from the 
> functionalities provided by asio, which I think also provides opportunities 
> for performance improvement.



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


[jira] [Commented] (ARROW-4418) [Plasma] replace event loop with boost::asio for plasma store

2019-01-30 Thread Zhijun Fu (JIRA)


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

Zhijun Fu commented on ARROW-4418:
--

[~robertnishihara], yes totally agreed that the move from event loop to asio 
should be a straightforward change. The multithread optimization can be 
evaluated after that, and see if it can provide non-trivial performance 
improvements.

> [Plasma] replace event loop with boost::asio for plasma store
> -
>
> Key: ARROW-4418
> URL: https://issues.apache.org/jira/browse/ARROW-4418
> Project: Apache Arrow
>  Issue Type: Improvement
>  Components: Plasma (C++)
>Reporter: Zhijun Fu
>Priority: Major
>  Labels: pull-request-available
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> Original text:
> It would be nice to move plasma store from current event loop to boost::asio 
> to modernize the code, and more importantly to benefit from the 
> functionalities provided by asio, which I think also provides opportunities 
> for performance improvement.



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


[jira] [Comment Edited] (ARROW-4418) [Plasma] replace event loop with boost::asio for plasma store

2019-01-30 Thread Zhijun Fu (JIRA)


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

Zhijun Fu edited comment on ARROW-4418 at 1/30/19 8:12 AM:
---

In addition to above benefits that Robert mentioned, asio also provides 
opportunities for performance improvements, by providing io service, thread 
pool .etc.

In our internal testing, which uses 10+ actors on a single machine, I found 50% 
of plasma store CPU are spent on receiving messages from plasma clients, using 
UNIX domain socket.

I'm thinking that one way to improve perf is like this: 
 * Use a pool of threads to receive messages from clients. To ensure correct 
behavior, we can bind a boost::strand to a single client, so that all the 
messages from a given client arrives in order. As this part is CPU consumings, 
using multiple threads is going to help.
 * After this, the messages are posted into io service of main thread, which 
calls ProcessMessages for each of them in order.
 * After this, post the replies to a pool of threads, again use boost::strand 
for each plasma client to ensure correct order. 

I'm thinking this would probably help on cases where there are multiple workers 
using plasma store on the same machine, which should be very common. And it 
seems implementing this would be hard without asio functionalities.


was (Author: zhijunfu):
In addition to above benefits that Robert mentioned, asio also provides 
opportunities for performance improvements, by providing io service, thread 
pool .etc.

In our internal testing, which uses 10+ actors on a single machine, I found 50% 
of plasma store CPU are spent on receiving messages from plasma clients, using 
UNIX domain socket.

I'm thinking that one way to improve perf is like this: 
 * Use a pool of threads to receive messages from clients. To ensure correct 
behavior, we can bind a boost::strand to a single client, so that all the 
messages from a given client arrives in order. As this part is CPU consumings, 
using multiple threads is going to help.
 * After this, the messages are posted into io service of main thread, which 
calls ProcessMessages for each of them in order.
 * After this, post the replies to a pool of threads, again use boost::strand 
for each plasma client to ensure correct order. 

I'm thinking this would probably help on cases where there are multiple workers 
using plasma store on the same machine, which should be very common. And it 
seems implementing this would be hard without asio functionalities.

Thoughts?

> [Plasma] replace event loop with boost::asio for plasma store
> -
>
> Key: ARROW-4418
> URL: https://issues.apache.org/jira/browse/ARROW-4418
> Project: Apache Arrow
>  Issue Type: Improvement
>  Components: Plasma (C++)
>Reporter: Zhijun Fu
>Priority: Major
>  Labels: pull-request-available
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> Original text:
> It would be nice to move plasma store from current event loop to boost::asio 
> to modernize the code, and more importantly to benefit from the 
> functionalities provided by asio, which I think also provides opportunities 
> for performance improvement.



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


[jira] [Commented] (ARROW-4418) [Plasma] replace event loop with boost::asio for plasma store

2019-01-29 Thread Zhijun Fu (JIRA)


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

Zhijun Fu commented on ARROW-4418:
--

In addition to above benefits that Robert mentioned, asio also provides 
opportunities for performance improvements, by providing io service, thread 
pool .etc.

In our internal testing, which uses 10+ actors on a single machine, I found 50% 
of plasma store CPU are spent on receiving messages from plasma clients, using 
UNIX domain socket.

I'm thinking that one way to improve perf is like this: 
 * Use a pool of threads to receive messages from clients. To ensure correct 
behavior, we can bind a boost::strand to a single client, so that all the 
messages from a given client arrives in order. As this part is CPU consumings, 
using multiple threads is going to help.
 * After this, the messages are posted into io service of main thread, which 
calls ProcessMessages for each of them in order.
 * After this, post the replies to a pool of threads, again use boost::strand 
for each plasma client to ensure correct order. 

I'm thinking this would probably help on cases where there are multiple workers 
using plasma store on the same machine, which should be very common. And it 
seems implementing this would be hard without asio functionalities.

Thoughts?

> [Plasma] replace event loop with boost::asio for plasma store
> -
>
> Key: ARROW-4418
> URL: https://issues.apache.org/jira/browse/ARROW-4418
> Project: Apache Arrow
>  Issue Type: Improvement
>  Components: Plasma (C++)
>Reporter: Zhijun Fu
>Priority: Major
>  Labels: pull-request-available
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> Original text:
> It would be nice to move plasma store from current event loop to boost::asio 
> to modernize the code, and more importantly to benefit from the 
> functionalities provided by asio, which I think also provides opportunities 
> for performance improvement.



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


[jira] [Created] (ARROW-4015) [Plasma] remove legacy interfaces for plasma manager

2018-12-12 Thread Zhijun Fu (JIRA)
Zhijun Fu created ARROW-4015:


 Summary: [Plasma] remove legacy interfaces for plasma manager
 Key: ARROW-4015
 URL: https://issues.apache.org/jira/browse/ARROW-4015
 Project: Apache Arrow
  Issue Type: Improvement
  Components: Plasma (C++)
Reporter: Zhijun Fu
Assignee: Zhijun Fu


[https://github.com/apache/arrow/issues/3154]

In legacy ray, interacting with remote plasma stores is done via plasma 
manager, which is part of ray, and plasma has a few interfaces to support it - 
namely Fetch() and Wait().
Currently the legacy ray code has already been removed, and the new raylet uses 
object manager to interface with remote machine, and these legacy plasma 
interfaces are no longer used. I think we could remove these legacy interfaces 
to cleanup code and avoid confusion.

 



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


[jira] [Commented] (ARROW-2551) [Plasma] Improve notification logic

2018-06-06 Thread Zhijun Fu (JIRA)


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

Zhijun Fu commented on ARROW-2551:
--

[~ovidiumarcu]  Sorry for the late reply. Good to know that it fixed your 
issue:)

For the order of notifications, there are two cases:

1) When a client subscribes to plasma store, the store will push notifications 
for all existing objects to the new client, in this case there's *no specific 
order* among these notifications - the store simply loop through all the 
objects from an unordered_map and push notification for each of them.

2) When a new object is sealed, a notification is pushed to all the clients 
that have subscribed for notifications. In this case, the object notifications 
are sent in the order of their *sealed* time, instead of creation time.

> [Plasma] Improve notification logic
> ---
>
> Key: ARROW-2551
> URL: https://issues.apache.org/jira/browse/ARROW-2551
> Project: Apache Arrow
>  Issue Type: Improvement
>  Components: Plasma (C++)
>Reporter: Zhijun Fu
>Priority: Minor
>  Labels: pull-request-available
>  Time Spent: 2.5h
>  Remaining Estimate: 0h
>
> There are a few issues in current Plasma notification code:
>  * When a client subscribes to Plasma, the store pushes notifications about 
> existing objects to ALL subscribers, while it should only push to the new 
> subscriber.
>  * And in the above scenario, it should only push "sealed" objects to the new 
> subscriber, while currently it pushes all objects regardless of the state.
>  * When a client disconnects, it will no longer be able to receive 
> notifications, thus the NotificationQueue for the client should be removed 
> from global map.



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


[jira] [Created] (ARROW-2597) [Plasma] remove UniqueIDHasher

2018-05-17 Thread Zhijun Fu (JIRA)
Zhijun Fu created ARROW-2597:


 Summary: [Plasma] remove UniqueIDHasher
 Key: ARROW-2597
 URL: https://issues.apache.org/jira/browse/ARROW-2597
 Project: Apache Arrow
  Issue Type: Improvement
  Components: Plasma (C++)
Reporter: Zhijun Fu






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


[jira] [Updated] (ARROW-2551) [Plasma] Improve notification logic

2018-05-10 Thread Zhijun Fu (JIRA)

 [ 
https://issues.apache.org/jira/browse/ARROW-2551?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Zhijun Fu updated ARROW-2551:
-
Description: 
There are a few issues in current Plasma notification code:
 * When a client subscribes to Plasma, the store pushes notifications about 
existing objects to ALL subscribers, while it should only push to the new 
subscriber.
 * And in the above scenario, it should only push "sealed" objects to the new 
subscriber, while currently it pushes all objects regardless of the state.
 * When a client disconnects, it will no longer be able to receive 
notifications, thus the NotificationQueue for the client should be removed from 
global map.

  was:There are two issues in current Plasma notification code


> [Plasma] Improve notification logic
> ---
>
> Key: ARROW-2551
> URL: https://issues.apache.org/jira/browse/ARROW-2551
> Project: Apache Arrow
>  Issue Type: Improvement
>  Components: Plasma (C++)
>Reporter: Zhijun Fu
>Priority: Minor
>  Labels: pull-request-available
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> There are a few issues in current Plasma notification code:
>  * When a client subscribes to Plasma, the store pushes notifications about 
> existing objects to ALL subscribers, while it should only push to the new 
> subscriber.
>  * And in the above scenario, it should only push "sealed" objects to the new 
> subscriber, while currently it pushes all objects regardless of the state.
>  * When a client disconnects, it will no longer be able to receive 
> notifications, thus the NotificationQueue for the client should be removed 
> from global map.



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


[jira] [Updated] (ARROW-2551) [Plasma] Improve notification logic

2018-05-10 Thread Zhijun Fu (JIRA)

 [ 
https://issues.apache.org/jira/browse/ARROW-2551?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Zhijun Fu updated ARROW-2551:
-
Summary: [Plasma] Improve notification logic  (was: [Plasma] Improve 
notification related code)

> [Plasma] Improve notification logic
> ---
>
> Key: ARROW-2551
> URL: https://issues.apache.org/jira/browse/ARROW-2551
> Project: Apache Arrow
>  Issue Type: Improvement
>  Components: Plasma (C++)
>Reporter: Zhijun Fu
>Priority: Minor
>  Labels: pull-request-available
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> There are two issues in current Plasma notification code



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


[jira] [Updated] (ARROW-2551) [Plasma] Improve notification related code

2018-05-10 Thread Zhijun Fu (JIRA)

 [ 
https://issues.apache.org/jira/browse/ARROW-2551?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Zhijun Fu updated ARROW-2551:
-
Description: There are two issues in current Plasma notification code

> [Plasma] Improve notification related code
> --
>
> Key: ARROW-2551
> URL: https://issues.apache.org/jira/browse/ARROW-2551
> Project: Apache Arrow
>  Issue Type: Improvement
>  Components: Plasma (C++)
>Reporter: Zhijun Fu
>Priority: Minor
>  Labels: pull-request-available
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> There are two issues in current Plasma notification code



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


[jira] [Closed] (ARROW-2556) [Plasma] plasma pushes notifications to all subscribers when a new client subscribes

2018-05-10 Thread Zhijun Fu (JIRA)

 [ 
https://issues.apache.org/jira/browse/ARROW-2556?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Zhijun Fu closed ARROW-2556.

Resolution: Duplicate

see ARROW-2551

> [Plasma] plasma pushes notifications to all subscribers when a new client 
> subscribes
> 
>
> Key: ARROW-2556
> URL: https://issues.apache.org/jira/browse/ARROW-2556
> Project: Apache Arrow
>  Issue Type: Bug
>  Components: Plasma (C++)
>Reporter: Zhijun Fu
>Priority: Minor
>  Labels: pull-request-available
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> When a new client subscribes to plasma store, plasma would push notifications 
> about existing objects to the new subscriber - while the current code pushes 
> notifications to ALL subscribers in this case which is unnecessary. 



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


[jira] [Closed] (ARROW-2559) [Plasma] delete object notification queue for a client when it disconnects with plasma

2018-05-10 Thread Zhijun Fu (JIRA)

 [ 
https://issues.apache.org/jira/browse/ARROW-2559?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Zhijun Fu closed ARROW-2559.

Resolution: Duplicate

see ARROW-2551

> [Plasma] delete object notification queue for a client when it disconnects 
> with plasma
> --
>
> Key: ARROW-2559
> URL: https://issues.apache.org/jira/browse/ARROW-2559
> Project: Apache Arrow
>  Issue Type: Improvement
>Reporter: Zhijun Fu
>Priority: Minor
>  Labels: pull-request-available
>  Time Spent: 0.5h
>  Remaining Estimate: 0h
>




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


[jira] [Reopened] (ARROW-2551) [Plasma] Improve notification related code

2018-05-10 Thread Zhijun Fu (JIRA)

 [ 
https://issues.apache.org/jira/browse/ARROW-2551?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Zhijun Fu reopened ARROW-2551:
--

> [Plasma] Improve notification related code
> --
>
> Key: ARROW-2551
> URL: https://issues.apache.org/jira/browse/ARROW-2551
> Project: Apache Arrow
>  Issue Type: Improvement
>  Components: Plasma (C++)
>Reporter: Zhijun Fu
>Priority: Minor
>  Labels: pull-request-available
>  Time Spent: 20m
>  Remaining Estimate: 0h
>




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


[jira] [Created] (ARROW-2558) [Plasma] avoid walk through all the objects when a client disconnects

2018-05-09 Thread Zhijun Fu (JIRA)
Zhijun Fu created ARROW-2558:


 Summary: [Plasma] avoid walk through all the objects when a client 
disconnects
 Key: ARROW-2558
 URL: https://issues.apache.org/jira/browse/ARROW-2558
 Project: Apache Arrow
  Issue Type: Improvement
  Components: Plasma (C++)
Reporter: Zhijun Fu


Currently plasma stores list-of-clients in ObjectTableEntry, which is used to 
track which clients are using a given object, this serves for two purposes:
- If an object is in use.
- If the client trying to abort an object is the one who created it.

A problem with list-of-clients approach is that when a client disconnects, we 
need to walk through all the objects and remove the client pointer from the 
list for each object.

Instead, we could add a reference count in ObjectTableEntry, and store 
list-of-object-ids in client structure. This could both goals that the original 
approach is targeting, while when a client disconnects, it just walk through 
its object-ids and dereference each ObjectTableEntry, there's no need to walk 
through all objects.



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


[jira] [Created] (ARROW-2556) [Plasma] plasma pushes notifications to all subscribers when a new client subscribes

2018-05-08 Thread Zhijun Fu (JIRA)
Zhijun Fu created ARROW-2556:


 Summary: [Plasma] plasma pushes notifications to all subscribers 
when a new client subscribes
 Key: ARROW-2556
 URL: https://issues.apache.org/jira/browse/ARROW-2556
 Project: Apache Arrow
  Issue Type: Bug
  Components: Plasma (C++)
Reporter: Zhijun Fu


When a new client subscribes to plasma store, plasma would push notifications 
about existing objects to the new subscriber - while the current code pushes 
notifications to ALL subscribers in this case which is unnecessary. 



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


[jira] [Updated] (ARROW-2551) [Plasma] Improve notification related code

2018-05-08 Thread Zhijun Fu (JIRA)

 [ 
https://issues.apache.org/jira/browse/ARROW-2551?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Zhijun Fu updated ARROW-2551:
-
Description: (was: https://github.com/apache/arrow/pull/2011

This change addresses two issues in plasma notification code:
 # Currently plasma store uses recv_fd to receive the notification fd from 
client. As mentioned in comments from the code, this could cause plasma store 
to hang if client doesn't call send_fd. This particular change puts the 
notification fd in SubscriptionRequest to solve the problem.
 # When a client subscribes to plasma store, the store pushes notifications of 
existing objects to ALL subscribers - while in this case it just needs to push 
to the new subscriber. This change adds a new interface to push to a particular 
client.)

> [Plasma] Improve notification related code
> --
>
> Key: ARROW-2551
> URL: https://issues.apache.org/jira/browse/ARROW-2551
> Project: Apache Arrow
>  Issue Type: Improvement
>  Components: Plasma (C++)
>Reporter: Zhijun Fu
>Priority: Minor
>  Labels: pull-request-available
>  Time Spent: 20m
>  Remaining Estimate: 0h
>




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


[jira] [Issue Comment Deleted] (ARROW-2551) [Plasma] Improve notification related code

2018-05-08 Thread Zhijun Fu (JIRA)

 [ 
https://issues.apache.org/jira/browse/ARROW-2551?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Zhijun Fu updated ARROW-2551:
-
Comment: was deleted

(was: PR is here:

https://github.com/apache/arrow/pull/2011)

> [Plasma] Improve notification related code
> --
>
> Key: ARROW-2551
> URL: https://issues.apache.org/jira/browse/ARROW-2551
> Project: Apache Arrow
>  Issue Type: Improvement
>  Components: Plasma (C++)
>Reporter: Zhijun Fu
>Priority: Minor
>  Labels: pull-request-available
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> https://github.com/apache/arrow/pull/2011
> This change addresses two issues in plasma notification code:
>  # Currently plasma store uses recv_fd to receive the notification fd from 
> client. As mentioned in comments from the code, this could cause plasma store 
> to hang if client doesn't call send_fd. This particular change puts the 
> notification fd in SubscriptionRequest to solve the problem.
>  # When a client subscribes to plasma store, the store pushes notifications 
> of existing objects to ALL subscribers - while in this case it just needs to 
> push to the new subscriber. This change adds a new interface to push to a 
> particular client.



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


[jira] [Closed] (ARROW-2551) [Plasma] Improve notification related code

2018-05-08 Thread Zhijun Fu (JIRA)

 [ 
https://issues.apache.org/jira/browse/ARROW-2551?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Zhijun Fu closed ARROW-2551.

Resolution: Invalid

> [Plasma] Improve notification related code
> --
>
> Key: ARROW-2551
> URL: https://issues.apache.org/jira/browse/ARROW-2551
> Project: Apache Arrow
>  Issue Type: Improvement
>  Components: Plasma (C++)
>Reporter: Zhijun Fu
>Priority: Minor
>  Labels: pull-request-available
>  Time Spent: 20m
>  Remaining Estimate: 0h
>




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


[jira] [Updated] (ARROW-2551) [Plasma] Improve notification related code

2018-05-08 Thread Zhijun Fu (JIRA)

 [ 
https://issues.apache.org/jira/browse/ARROW-2551?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Zhijun Fu updated ARROW-2551:
-
Description: 
https://github.com/apache/arrow/pull/2011

This change addresses two issues in plasma notification code:
 # Currently plasma store uses recv_fd to receive the notification fd from 
client. As mentioned in comments from the code, this could cause plasma store 
to hang if client doesn't call send_fd. This particular change puts the 
notification fd in SubscriptionRequest to solve the problem.
 # When a client subscribes to plasma store, the store pushes notifications of 
existing objects to ALL subscribers - while in this case it just needs to push 
to the new subscriber. This change adds a new interface to push to a particular 
client.

  was:
This change addresses two issues in plasma notification code:
 # Currently plasma store uses recv_fd to receive the notification fd from 
client. As mentioned in comments from the code, this could cause plasma store 
to hang if client doesn't call send_fd. This particular change puts the 
notification fd in SubscriptionRequest to solve the problem.
 # When a client subscribes to plasma store, the store pushes notifications of 
existing objects to ALL subscribers - while in this case it just needs to push 
to the new subscriber. This change adds a new interface to push to a particular 
client.


> [Plasma] Improve notification related code
> --
>
> Key: ARROW-2551
> URL: https://issues.apache.org/jira/browse/ARROW-2551
> Project: Apache Arrow
>  Issue Type: Improvement
>  Components: Plasma (C++)
>Reporter: Zhijun Fu
>Priority: Minor
>  Labels: pull-request-available
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> https://github.com/apache/arrow/pull/2011
> This change addresses two issues in plasma notification code:
>  # Currently plasma store uses recv_fd to receive the notification fd from 
> client. As mentioned in comments from the code, this could cause plasma store 
> to hang if client doesn't call send_fd. This particular change puts the 
> notification fd in SubscriptionRequest to solve the problem.
>  # When a client subscribes to plasma store, the store pushes notifications 
> of existing objects to ALL subscribers - while in this case it just needs to 
> push to the new subscriber. This change adds a new interface to push to a 
> particular client.



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


[jira] [Commented] (ARROW-2551) [Plasma] Improve notification related code

2018-05-08 Thread Zhijun Fu (JIRA)

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

Zhijun Fu commented on ARROW-2551:
--

PR is here:

https://github.com/apache/arrow/pull/2011

> [Plasma] Improve notification related code
> --
>
> Key: ARROW-2551
> URL: https://issues.apache.org/jira/browse/ARROW-2551
> Project: Apache Arrow
>  Issue Type: Improvement
>  Components: Plasma (C++)
>Reporter: Zhijun Fu
>Priority: Minor
>  Labels: pull-request-available
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> This change addresses two issues in plasma notification code:
>  # Currently plasma store uses recv_fd to receive the notification fd from 
> client. As mentioned in comments from the code, this could cause plasma store 
> to hang if client doesn't call send_fd. This particular change puts the 
> notification fd in SubscriptionRequest to solve the problem.
>  # When a client subscribes to plasma store, the store pushes notifications 
> of existing objects to ALL subscribers - while in this case it just needs to 
> push to the new subscriber. This change adds a new interface to push to a 
> particular client.



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


[jira] [Created] (ARROW-2551) [Plasma] Improve notification related code

2018-05-08 Thread Zhijun Fu (JIRA)
Zhijun Fu created ARROW-2551:


 Summary: [Plasma] Improve notification related code
 Key: ARROW-2551
 URL: https://issues.apache.org/jira/browse/ARROW-2551
 Project: Apache Arrow
  Issue Type: Improvement
  Components: Plasma (C++)
Reporter: Zhijun Fu


This change addresses two issues in plasma notification code:
 # Currently plasma store uses recv_fd to receive the notification fd from 
client. As mentioned in comments from the code, this could cause plasma store 
to hang if client doesn't call send_fd. This particular change puts the 
notification fd in SubscriptionRequest to solve the problem.
 # When a client subscribes to plasma store, the store pushes notifications of 
existing objects to ALL subscribers - while in this case it just needs to push 
to the new subscriber. This change adds a new interface to push to a particular 
client.



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


[jira] [Commented] (ARROW-2540) [Plasma] add constructor/destructor to make sure dlfree is called automatically

2018-05-04 Thread Zhijun Fu (JIRA)

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

Zhijun Fu commented on ARROW-2540:
--

PR is here:    https://github.com/apache/arrow/pull/1996

> [Plasma] add constructor/destructor to make sure dlfree is called 
> automatically
> ---
>
> Key: ARROW-2540
> URL: https://issues.apache.org/jira/browse/ARROW-2540
> Project: Apache Arrow
>  Issue Type: Improvement
>  Components: Plasma (C++)
>Reporter: Zhijun Fu
>Priority: Minor
>  Labels: pull-request-available
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Add constructor & destructor to ObjectTableEntry structure to make sure 
> dlfree() is called for the pointer field when the object gets destructed.



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


[jira] [Created] (ARROW-2540) [Plasma] add constructor/destructor to make sure dlfree is called automatically

2018-05-04 Thread Zhijun Fu (JIRA)
Zhijun Fu created ARROW-2540:


 Summary: [Plasma] add constructor/destructor to make sure dlfree 
is called automatically
 Key: ARROW-2540
 URL: https://issues.apache.org/jira/browse/ARROW-2540
 Project: Apache Arrow
  Issue Type: Improvement
  Components: Plasma (C++)
Reporter: Zhijun Fu


Add constructor & destructor to ObjectTableEntry structure to make sure 
dlfree() is called for the pointer field when the object gets destructed.



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


[jira] [Commented] (ARROW-2539) [Plasma] Use unique_ptr instead of raw pointer

2018-05-04 Thread Zhijun Fu (JIRA)

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

Zhijun Fu commented on ARROW-2539:
--

I've created an PR for this:

[https://github.com/apache/arrow/pull/1993]

 

> [Plasma] Use unique_ptr instead of raw pointer
> --
>
> Key: ARROW-2539
> URL: https://issues.apache.org/jira/browse/ARROW-2539
> Project: Apache Arrow
>  Issue Type: Improvement
>  Components: Plasma (C++)
>Reporter: Zhijun Fu
>Priority: Minor
>
> There are some places in Plasma where explicit new & delete are used, 
> forgetting to delete can cause memory leak. Use unique_ptr instead when 
> possible so that memory gets deleted automatically.



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


[jira] [Created] (ARROW-2539) [Plasma] Use unique_ptr instead of raw pointer

2018-05-04 Thread Zhijun Fu (JIRA)
Zhijun Fu created ARROW-2539:


 Summary: [Plasma] Use unique_ptr instead of raw pointer
 Key: ARROW-2539
 URL: https://issues.apache.org/jira/browse/ARROW-2539
 Project: Apache Arrow
  Issue Type: Improvement
  Components: Plasma (C++)
Reporter: Zhijun Fu


There are some places in Plasma where explicit new & delete are used, 
forgetting to delete can cause memory leak. Use unique_ptr instead when 
possible so that memory gets deleted automatically.



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