Skip to content

Commit 467345e

Browse files
Make WCC's progress trackable.
1 parent 6396664 commit 467345e

File tree

2 files changed

+29
-12
lines changed

2 files changed

+29
-12
lines changed

algo/src/main/java/org/neo4j/gds/similarity/nodesim/NodeSimilarity.java

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@
3838
import org.neo4j.gds.similarity.SimilarityResult;
3939
import org.neo4j.gds.similarity.filtering.NodeFilter;
4040
import org.neo4j.gds.termination.TerminationFlag;
41-
import org.neo4j.gds.wcc.WccStub;
4241
import org.neo4j.gds.wcc.WccParameters;
42+
import org.neo4j.gds.wcc.WccStub;
4343

4444
import java.util.Objects;
4545
import java.util.Optional;
@@ -173,21 +173,32 @@ private void prepare() {
173173
progressTracker.beginSubTask();
174174

175175
components = initComponents();
176-
if (parameters.runWCC()) {
177-
progressTracker.beginSubTask();
176+
177+
if (parameters.runWCC()){
178+
prepareAsChildTask();
179+
}else{
180+
prepareAsLeaf();
178181
}
179-
initNodeSpecificFields();
180182

181-
sourceNodesStream = initSourceNodesStream();
183+
progressTracker.endSubTask();
184+
}
182185

183-
targetNodesStream = initTargetNodesStream();
186+
private void prepareAsLeaf(){
187+
setUpNodesAndFilters();
188+
}
184189

185-
if (parameters.runWCC()) {
186-
progressTracker.endSubTask();
187-
}
190+
private void prepareAsChildTask(){
191+
progressTracker.beginSubTask();
192+
setUpNodesAndFilters();
188193
progressTracker.endSubTask();
189194
}
190195

196+
private void setUpNodesAndFilters(){
197+
initNodeSpecificFields();
198+
sourceNodesStream = initSourceNodesStream();
199+
targetNodesStream = initTargetNodesStream();
200+
}
201+
191202
private Stream<SimilarityResult> computeSimilarityResultStream() {
192203
if (parameters.hasTopK()) {
193204
var topKMap = computeTopKMap();
@@ -219,10 +230,8 @@ private LongUnaryOperator initComponents() {
219230
}
220231

221232
// run WCC to determine components
222-
progressTracker.beginSubTask();
223233
var wccParameters = new WccParameters(0D, concurrency);
224-
var disjointSets = wccStub.wcc(graph, wccParameters, ProgressTracker.NULL_TRACKER, false);
225-
progressTracker.endSubTask();
234+
var disjointSets = wccStub.wcc(graph, wccParameters, progressTracker, false);
226235
return disjointSets::setIdOf;
227236
}
228237

algo/src/test/java/org/neo4j/gds/similarity/nodesim/NodeSimilarityTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -902,6 +902,14 @@ void shouldLogProgressForWccOptimization() {
902902
"Node Similarity :: compare node pairs :: Start",
903903
"Node Similarity :: compare node pairs :: Finished"
904904
);
905+
906+
assertThat(log.getMessages(INFO)
907+
.stream()
908+
.filter( v -> v.contains("WCC"))
909+
.count())
910+
.isGreaterThan(3);
911+
912+
905913
}
906914

907915
@Test

0 commit comments

Comments
 (0)