Skip to content

Commit e7c23e6

Browse files
s1ckknutwalker
andcommitted
Add feature toggle for enabling arrow database import
Co-Authored-By: Paul Horn <[email protected]>
1 parent fcabcd0 commit e7c23e6

File tree

3 files changed

+38
-1
lines changed

3 files changed

+38
-1
lines changed

core/src/main/java/org/neo4j/gds/utils/GdsFeatureToggles.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ public enum GdsFeatureToggles {
3434
USE_BIT_ID_MAP(true),
3535
USE_SHARDED_ID_MAP(false),
3636
USE_UNCOMPRESSED_ADJACENCY_LIST(false),
37-
USE_REORDERED_ADJACENCY_LIST(false);
37+
USE_REORDERED_ADJACENCY_LIST(false),
38+
ENABLE_ARROW_DATABASE_IMPORT(true);
3839

3940
public boolean isEnabled() {
4041
return current.get();

proc/misc/src/main/java/org/neo4j/gds/FeatureToggleProc.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,21 @@ public Stream<FeatureState> resetUseReorderedAdjacencyList() {
152152
return Stream.of(new FeatureState(GdsFeatureToggles.USE_REORDERED_ADJACENCY_LIST.isEnabled()));
153153
}
154154

155+
@Internal
156+
@Procedure("gds.features.enableArrowDatabaseImport")
157+
@Description("Enables support for importing Neo4j databases via the GDS Arrow Flight Server.")
158+
public void enableArrowDatabaseImport(@Name(value = "useReorderedAdjacencyList") boolean useReorderedAdjacencyList) {
159+
GdsFeatureToggles.ENABLE_ARROW_DATABASE_IMPORT.toggle(useReorderedAdjacencyList);
160+
}
161+
162+
@Internal
163+
@Procedure("gds.features.enableArrowDatabaseImport.reset")
164+
@Description("Sets the default behaviour for enabling Neo4j database import via the GDS Arrow Flight Server. That value is returned.")
165+
public Stream<FeatureState> resetEnableArrowDatabaseImport() {
166+
GdsFeatureToggles.ENABLE_ARROW_DATABASE_IMPORT.reset();
167+
return Stream.of(new FeatureState(GdsFeatureToggles.ENABLE_ARROW_DATABASE_IMPORT.isEnabled()));
168+
}
169+
155170
@Internal
156171
@Procedure("gds.features.maxArrayLengthShift.reset")
157172
@Description("Set the value of the max array size before paging to the default. That value is returned.")

proc/misc/src/test/java/org/neo4j/gds/FeatureToggleProcTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
import static org.junit.jupiter.api.Assertions.assertEquals;
3232
import static org.junit.jupiter.api.Assertions.assertFalse;
3333
import static org.junit.jupiter.api.Assertions.assertThrows;
34+
import static org.junit.jupiter.api.Assertions.assertTrue;
35+
import static org.neo4j.gds.utils.GdsFeatureToggles.ENABLE_ARROW_DATABASE_IMPORT;
3436
import static org.neo4j.gds.utils.GdsFeatureToggles.SKIP_ORPHANS;
3537
import static org.neo4j.gds.utils.GdsFeatureToggles.USE_PARALLEL_PROPERTY_VALUE_INDEX;
3638
import static org.neo4j.gds.utils.GdsFeatureToggles.USE_PARTITIONED_SCAN;
@@ -165,6 +167,25 @@ void resetUseReorderedAdjacencyList() {
165167
assertFalse(USE_REORDERED_ADJACENCY_LIST.isEnabled());
166168
}
167169

170+
@Test
171+
void toggleEnableArrowDatabaseImport() {
172+
var enableArrowDatabaseImport = ENABLE_ARROW_DATABASE_IMPORT.isEnabled();
173+
runQuery("CALL gds.features.enableArrowDatabaseImport($value)", Map.of("value", !enableArrowDatabaseImport));
174+
assertEquals(!enableArrowDatabaseImport, ENABLE_ARROW_DATABASE_IMPORT.isEnabled());
175+
runQuery("CALL gds.features.enableArrowDatabaseImport($value)", Map.of("value", enableArrowDatabaseImport));
176+
assertEquals(enableArrowDatabaseImport, ENABLE_ARROW_DATABASE_IMPORT.isEnabled());
177+
}
178+
179+
@Test
180+
void resetEnableArrowDatabaseImport() {
181+
ENABLE_ARROW_DATABASE_IMPORT.reset();
182+
assertCypherResult(
183+
"CALL gds.features.enableArrowDatabaseImport.reset()",
184+
List.of(Map.of("enabled", true))
185+
);
186+
assertTrue(ENABLE_ARROW_DATABASE_IMPORT.isEnabled());
187+
}
188+
168189
@Test
169190
void toggleMaxArrayLengthShift() {
170191
var maxArrayLengthShift = GdsFeatureToggles.MAX_ARRAY_LENGTH_SHIFT.get();

0 commit comments

Comments
 (0)