dataiku / dataiku/dataiku-api-client-python
get_graph() RecursionError: maximum recursion depth exceeded
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Python
- Star
- 44
- Fork
- 29
- Merge trung bình
- 3 giờ 34 phút
- Pull request đã merge (30 ngày)
- 2
Mô tả
my conf:
ubuntu v 22. lts
Dataiku On Premise v 13.1.2
Exemple
The get_graph method in the DSSProjectFlow class does not support flows that have loops, causing a RecursionError when trying to get the flow graph for such projects.
function's reference : https://developer.dataiku.com/latest/api-reference/python/flow.html#dataikuapi.dss.flow.DSSProjectFlow.get_graph
Steps to Reproduce
- Create a project in Dataiku where a recipe has a dataset as output (last stage in the flow) but used as input of another recipe. Both input and output, forming a loop.
- Use the API to get the flow graph:
import dataiku client = dataiku.api_client() project = client.get_project("YOUR_PROJECT_KEY") flow = project.get_flow() graph = flow.get_graph() # This line causes the RecursionError below
DSSProjectFlowGraph.get_items_in_traversal_order..add_from(graph_node)
776 predecessor_node = self.nodes[predecessor_ref]
777 if not in_set(predecessor_node):
--> 778 add_from(predecessor_node)
780 # Then add ourselves
781 if not in_set(graph_node):
DSSProjectFlowGraph.get_items_in_traversal_order..add_from(graph_node)
775 for predecessor_ref in graph_node["predecessors"]:
776 predecessor_node = self.nodes[predecessor_ref]
--> 777 if not in_set(predecessor_node):
778 add_from(predecessor_node)
780 # Then add ourselves
DSSProjectFlowGraph.get_items_in_traversal_order..in_set(obj)
767 def in_set(obj):
768 for candidate in ret:
--> 769 if candidate["type"] == obj["type"] and candidate["ref"] == obj["ref"]:
770 return True
771 return False
RecursionError: maximum recursion depth exceeded in comparison
As a result, flows using data to rewrite the same directory become problematic only in certain cases
output dataset > used as intermediate dataset of a recipe upstream of this output dataset.
but not problematic in other cases, such as;
input folder > used as output folder at the end of the flow.
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu từ DSSProjectFlow.get_graph và traceback của DSSProjectFlowGraph.get_items_in_traversal_order, sử dụng bản tái hiện flow lặp được cung cấp. Xác minh rằng get_graph hoàn tất đối với một project có output dataset được tái sử dụng ở upstream, đồng thời bổ sung coverage cho thấy loop không còn gây ra RecursionError.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- python
- Lĩnh vực
- api
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100