# Where Can I Obtain Task Dependencies?

**URL:** <https://discuss.ray.io/t/where-can-i-obtain-task-dependencies/8265>\
**Category:** Ray Core\
**Created:** [November 14, 2022, 1:03pm UTC](https://discuss.ray.io/t/where-can-i-obtain-task-dependencies/8265 "2022-11-14T13:03:30Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![whoconli](https://avatars.discourse-cdn.com/v4/letter/w/96bed5/32.png) [@whoconli](https://discuss.ray.io/u/whoconli)\
**Post date:** [November 14, 2022, 1:03pm UTC](https://discuss.ray.io/t/where-can-i-obtain-task-dependencies/8265/1 "2022-11-14T13:03:30Z")

</div>

Currently, it is known that the request is obtained through TaskSpecification::GetDependencyIds(), and TaskSpecification is the wrapper of the RPC message of TaskSpec. However, where is the RPC request sent? So where is this dependency stored? Who maintained it? Is it the ownership table?

---

<div class="post-metadata">

**Author:** ![ClarenceNg](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/clarenceng/32/3108_2.png) [@ClarenceNg](https://discuss.ray.io/u/ClarenceNg)\
**Post date:** [November 15, 2022, 6:54am UTC](https://discuss.ray.io/t/where-can-i-obtain-task-dependencies/8265/2 "2022-11-15T06:54:18Z")

</div>

> [@whoconli](#):
>
> GetDependencyIds

@whoconli

Most of the information is stored in the local worker that is submitting the task, the latest whitepaper contains the most-to-date description regarding object ownership, which also reveals the call patterns. Hope that helps answer the questions.

Ownership

> **[Ray v2 Architecture](https://docs.google.com/document/d/1tBw9A4j62ruI5omIJbMxly-la5w4q_TjyJgJL_jN2fI/edit#heading=h.vjc9egi2q5aa)**
>
> Ray v2 Architecture Ray Team, October 2022 This document is public; please use "Viewing" mode to avoid accidental comments. The goal of this document is to motivate and overview the design of the Ray distributed system (version 2.0+). It is meant...

Task scheduling (object transfer example)

> **[Ray v2 Architecture](https://docs.google.com/document/d/1tBw9A4j62ruI5omIJbMxly-la5w4q_TjyJgJL_jN2fI/edit#heading=h.h7zo81s4gzlv)**
>
> Ray v2 Architecture Ray Team, October 2022 This document is public; please use "Viewing" mode to avoid accidental comments. The goal of this document is to motivate and overview the design of the Ray distributed system (version 2.0+). It is meant...

---

<div class="post-metadata">

**Author:** ![whoconli](https://avatars.discourse-cdn.com/v4/letter/w/96bed5/32.png) [@whoconli](https://discuss.ray.io/u/whoconli)\
**Post date:** [November 16, 2022, 7:56am UTC](https://discuss.ray.io/t/where-can-i-obtain-task-dependencies/8265/4 "2022-11-16T07:56:17Z")

</div>

@ClarenceNg  
Thanks! That is to say, the objects on which the task depends are managed by the ownership table of the owner. While scheduling a task, only need to query the local ownership table to obtain the object on which the task depends and wait for whether the object already exists. So, why do we need the RPC request, is it because the worker process is different from the owner processes and needs RPC to implement inter-process communication? Btw, does the Object Table stored on GCS?

---

<div class="post-metadata">

**Author:** ![yic](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ray.io/yic/32/437_2.png) [@yic](https://discuss.ray.io/u/yic)\
**Post date:** [November 16, 2022, 10:21pm UTC](https://discuss.ray.io/t/where-can-i-obtain-task-dependencies/8265/5 "2022-11-16T22:21:19Z")

</div>

The table is a distributed table, and might not be on the same node the query sent.  
Besides, there is also reference counting to track the object’s lifecycle.

ObjectTable are stored in raylet (object store) and ownership table is stored in worker.
