JanusGraph / JanusGraph/janusgraph
Janusgraph could not deal with correct path traversal results
Nobody has claimed this yet.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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