JanusGraph / JanusGraph/janusgraph

Remove Guava dependency

Open
#2,033 0 comments 1 reaction 0 assignees View on GitHub
dependencies kind/cleanup
Dominant language
Java
Stars
5.8k
Forks
1.2k
Avg merge
13h 53m
Merged PRs (30d)
6

Description

Guava is often binary incompatible with previous versions that is why it produces some troubles when some dependencies depend on one guava version and some dependencies on another guava version.

The issue can be split to the next subtasks:

**Direct guava usage removal**:
- Move all usage of guava to Java 8 Streams API or direct Java code. (Partially done in #2098 and #3513)
- Move `janusgraph-cql/src/main/java/org/janusgraph/hadoop` to a separate module because it uses `CqlBinaryRecordReader` which depends on DataStax Cassandra driver 3.x which depends on guava.

**Dependencies update**:
- ~~Resolve #1510 (Cassandra driver `4.x` doesn't depend on guava)~~ (Done #2169)
- ~~Resolve #1737 (Cassandra `2.x` depends on guava)~~ (Done #2095)
- ~~Move to `reflections8`~~ (Done #2029)
- ~~Remove `airlift:airline`~~ (Done #1800)

**Fixing dependencies (should be fixed not on our side but on libraries which we depend on)**:
- remove guava from `org.apache.tinkerpop:hadoop-gremlin 3.6.x`
- ~~remove guava from `org.apache.hadoop:hadoop-common 3.x`~~ (hadoop-common shaded Guava)
- ~~remove guava from `org.apache.hadoop:hadoop-hdfs 3.x`~~ (hadoop-hdfs doesn't depend on Guava anymore)
- remove guava from `org.apache.solr:solr-test-framework 8.x`

Contributor guide

Open the contributing guide

Research direction

Review the remaining direct usage in janusgraph-cql/src/main/java/org/janusgraph/hadoop and its CqlBinaryRecordReader dependency first. Then inspect the listed hadoop-gremlin and solr-test-framework dependencies. Done means the remaining Guava usage and dependency sources identified in this issue have been addressed.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
databases
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.