v6d icon indicating copy to clipboard operation
v6d copied to clipboard

Why do the remote methods doGetRemoteBuffers and doCreateRemoteBuffer include AddDependency and RemoveDependency, while the local methods do not?

Open fduxzbin opened this issue 1 year ago • 5 comments

Why do the remote methods doGetRemoteBuffers and doCreateRemoteBuffer in vineyard include AddDependency and RemoveDependency? However, there are no related operations in the local methods doCreateBuffer and doCreateBuffers. There is only AddDependency but no RemoveDependency in doGetBuffers. Please explain the specific role of Dependency in detail. If I perform AddDependency first and then RemoveDependency for all get and create operations, will there be any problems?

fduxzbin avatar Nov 18 '24 03:11 fduxzbin

Hi @fduxzbin, thanks for reporting this issue. Could you please tell us what problem you have encountered?

dashanji avatar Nov 18 '24 06:11 dashanji

Hi @fduxzbin, thanks for reporting this issue. Could you please tell us what problem you have encountered?

The reason why I raised this question is that I encountered a scenario where, when it was necessary to release memory, none of the objects were spilled because all objects had Dependency, resulting in a failure to release memory. I found that when you create and get remote objects, you add Dependency before create/get, and then remove Dependency after create/get, thereby achieving immediate release of the object and adding it to the LRU. When it needs to be spilled, it is spilled immediately. My question is, why is there no corresponding operation for local methods when the above operation on remote objects is reasonable. How to avoid the problem of not releasing locally created/get immediately.

fduxzbin avatar Nov 18 '24 11:11 fduxzbin

Hi @fduxzbin. You can use the client.release_object to release the object manually.

dashanji avatar Dec 04 '24 08:12 dashanji

/cc @sighingnow, this issus/pr has had no activity for a long time, please help to review the status and assign people to work on it.

github-actions[bot] avatar Dec 12 '24 00:12 github-actions[bot]

Hi @fduxzbin. You can use the client.release_object to release the obje

Hi @fduxzbin, thanks for reporting this issue. Could you please tell us what problem you have encountered?

If the client restarts or disconnects before using client.release_object to release a Dependency, will this cause the object to be unable to spill to disk as a cold object or be deleted? How should this situation be handled?

Daniel-blue avatar Dec 22 '24 07:12 Daniel-blue