JanusGraph / JanusGraph/janusgraph

Janusgraph could not deal with correct path traversal results

Open
#3,444 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

kind/bug/possible
Dominant language
Java
Stars
5.8k
Forks
1.2k
Avg merge
13h 53m
Merged PRs (30d)
6

Description

Please include configurations and logs if available.

For confirmed bugs, please report:

- Version: 0.6.2
- Storage Backend: inmemory
- Mixed Index Backend: none
- Link to discussed bug: none
- Expected Behavior:
We construct the following scenario: x equals count nodes(A->B) path numbers, y equals count nodes(B->C) path numbers, z equals count(A->B->C) path numbers. Then z should equal x*y.
We generate graph schema and data based on random strings and values. We build the graph with 100 vertexes, 200 edges, 20 vertex labels, and 20 edge labels.
`g.V().id()` is used to get the node ids of the graph, then can use for loop to traverse all the nodes. Here is one of our examples executed.
1) `g.V(16416).repeat(out().simplePath()).until(hasId(4128)).path().size()` return 240
2) `g.V(4128).repeat(out().simplePath()).until(hasId(8224)).path().size()` return 557
3) `g.V(16416).repeat(out().simplePath()).until(hasId(4128)).repeat(out().simplePath()).until(hasId(8224)).path().size()`, should return 240*557.
- Current Behavior:
The query 3 return 83 != 240*557.
- Steps to Reproduce:
Although the randomness of the graph data generation process, we still find the problem after many attempts. Reproduce: Generate a large enough graph -> Get all node ids -> Count the number of paths for any two ids -> Multiply and compare following our strategy.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No source file, test, or deterministic graph fixture is identified. Start by reproducing the three traversals on JanusGraph 0.6.2 with the in-memory backend, using a fixed graph rather than random generation; done means confirming whether the combined path count should equal the product and documenting the cause or correction.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
databases
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.