alibaba / alibaba/GraphScope

[BUG] The API of `iterate_emit_until()` in Pegasus gets stuck in some cases

Open
#3,158 0 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
C++
Stars
3.6k
Forks
468
Avg merge
29m
Merged PRs (30d)
1

Description

**Describe the bug**

The API of `iterate_emit_until()` in Pegasus will get stuck in some cases.

**To Reproduce**

Running the following query on LDBC dataset:
```
g.V().hasLabel("COMMENT").limit(1000000).out("0..2", "REPLYOF").out("REPLYOF").count()
```
where `out("0..2", "REPLYOF")` is implemented by `iterate_emit_until()`. it gets stuck, and the WARN info suggests:
`output[(5.0)] block pushing batch of [root] to channel[9] ;`

The dataflow plan looks like:
```
============ Build Dataflow ==============
Peers: 64
Operators:
1 source(1)
2 limit_partition(2)
3 limit_partition(3)
4 filter_map_PathStart(4)
5 switch(5)
6 flat_map_EdgeExpand(6)
7 feedback(7)
8 flat_map_EdgeExpand(8)
9 count_local(9)
10 count_global(10)
11 sink_stream(11)
Channels:
[1: (0.0) -> (1.0)]
[2: (1.0) -> (2.0)]
[3: (2.0) => (3.0)]
[4: (3.0) => (4.0)]
[5: (4.0) => (5.0)]
[6: (5.1) -> (6.0)]
[7: (6.0) => (7.0)]
[8: (7.0) -> (5.1)]
[9: (5.0) => (8.0)]
[10: (8.0) -> (9.0)]
[11: (9.0) => (10.0)]
[12: (10.0) -> (11.0)]
==========================================
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.