JanusGraph / JanusGraph/janusgraph
Vertex details committed to storage despite the failure from Cassandra, and Rollback didn't help
- Dominant language
- Java
- Stars
- 5.8k
- Forks
- 1.2k
- Avg merge
- 13h 53m
- Merged PRs (30d)
- 6
Description
### Discussed in https://github.com/JanusGraph/janusgraph/discussions/3978
Originally posted by **sumandas0** September 13, 2023
We use a string as a composite index in our primary storage, Cassandra. However, when we send a large string, we encounter the following error: "Caused by: java.util.concurrent.ExecutionException: com.datastax.oss.driver.api.core.servererrors.InvalidQueryException: Key length of 67871 is longer than the maximum of 65535." This is understandable. The real issue arises afterward: even when this error is thrown, the data is still written to the graph store and becomes searchable by a few indices. The behavior is inconsistent; sometimes the data can be searched using certain attributes, and sometimes it cannot. When we attempt a rollback on the same transaction after detecting the exception, the previously written values aren't rolled back. This has significantly disrupted the indexing in our application. We understand the error, but why are incorrect indices being written?
Janusgraph Version: 6.0.0
Storage Backend: Cassandra
Index Backend: Elasticsearch
Contributor guide
Research direction
Start by reproducing the oversized composite-index value against Cassandra and Elasticsearch, then trace the transaction and rollback behavior described in the report. Done means a failed Cassandra write does not leave inconsistent searchable data or values that rollback cannot remove.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cassandra, elasticsearch, java
- Domain
- databases, distributed-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100