Skip to content

Commit fdbe655

Browse files
committed
move algorithms facade scaffolding from into procedure facade factory method
1 parent 16819e8 commit fdbe655

File tree

12 files changed

+119
-255
lines changed

12 files changed

+119
-255
lines changed

executor/src/test/java/org/neo4j/gds/executor/MemoryEstimationExecutorTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@
2525
import org.neo4j.gds.BaseTest;
2626
import org.neo4j.gds.GdsCypher;
2727
import org.neo4j.gds.NodeProjections;
28-
import org.neo4j.gds.ProcedureCallContextReturnColumns;
2928
import org.neo4j.gds.RelationshipProjections;
3029
import org.neo4j.gds.api.AlgorithmMetaDataSetter;
3130
import org.neo4j.gds.api.CloseableResourceRegistry;
3231
import org.neo4j.gds.api.DatabaseId;
3332
import org.neo4j.gds.api.NodeLookup;
33+
import org.neo4j.gds.api.ProcedureReturnColumns;
3434
import org.neo4j.gds.catalog.GraphProjectProc;
3535
import org.neo4j.gds.compat.GraphDatabaseApiProxy;
3636
import org.neo4j.gds.compat.Neo4jProxy;
@@ -75,7 +75,7 @@ void setup() throws Exception {
7575
.builder()
7676
.databaseId(DatabaseId.of(db.databaseName()))
7777
.dependencyResolver(GraphDatabaseApiProxy.dependencyResolver(db))
78-
.returnColumns(ProcedureCallContextReturnColumns.EMPTY)
78+
.returnColumns(ProcedureReturnColumns.EMPTY)
7979
.log(Neo4jProxy.testLog())
8080
.taskRegistryFactory(EmptyTaskRegistryFactory.INSTANCE)
8181
.userLogRegistryFactory(EmptyUserLogRegistryFactory.INSTANCE)

executor/src/test/java/org/neo4j/gds/executor/ProcedureExecutorTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@
2222
import org.junit.jupiter.api.AfterEach;
2323
import org.junit.jupiter.api.BeforeEach;
2424
import org.junit.jupiter.api.Test;
25-
import org.neo4j.gds.ProcedureCallContextReturnColumns;
2625
import org.neo4j.gds.api.AlgorithmMetaDataSetter;
2726
import org.neo4j.gds.api.CloseableResourceRegistry;
2827
import org.neo4j.gds.api.GraphStore;
2928
import org.neo4j.gds.api.NodeLookup;
29+
import org.neo4j.gds.api.ProcedureReturnColumns;
3030
import org.neo4j.gds.compat.Neo4jProxy;
3131
import org.neo4j.gds.config.GraphProjectConfig;
3232
import org.neo4j.gds.core.loading.GraphStoreCatalog;
@@ -133,7 +133,7 @@ private ExecutionContext executionContext(TaskStore taskStore) {
133133
.builder()
134134
.databaseId(graphStore.databaseInfo().databaseId())
135135
.log(Neo4jProxy.testLog())
136-
.returnColumns(ProcedureCallContextReturnColumns.EMPTY)
136+
.returnColumns(ProcedureReturnColumns.EMPTY)
137137
.taskRegistryFactory(jobId -> new TaskRegistry("", taskStore, jobId))
138138
.username("")
139139
.terminationMonitor(TerminationMonitor.EMPTY)

proc/common/src/main/java/org/neo4j/gds/BaseProc.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.neo4j.gds.procedures.GraphDataScienceProcedures;
3636
import org.neo4j.gds.procedures.ProcedureCallContextReturnColumns;
3737
import org.neo4j.gds.procedures.TransactionCloseableResourceRegistry;
38+
import org.neo4j.gds.procedures.TransactionNodeLookup;
3839
import org.neo4j.gds.procedures.integration.TransactionTerminationMonitor;
3940
import org.neo4j.gds.transaction.DatabaseTransactionContext;
4041
import org.neo4j.gds.transaction.EmptyTransactionContext;

proc/test/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ dependencies {
3434
implementation project(':neo4j-api')
3535
implementation project(':opengds-procedure-facade')
3636
implementation project(':open-licensing')
37+
implementation project(':open-model-catalog')
3738
implementation project(':pregel')
3839
implementation project(':procedure-integration')
3940
implementation project(':progress-tracking')

proc/test/src/main/java/org/neo4j/gds/FakeSecurityContext.java

Lines changed: 0 additions & 118 deletions
This file was deleted.

proc/test/src/main/java/org/neo4j/gds/ProcedureRunner.java

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,18 @@
3232
import org.neo4j.gds.configuration.LimitsConfiguration;
3333
import org.neo4j.gds.core.Username;
3434
import org.neo4j.gds.core.loading.GraphStoreCatalogService;
35+
import org.neo4j.gds.core.model.OpenModelCatalog;
3536
import org.neo4j.gds.core.utils.progress.TaskRegistryFactory;
3637
import org.neo4j.gds.core.utils.warnings.EmptyUserLogRegistryFactory;
3738
import org.neo4j.gds.core.utils.warnings.UserLogRegistryFactory;
3839
import org.neo4j.gds.core.write.ExporterContext;
3940
import org.neo4j.gds.core.write.NativeExportBuildersProvider;
4041
import org.neo4j.gds.metrics.MetricsFacade;
42+
import org.neo4j.gds.metrics.PassthroughExecutionMetricRegistrar;
43+
import org.neo4j.gds.metrics.algorithms.AlgorithmMetricsService;
44+
import org.neo4j.gds.metrics.procedures.DeprecatedProceduresMetricService;
45+
import org.neo4j.gds.modelcatalogservices.ModelCatalogServiceProvider;
46+
import org.neo4j.gds.procedures.AlgorithmFacadeBuilderFactory;
4147
import org.neo4j.gds.procedures.CatalogProcedureFacadeFactory;
4248
import org.neo4j.gds.procedures.GraphDataScienceProcedures;
4349
import org.neo4j.gds.procedures.TaskRegistryFactoryService;
@@ -47,6 +53,8 @@
4753
import org.neo4j.graphdb.GraphDatabaseService;
4854
import org.neo4j.graphdb.Transaction;
4955
import org.neo4j.internal.kernel.api.procs.ProcedureCallContext;
56+
import org.neo4j.internal.kernel.api.security.AuthSubject;
57+
import org.neo4j.internal.kernel.api.security.AuthenticationResult;
5058
import org.neo4j.internal.kernel.api.security.SecurityContext;
5159
import org.neo4j.kernel.api.KernelTransaction;
5260
import org.neo4j.kernel.impl.coreapi.InternalTransaction;
@@ -184,7 +192,22 @@ public TaskRegistryFactory getTaskRegistryFactory(DatabaseId databaseId, User us
184192
new UserLogServices()
185193
);
186194

187-
var securityContext = new FakeSecurityContext();
195+
var securityContext = new SecurityContext(new AuthSubject() {
196+
@Override
197+
public AuthenticationResult getAuthenticationResult() {
198+
throw new UnsupportedOperationException("TODO");
199+
}
200+
201+
@Override
202+
public boolean hasUsername(String username) {
203+
throw new UnsupportedOperationException("TODO");
204+
}
205+
206+
@Override
207+
public String executingUser() {
208+
return username.username();
209+
}
210+
}, null, null, null);
188211

189212
var exporterContext = new ExporterContext() {
190213
@Override
@@ -203,6 +226,16 @@ public SecurityContext securityContext() {
203226
}
204227
};
205228

229+
var modelCatalog = new OpenModelCatalog();
230+
231+
var algorithmFacadeBuilderFactory = new AlgorithmFacadeBuilderFactory(
232+
gdsLog,
233+
graphStoreCatalogService,
234+
false,
235+
new AlgorithmMetricsService(new PassthroughExecutionMetricRegistrar()),
236+
new ModelCatalogServiceProvider(modelCatalog)
237+
);
238+
206239
return GraphDataScienceProcedures.create(
207240
gdsLog,
208241
DefaultsConfiguration.Instance,
@@ -220,7 +253,9 @@ public SecurityContext securityContext() {
220253
securityContext,
221254
exporterContext,
222255
graphDatabaseService,
223-
procedureTransaction
256+
procedureTransaction,
257+
algorithmFacadeBuilderFactory,
258+
DeprecatedProceduresMetricService.PASSTHROUGH
224259
);
225260
}
226261
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
* You should have received a copy of the GNU General Public License
1818
* along with this program. If not, see <http://www.gnu.org/licenses/>.
1919
*/
20-
package org.neo4j.gds.procedures.integration;
20+
package org.neo4j.gds.procedures;
2121

2222
import org.neo4j.gds.algorithms.centrality.CentralityAlgorithmsEstimateBusinessFacade;
2323
import org.neo4j.gds.algorithms.centrality.CentralityAlgorithmsFacade;
@@ -65,7 +65,7 @@
6565
import org.neo4j.gds.procedures.embeddings.NodeEmbeddingsProcedureFacade;
6666
import org.neo4j.gds.procedures.misc.MiscAlgorithmsProcedureFacade;
6767

68-
class AlgorithmFacadeFactory {
68+
class AlgorithmFacadeBuilder {
6969
// Request scoped parameters
7070
private final ConfigurationCreator configurationCreator;
7171
private final NodeLookup nodeLookup;
@@ -82,7 +82,7 @@ class AlgorithmFacadeFactory {
8282
private final StatsModeAlgorithmRunner statsModeAlgorithmRunner;
8383
private final WriteModeAlgorithmRunner writeModeAlgorithmRunner;
8484

85-
AlgorithmFacadeFactory(
85+
AlgorithmFacadeBuilder(
8686
ConfigurationCreator configurationCreator,
8787
NodeLookup nodeLookup,
8888
ProcedureReturnColumns procedureReturnColumns,
Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,8 @@
1717
* You should have received a copy of the GNU General Public License
1818
* along with this program. If not, see <http://www.gnu.org/licenses/>.
1919
*/
20-
package org.neo4j.gds.procedures.integration;
20+
package org.neo4j.gds.procedures;
2121

22-
import org.neo4j.gds.procedures.ProcedureCallContextReturnColumns;
23-
import org.neo4j.gds.procedures.TransactionCloseableResourceRegistry;
24-
import org.neo4j.gds.TransactionNodeLookup;
2522
import org.neo4j.gds.algorithms.AlgorithmMemoryValidationService;
2623
import org.neo4j.gds.algorithms.estimation.AlgorithmEstimator;
2724
import org.neo4j.gds.algorithms.mutateservices.MutateNodePropertyService;
@@ -42,10 +39,10 @@
4239
import org.neo4j.gds.procedures.algorithms.runners.WriteModeAlgorithmRunner;
4340
import org.neo4j.gds.procedures.algorithms.stubs.GenericStub;
4441
import org.neo4j.graphdb.GraphDatabaseService;
42+
import org.neo4j.internal.kernel.api.procs.ProcedureCallContext;
4543
import org.neo4j.kernel.api.KernelTransaction;
46-
import org.neo4j.kernel.api.procedure.Context;
4744

48-
class AlgorithmFacadeFactoryProvider {
45+
public class AlgorithmFacadeBuilderFactory {
4946
// dull utilities
5047
private final FictitiousGraphStoreEstimationService fictitiousGraphStoreEstimationService = new FictitiousGraphStoreEstimationService();
5148

@@ -58,7 +55,7 @@ class AlgorithmFacadeFactoryProvider {
5855
private final AlgorithmMetricsService algorithmMetricsService;
5956
private final ModelCatalogServiceProvider modelCatalogServiceProvider;
6057

61-
AlgorithmFacadeFactoryProvider(
58+
public AlgorithmFacadeBuilderFactory(
6259
Log log,
6360
GraphStoreCatalogService graphStoreCatalogService,
6461
boolean useMaxMemoryEstimation,
@@ -73,15 +70,15 @@ class AlgorithmFacadeFactoryProvider {
7370
this.modelCatalogServiceProvider = modelCatalogServiceProvider;
7471
}
7572

76-
AlgorithmFacadeFactory createAlgorithmFacadeFactory(
77-
Context context,
73+
AlgorithmFacadeBuilder create(
7874
ConfigurationCreator configurationCreator,
7975
RequestScopedDependencies requestScopedDependencies,
8076
KernelTransaction kernelTransaction,
8177
GraphDatabaseService graphDatabaseService,
8278
DatabaseGraphStoreEstimationService databaseGraphStoreEstimationService,
8379
ApplicationsFacade applicationsFacade,
84-
GenericStub genericStub
80+
GenericStub genericStub,
81+
ProcedureCallContext procedureCallContext
8582
) {
8683
/*
8784
* GDS services derived from Procedure Context.
@@ -92,7 +89,7 @@ AlgorithmFacadeFactory createAlgorithmFacadeFactory(
9289
var algorithmMemoryValidationService = new AlgorithmMemoryValidationService(log, useMaxMemoryEstimation);
9390
var mutateNodePropertyService = new MutateNodePropertyService(log);
9491
var nodeLookup = new TransactionNodeLookup(kernelTransaction);
95-
var procedureReturnColumns = new ProcedureCallContextReturnColumns(context.procedureCallContext());
92+
var procedureReturnColumns = new ProcedureCallContextReturnColumns(procedureCallContext);
9693

9794
// Second layer
9895
var writeNodePropertyService = new WriteNodePropertyService(log, requestScopedDependencies);
@@ -119,7 +116,7 @@ AlgorithmFacadeFactory createAlgorithmFacadeFactory(
119116
var writeModeAlgorithmRunner = new WriteModeAlgorithmRunner(configurationCreator);
120117

121118
// procedure facade
122-
return new AlgorithmFacadeFactory(
119+
return new AlgorithmFacadeBuilder(
123120
configurationCreator,
124121
nodeLookup,
125122
procedureReturnColumns,

0 commit comments

Comments
 (0)