Skip to content

feat: CDC-based mixed index synchronization (#4873) - #4906

Draft
porunov wants to merge 2 commits into
JanusGraph:masterfrom
porunov:feature/4873-cdc-mixed-index
Draft

feat: CDC-based mixed index synchronization (#4873)#4906
porunov wants to merge 2 commits into
JanusGraph:masterfrom
porunov:feature/4873-cdc-mixed-index

fix: harden CDC mixed-index synchronization after review (#4873)

1e709bf
Select commit
Loading
Failed to load commit list.
Codacy Production / Codacy Static Code Analysis succeeded Jul 23, 2026 in 0s

Your pull request is up to standards!

Codacy Here is an overview of what got changed by this pull request:

Issues
======
- Added 8
           

Complexity increasing per file
==============================
- janusgraph-core/src/main/java/org/janusgraph/graphdb/configuration/GraphDatabaseConfiguration.java  1
- janusgraph-cql/src/main/java/org/janusgraph/diskstorage/cql/CQLKeyColumnValueStore.java  2
- janusgraph-core/src/main/java/org/janusgraph/graphdb/internal/ElementCategory.java  1
- janusgraph-core/src/main/java/org/janusgraph/graphdb/database/StandardJanusGraph.java  4
- janusgraph-cdc/src/main/java/org/janusgraph/cdc/CdcIndexUpdateWorker.java  46
- janusgraph-cdc/src/main/java/org/janusgraph/cdc/CdcIndexUpdateWorkerMain.java  16
- janusgraph-cdc/src/main/java/org/janusgraph/cdc/CdcWorkerConfiguration.java  42
- janusgraph-cdc/src/main/java/org/janusgraph/cdc/DebeziumCassandraJsonDecoder.java  45
- janusgraph-cdc/src/test/java/io/debezium/connector/cassandra/JanusGraphCdcConnectorStarter.java  2
- janusgraph-cdc/src/test/java/org/janusgraph/cdc/CdcCassandraDebeziumElasticsearchTest.java  23
- janusgraph-cdc/src/test/java/org/janusgraph/cdc/CdcIndexUpdateWorkerLoopTest.java  13
- janusgraph-cdc/src/test/java/org/janusgraph/cdc/CdcIndexUpdateWorkerMainTest.java  10
- janusgraph-cdc/src/test/java/org/janusgraph/cdc/CdcKafkaElasticsearchTest.java  22
- janusgraph-cdc/src/test/java/org/janusgraph/cdc/CdcWorkerConfigurationTest.java  7
- janusgraph-cdc/src/test/java/org/janusgraph/cdc/CdcWorkerConvergenceTest.java  24
- janusgraph-cdc/src/test/java/org/janusgraph/cdc/DebeziumCassandraJsonDecoderTest.java  30
- janusgraph-core/src/main/java/org/janusgraph/graphdb/database/index/CdcElementChange.java  9
- janusgraph-core/src/main/java/org/janusgraph/graphdb/database/index/MixedIndexUpdateApplier.java  36
- janusgraph-core/src/test/java/org/janusgraph/graphdb/configuration/CdcIndexConfigTest.java  1
- janusgraph-cql/src/test/java/org/janusgraph/diskstorage/cql/CQLCdcTableOptionTest.java  5
- janusgraph-lucene/src/test/java/org/janusgraph/diskstorage/lucene/CdcSkipMutationTest.java  5
- janusgraph-lucene/src/test/java/org/janusgraph/diskstorage/lucene/MixedIndexUpdateApplierTest.java  25
- janusgraph-core/src/test/java/org/janusgraph/graphdb/database/index/CdcElementChangeTest.java  1
         

Clones added
============
- janusgraph-cdc/src/test/java/org/janusgraph/cdc/CdcCassandraDebeziumElasticsearchTest.java  2
- janusgraph-cdc/src/test/java/org/janusgraph/cdc/CdcIndexUpdateWorkerLoopTest.java  1
- janusgraph-cdc/src/test/java/org/janusgraph/cdc/CdcIndexUpdateWorkerMainTest.java  2
- janusgraph-cdc/src/test/java/org/janusgraph/cdc/CdcKafkaElasticsearchTest.java  5
- janusgraph-cdc/src/test/java/org/janusgraph/cdc/CdcWorkerConvergenceTest.java  11
- janusgraph-cdc/src/test/java/org/janusgraph/cdc/DebeziumCassandraJsonDecoderTest.java  14
- janusgraph-lucene/src/test/java/org/janusgraph/diskstorage/lucene/MixedIndexUpdateApplierTest.java  1
         

See the complete overview on Codacy

Annotations

Check warning on line 75 in janusgraph-cdc/src/main/java/org/janusgraph/cdc/DebeziumCassandraJsonDecoder.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

janusgraph-cdc/src/main/java/org/janusgraph/cdc/DebeziumCassandraJsonDecoder.java#L75

The method 'decode(byte, byte)' has an NPath complexity of 3456, current threshold is 200

Check warning on line 190 in janusgraph-cdc/src/main/java/org/janusgraph/cdc/DebeziumCassandraJsonDecoder.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

janusgraph-cdc/src/main/java/org/janusgraph/cdc/DebeziumCassandraJsonDecoder.java#L190

An instanceof check is being performed on the caught exception.  Create a separate catch clause for this exception type.

Check warning on line 239 in janusgraph-cdc/src/main/java/org/janusgraph/cdc/DebeziumCassandraJsonDecoder.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

janusgraph-cdc/src/main/java/org/janusgraph/cdc/DebeziumCassandraJsonDecoder.java#L239

Use equals() to compare object references.

Check warning on line 124 in janusgraph-cdc/src/test/java/org/janusgraph/cdc/CdcIndexUpdateWorkerLoopTest.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

janusgraph-cdc/src/test/java/org/janusgraph/cdc/CdcIndexUpdateWorkerLoopTest.java#L124

Avoid throwing raw exception types.

Check warning on line 182 in janusgraph-cdc/src/test/java/org/janusgraph/cdc/CdcIndexUpdateWorkerLoopTest.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

janusgraph-cdc/src/test/java/org/janusgraph/cdc/CdcIndexUpdateWorkerLoopTest.java#L182

Avoid throwing raw exception types.

Check warning on line 136 in janusgraph-cdc/src/test/java/org/janusgraph/cdc/CdcIndexUpdateWorkerMainTest.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

janusgraph-cdc/src/test/java/org/janusgraph/cdc/CdcIndexUpdateWorkerMainTest.java#L136

Avoid throwing raw exception types.

Check warning on line 84 in janusgraph-cdc/src/test/java/org/janusgraph/cdc/CdcKafkaElasticsearchTest.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

janusgraph-cdc/src/test/java/org/janusgraph/cdc/CdcKafkaElasticsearchTest.java#L84

Perhaps 'decoder' could be replaced by a local variable.

Check warning on line 85 in janusgraph-cdc/src/test/java/org/janusgraph/cdc/CdcKafkaElasticsearchTest.java

See this annotation in the file changed.

@codacy-production codacy-production / Codacy Static Code Analysis

janusgraph-cdc/src/test/java/org/janusgraph/cdc/CdcKafkaElasticsearchTest.java#L85

Perhaps 'applier' could be replaced by a local variable.