Skip to content

Commit 5a921ca

Browse files
Introduce a cursor queue tracking function
1 parent 4523993 commit 5a921ca

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

core/src/main/java/org/neo4j/gds/core/huge/CompositeAdjacencyCursor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ public List<AdjacencyCursor> cursors() {
5151
return cursors;
5252
}
5353

54-
void exchangeCursor(AdjacencyCursor oldCursor, AdjacencyCursor newCursor) {
55-
cursorQueue.remove(oldCursor); //remove the old cursor
56-
cursorQueue.add(newCursor); // add the new one
54+
void updateCursorsQueue() {
55+
cursorQueue.clear();
56+
cursorQueue.addAll(cursors);
5757
}
5858
@Override
5959
public int size() {

core/src/main/java/org/neo4j/gds/core/huge/CompositeAdjacencyList.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,17 +125,19 @@ public CompositeAdjacencyCursor adjacencyCursor(@Nullable AdjacencyCursor reuse,
125125
if (reuse instanceof CompositeAdjacencyCursor) {
126126
var compositeReuse = (CompositeAdjacencyCursor) reuse;
127127
var iter = compositeReuse.cursors().listIterator();
128+
boolean cursorsAreUpdated = false;
128129
while (iter.hasNext()) {
129130
var index = iter.nextIndex();
130131
var cursor = iter.next();
131132
var newCursor = adjacencyLists.get(index).adjacencyCursor(cursor, node, fallbackValue);
132133
if (newCursor != cursor) {
133-
var newCursor1 = adjacencyCursorWrapperFactory.create(newCursor);
134-
iter.set(newCursor1);
135-
compositeReuse.exchangeCursor(cursor, newCursor1);
136-
134+
iter.set(adjacencyCursorWrapperFactory.create(newCursor));
135+
cursorsAreUpdated = true;
137136
}
138137
}
138+
if (cursorsAreUpdated) {
139+
compositeReuse.updateCursorsQueue();
140+
}
139141
return compositeReuse;
140142
}
141143
return adjacencyCursor(node, fallbackValue);

0 commit comments

Comments
 (0)