Skip to content

Commit aac76d1

Browse files
Replace dep.resolver with something more versatile
1 parent b0748f4 commit aac76d1

File tree

19 files changed

+114
-75
lines changed

19 files changed

+114
-75
lines changed

applications/algorithms/machinery/src/main/java/org/neo4j/gds/applications/algorithms/machinery/DefaultMemoryGuard.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,4 +108,5 @@ public synchronized void assertAlgorithmCanRun(
108108

109109
}
110110
}
111+
111112
}

executor/src/main/java/org/neo4j/gds/executor/ExecutionContext.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ public interface ExecutionContext {
4747

4848
DependencyResolver dependencyResolver();
4949

50+
MemoryEstimationContext memoryEstimationContext();
51+
5052
@Nullable
5153
ModelCatalog modelCatalog();
5254

@@ -112,6 +114,8 @@ public boolean containsDependency(Class<?> type) {
112114
}
113115
};
114116

117+
118+
MemoryEstimationContext EMPTY_MEMORY_CONTEXT = new MemoryEstimationContext(false);
115119
ExecutionContext EMPTY = new ExecutionContext() {
116120

117121
@Override
@@ -124,6 +128,11 @@ public DependencyResolver dependencyResolver() {
124128
return EMPTY_DEPENDENCY_RESOLVER;
125129
}
126130

131+
@Override
132+
public MemoryEstimationContext memoryEstimationContext() {
133+
return EMPTY_MEMORY_CONTEXT;
134+
}
135+
127136
@Override
128137
public ModelCatalog modelCatalog() {
129138
return ModelCatalog.EMPTY;
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
/*
2+
* Copyright (c) "Neo4j"
3+
* Neo4j Sweden AB [http://neo4j.com]
4+
*
5+
* This file is part of Neo4j.
6+
*
7+
* Neo4j is free software: you can redistribute it and/or modify
8+
* it under the terms of the GNU General Public License as published by
9+
* the Free Software Foundation, either version 3 of the License, or
10+
* (at your option) any later version.
11+
*
12+
* This program is distributed in the hope that it will be useful,
13+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15+
* GNU General Public License for more details.
16+
*
17+
* You should have received a copy of the GNU General Public License
18+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
19+
*/
20+
package org.neo4j.gds.executor;
21+
22+
public record MemoryEstimationContext(boolean useMaxMemoryEstimation) {}

executor/src/main/java/org/neo4j/gds/executor/ProcedureExecutorSpec.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
*/
2020
package org.neo4j.gds.executor;
2121

22-
import org.neo4j.configuration.Config;
2322
import org.neo4j.gds.Algorithm;
2423
import org.neo4j.gds.applications.graphstorecatalog.GraphStoreFromCatalogLoader;
2524
import org.neo4j.gds.applications.graphstorecatalog.MemoryUsageValidator;
@@ -32,7 +31,6 @@
3231
import org.neo4j.gds.procedures.algorithms.configuration.AlgoConfigParser;
3332
import org.neo4j.gds.procedures.algorithms.configuration.NewConfigFunction;
3433
import org.neo4j.gds.procedures.algorithms.configuration.ProcConfigParser;
35-
import org.neo4j.gds.settings.GdsSettings;
3634

3735
public class ProcedureExecutorSpec<
3836
ALGO extends Algorithm<ALGO_RESULT>,
@@ -57,8 +55,7 @@ public Validator<CONFIG> validator(ValidationConfiguration<CONFIG> validationCon
5755

5856
@Override
5957
public GraphCreationFactory<ALGO, ALGO_RESULT, CONFIG> graphCreationFactory(ExecutionContext executionContext) {
60-
var neo4jConfig = executionContext.dependencyResolver().resolveDependency(Config.class);
61-
var useMaxMemoryEstimation = neo4jConfig.get(GdsSettings.validateUsingMaxMemoryEstimation());
58+
var useMaxMemoryEstimation = executionContext.memoryEstimationContext().useMaxMemoryEstimation();
6259

6360
return new ProcedureGraphCreationFactory<>(
6461
(config, graphName) -> new GraphStoreFromCatalogLoader(

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import org.neo4j.gds.core.utils.warnings.EmptyUserLogRegistryFactory;
3838
import org.neo4j.gds.core.utils.warnings.EmptyUserLogStore;
3939
import org.neo4j.gds.core.utils.warnings.UserLogRegistryFactory;
40+
import org.neo4j.gds.executor.MemoryEstimationContext;
4041
import org.neo4j.gds.logging.LogAdapter;
4142
import org.neo4j.gds.mem.MemoryTracker;
4243
import org.neo4j.gds.metrics.Metrics;
@@ -176,12 +177,12 @@ private static GraphDataScienceProcedures createGraphDataScienceProcedures(
176177
loggers,
177178
DefaultsConfiguration.Instance,
178179
null,
179-
null,
180180
catalogProcedureFacadeFactory,
181181
null,
182182
graphStoreCatalogService,
183183
LimitsConfiguration.Instance,
184184
MemoryGuard.DISABLED,
185+
new MemoryEstimationContext(false),
185186
Metrics.DISABLED,
186187
modelCatalog,
187188
null,

procedures/facade/src/main/java/org/neo4j/gds/procedures/LocalGraphDataScienceProcedures.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
*/
2020
package org.neo4j.gds.procedures;
2121

22-
import org.neo4j.common.DependencyResolver;
2322
import org.neo4j.gds.api.ProcedureReturnColumns;
2423
import org.neo4j.gds.applications.ApplicationsFacade;
2524
import org.neo4j.gds.applications.algorithms.machinery.AlgorithmEstimationTemplate;
@@ -39,6 +38,7 @@
3938
import org.neo4j.gds.core.loading.GraphStoreCatalogService;
4039
import org.neo4j.gds.core.model.ModelCatalog;
4140
import org.neo4j.gds.core.utils.logging.GdsLoggers;
41+
import org.neo4j.gds.executor.MemoryEstimationContext;
4242
import org.neo4j.gds.logging.Log;
4343
import org.neo4j.gds.mem.MemoryTracker;
4444
import org.neo4j.gds.memest.DatabaseGraphStoreEstimationService;
@@ -102,13 +102,13 @@ public class LocalGraphDataScienceProcedures implements GraphDataScienceProcedur
102102
public static GraphDataScienceProcedures create(
103103
GdsLoggers loggers,
104104
DefaultsConfiguration defaultsConfiguration,
105-
DependencyResolver dependencyResolver,
106105
ExportLocation exportLocation,
107106
GraphCatalogProcedureFacadeFactory graphCatalogProcedureFacadeFactory,
108107
FeatureTogglesRepository featureTogglesRepository,
109108
GraphStoreCatalogService graphStoreCatalogService,
110109
LimitsConfiguration limitsConfiguration,
111110
MemoryGuard memoryGuard,
111+
MemoryEstimationContext memoryEstimationContext,
112112
Metrics metrics,
113113
ModelCatalog modelCatalog,
114114
ModelRepository modelRepository,
@@ -208,7 +208,7 @@ public static GraphDataScienceProcedures create(
208208
modelRepository,
209209
pipelineRepository,
210210
closeableResourceRegistry,
211-
dependencyResolver,
211+
memoryEstimationContext,
212212
metrics,
213213
nodeLookup,
214214
procedureReturnColumns,

procedures/integration/src/main/java/org/neo4j/gds/procedures/integration/GraphDataScienceProceduresProvider.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.neo4j.gds.core.utils.logging.GdsLoggers;
3737
import org.neo4j.gds.core.utils.progress.TaskStoreService;
3838
import org.neo4j.gds.core.write.ExporterContext;
39+
import org.neo4j.gds.executor.MemoryEstimationContext;
3940
import org.neo4j.gds.mem.MemoryTracker;
4041
import org.neo4j.gds.metrics.Metrics;
4142
import org.neo4j.gds.procedures.DatabaseIdAccessor;
@@ -80,6 +81,7 @@ public class GraphDataScienceProceduresProvider implements ThrowingFunction<Cont
8081
private final GraphStoreCatalogService graphStoreCatalogService;
8182
private final LimitsConfiguration limitsConfiguration;
8283
private final MemoryGuard memoryGuard;
84+
private final MemoryEstimationContext memoryEstimationContext;
8385
private final Metrics metrics;
8486
private final ModelCatalog modelCatalog;
8587
private final ModelRepository modelRepository;
@@ -104,6 +106,7 @@ public class GraphDataScienceProceduresProvider implements ThrowingFunction<Cont
104106
GraphStoreCatalogService graphStoreCatalogService,
105107
LimitsConfiguration limitsConfiguration,
106108
MemoryGuard memoryGuard,
109+
MemoryEstimationContext memoryEstimationContext,
107110
Metrics metrics,
108111
ModelCatalog modelCatalog,
109112
ModelRepository modelRepository,
@@ -128,6 +131,7 @@ public class GraphDataScienceProceduresProvider implements ThrowingFunction<Cont
128131
this.graphStoreCatalogService = graphStoreCatalogService;
129132
this.limitsConfiguration = limitsConfiguration;
130133
this.memoryGuard = memoryGuard;
134+
this.memoryEstimationContext = memoryEstimationContext;
131135
this.metrics = metrics;
132136
this.modelCatalog = modelCatalog;
133137
this.modelRepository = modelRepository;
@@ -189,13 +193,13 @@ public GraphDataScienceProcedures apply(Context context) throws ProcedureExcepti
189193
return LocalGraphDataScienceProcedures.create(
190194
loggers,
191195
defaultsConfiguration,
192-
dependencyResolver,
193196
exportLocation,
194197
graphCatalogProcedureFacadeFactory,
195198
featureTogglesRepository,
196199
graphStoreCatalogService,
197200
limitsConfiguration,
198201
memoryGuard,
202+
memoryEstimationContext,
199203
metrics,
200204
modelCatalog,
201205
modelRepository,

procedures/integration/src/main/java/org/neo4j/gds/procedures/integration/GraphDataScienceProceduresProviderFactory.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.neo4j.gds.core.model.ModelCatalog;
3333
import org.neo4j.gds.core.utils.logging.GdsLoggers;
3434
import org.neo4j.gds.core.utils.progress.TaskStoreService;
35+
import org.neo4j.gds.executor.MemoryEstimationContext;
3536
import org.neo4j.gds.mem.MemoryTracker;
3637
import org.neo4j.gds.metrics.Metrics;
3738
import org.neo4j.gds.procedures.ExporterBuildersProviderService;
@@ -125,6 +126,7 @@ GraphDataScienceProceduresProvider createGraphDataScienceProvider(
125126
graphStoreCatalogService,
126127
limitsConfiguration,
127128
memoryGuard,
129+
new MemoryEstimationContext(useMaxMemoryEstimation),
128130
metrics,
129131
modelCatalog,
130132
modelRepository,

procedures/pipelines-facade/src/main/java/org/neo4j/gds/procedures/pipelines/LinkPredictionComputation.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
*/
2020
package org.neo4j.gds.procedures.pipelines;
2121

22-
import org.neo4j.common.DependencyResolver;
2322
import org.neo4j.gds.api.CloseableResourceRegistry;
2423
import org.neo4j.gds.api.DatabaseId;
2524
import org.neo4j.gds.api.Graph;
@@ -36,6 +35,7 @@
3635
import org.neo4j.gds.core.write.NodePropertyExporterBuilder;
3736
import org.neo4j.gds.core.write.RelationshipExporterBuilder;
3837
import org.neo4j.gds.executor.ImmutableExecutionContext;
38+
import org.neo4j.gds.executor.MemoryEstimationContext;
3939
import org.neo4j.gds.logging.Log;
4040
import org.neo4j.gds.metrics.Metrics;
4141
import org.neo4j.gds.ml.linkmodels.LinkPredictionResult;
@@ -49,7 +49,7 @@ final class LinkPredictionComputation implements Computation<LinkPredictionResul
4949

5050
private final CloseableResourceRegistry closeableResourceRegistry;
5151
private final DatabaseId databaseId;
52-
private final DependencyResolver dependencyResolver;
52+
private final MemoryEstimationContext memoryEstimationContext;
5353
private final Metrics metrics;
5454
private final NodeLookup nodeLookup;
5555
private final NodePropertyExporterBuilder nodePropertyExporterBuilder;
@@ -73,7 +73,7 @@ private LinkPredictionComputation(
7373
ModelCatalog modelCatalog,
7474
CloseableResourceRegistry closeableResourceRegistry,
7575
DatabaseId databaseId,
76-
DependencyResolver dependencyResolver,
76+
MemoryEstimationContext memoryEstimationContext,
7777
Metrics metrics,
7878
NodeLookup nodeLookup,
7979
NodePropertyExporterBuilder nodePropertyExporterBuilder,
@@ -93,7 +93,7 @@ private LinkPredictionComputation(
9393
this.modelCatalog = modelCatalog;
9494
this.closeableResourceRegistry = closeableResourceRegistry;
9595
this.databaseId = databaseId;
96-
this.dependencyResolver = dependencyResolver;
96+
this.memoryEstimationContext = memoryEstimationContext;
9797
this.metrics = metrics;
9898
this.nodeLookup = nodeLookup;
9999
this.nodePropertyExporterBuilder = nodePropertyExporterBuilder;
@@ -115,7 +115,7 @@ static LinkPredictionComputation create(
115115
ModelCatalog modelCatalog,
116116
CloseableResourceRegistry closeableResourceRegistry,
117117
DatabaseId databaseId,
118-
DependencyResolver dependencyResolver,
118+
MemoryEstimationContext memoryEstimationContext,
119119
Metrics metrics,
120120
NodeLookup nodeLookup,
121121
NodePropertyExporterBuilder nodePropertyExporterBuilder,
@@ -137,7 +137,7 @@ static LinkPredictionComputation create(
137137
modelCatalog,
138138
closeableResourceRegistry,
139139
databaseId,
140-
dependencyResolver,
140+
memoryEstimationContext,
141141
metrics,
142142
nodeLookup,
143143
nodePropertyExporterBuilder,
@@ -182,7 +182,7 @@ public LinkPredictionResult compute(Graph graph, GraphStore graphStore) {
182182
.algorithmsProcedureFacade(algorithmsProcedureFacade)
183183
.closeableResourceRegistry(closeableResourceRegistry)
184184
.databaseId(databaseId)
185-
.dependencyResolver(dependencyResolver)
185+
.memoryEstimationContext(memoryEstimationContext)
186186
.isGdsAdmin(user.isAdmin())
187187
.log(log)
188188
.metrics(metrics)

procedures/pipelines-facade/src/main/java/org/neo4j/gds/procedures/pipelines/LinkPredictionTrainComputation.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
*/
2020
package org.neo4j.gds.procedures.pipelines;
2121

22-
import org.neo4j.common.DependencyResolver;
2322
import org.neo4j.gds.api.CloseableResourceRegistry;
2423
import org.neo4j.gds.api.DatabaseId;
2524
import org.neo4j.gds.api.Graph;
@@ -36,6 +35,7 @@
3635
import org.neo4j.gds.core.write.NodePropertyExporterBuilder;
3736
import org.neo4j.gds.core.write.RelationshipExporterBuilder;
3837
import org.neo4j.gds.executor.ImmutableExecutionContext;
38+
import org.neo4j.gds.executor.MemoryEstimationContext;
3939
import org.neo4j.gds.logging.Log;
4040
import org.neo4j.gds.metrics.Metrics;
4141
import org.neo4j.gds.ml.pipeline.PipelineCompanion;
@@ -51,7 +51,7 @@ final class LinkPredictionTrainComputation implements Computation<LinkPrediction
5151

5252
private final CloseableResourceRegistry closeableResourceRegistry;
5353
private final DatabaseId databaseId;
54-
private final DependencyResolver dependencyResolver;
54+
private final MemoryEstimationContext memoryEstimationContext;
5555
private final Metrics metrics;
5656
private final NodeLookup nodeLookup;
5757
private final NodePropertyExporterBuilder nodePropertyExporterBuilder;
@@ -75,7 +75,7 @@ private LinkPredictionTrainComputation(
7575
PipelineRepository pipelineRepository,
7676
CloseableResourceRegistry closeableResourceRegistry,
7777
DatabaseId databaseId,
78-
DependencyResolver dependencyResolver,
78+
MemoryEstimationContext memoryEstimationContext,
7979
Metrics metrics,
8080
NodeLookup nodeLookup,
8181
NodePropertyExporterBuilder nodePropertyExporterBuilder,
@@ -95,7 +95,7 @@ private LinkPredictionTrainComputation(
9595
this.pipelineRepository = pipelineRepository;
9696
this.closeableResourceRegistry = closeableResourceRegistry;
9797
this.databaseId = databaseId;
98-
this.dependencyResolver = dependencyResolver;
98+
this.memoryEstimationContext = memoryEstimationContext;
9999
this.metrics = metrics;
100100
this.nodeLookup = nodeLookup;
101101
this.nodePropertyExporterBuilder = nodePropertyExporterBuilder;
@@ -117,7 +117,7 @@ static LinkPredictionTrainComputation create(
117117
PipelineRepository pipelineRepository,
118118
CloseableResourceRegistry closeableResourceRegistry,
119119
DatabaseId databaseId,
120-
DependencyResolver dependencyResolver,
120+
MemoryEstimationContext memoryEstimationContext,
121121
Metrics metrics,
122122
NodeLookup nodeLookup,
123123
NodePropertyExporterBuilder nodePropertyExporterBuilder,
@@ -138,7 +138,7 @@ static LinkPredictionTrainComputation create(
138138
pipelineRepository,
139139
closeableResourceRegistry,
140140
databaseId,
141-
dependencyResolver,
141+
memoryEstimationContext,
142142
metrics,
143143
nodeLookup,
144144
nodePropertyExporterBuilder,
@@ -193,7 +193,7 @@ public LinkPredictionTrainPipelineExecutor.LinkPredictionTrainPipelineResult com
193193
.algorithmsProcedureFacade(algorithmsProcedureFacade)
194194
.closeableResourceRegistry(closeableResourceRegistry)
195195
.databaseId(databaseId)
196-
.dependencyResolver(dependencyResolver)
196+
.memoryEstimationContext(memoryEstimationContext)
197197
.isGdsAdmin(this.user.isAdmin())
198198
.log(log)
199199
.metrics(metrics)

0 commit comments

Comments
 (0)