Skip to content

Commit 1dc9b31

Browse files
authored
Merge pull request #9663 from lassewesth/metricssocalledfacade
clean up Metrics
2 parents bf0fbd9 + a02f1ff commit 1dc9b31

File tree

39 files changed

+288
-341
lines changed

39 files changed

+288
-341
lines changed

cypher-aggregation/src/integrationTest/java/org/neo4j/gds/projection/ProductGraphAggregatorTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import org.neo4j.gds.core.loading.GraphStoreCatalog;
2929
import org.neo4j.gds.core.utils.progress.EmptyTaskStore;
3030
import org.neo4j.gds.logging.Log;
31-
import org.neo4j.gds.metrics.MetricsFacade;
31+
import org.neo4j.gds.metrics.projections.ProjectionMetricsService;
3232
import org.neo4j.values.storable.NoValue;
3333
import org.neo4j.values.storable.Values;
3434
import org.neo4j.values.virtual.MapValue;
@@ -52,7 +52,7 @@ void shouldImportHighNodeIds() {
5252
WriteMode.LOCAL,
5353
QueryEstimator.empty(),
5454
ExecutingQueryProvider.empty(),
55-
MetricsFacade.PASSTHROUGH_METRICS_FACADE.projectionMetrics(),
55+
ProjectionMetricsService.DISABLED,
5656
EmptyTaskStore.INSTANCE,
5757
Log.noOpLog()
5858
);
@@ -91,7 +91,7 @@ void shouldFailOnEmptyGraphName(String emptyGraphName, String description) {
9191
WriteMode.LOCAL,
9292
QueryEstimator.empty(),
9393
ExecutingQueryProvider.empty(),
94-
MetricsFacade.PASSTHROUGH_METRICS_FACADE.projectionMetrics(),
94+
ProjectionMetricsService.DISABLED,
9595
EmptyTaskStore.INSTANCE,
9696
Log.noOpLog()
9797
);

cypher-aggregation/src/main/java/org/neo4j/gds/projection/AlphaCypherAggregation.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import org.neo4j.gds.compat.Neo4jProxy;
2626
import org.neo4j.gds.compat.UserFunctionSignatureBuilder;
2727
import org.neo4j.gds.core.loading.Capabilities.WriteMode;
28-
import org.neo4j.gds.metrics.MetricsFacade;
28+
import org.neo4j.gds.metrics.Metrics;
2929
import org.neo4j.internal.kernel.api.exceptions.ProcedureException;
3030
import org.neo4j.internal.kernel.api.procs.Neo4jTypes;
3131
import org.neo4j.internal.kernel.api.procs.QualifiedName;
@@ -87,7 +87,7 @@ public AggregationResult procedureSyntax(
8787
@Override
8888
public UserAggregationReducer createReducer(Context ctx) throws ProcedureException {
8989
var databaseService = ctx.graphDatabaseAPI();
90-
var metricsFacade = Neo4jProxy.lookupComponentProvider(ctx, MetricsFacade.class, true);
90+
var metrics = Neo4jProxy.lookupComponentProvider(ctx, Metrics.class, true);
9191
var username = ctx.kernelTransaction().securityContext().subject().executingUser();
9292
var transaction = ctx.transaction();
9393
var ktxs = GraphDatabaseApiProxy.resolveDependency(databaseService, KernelTransactions.class);
@@ -109,7 +109,7 @@ public UserAggregationReducer createReducer(Context ctx) throws ProcedureExcepti
109109
writeMode,
110110
queryProvider,
111111
QueryEstimator.empty(),
112-
metricsFacade.projectionMetrics()
112+
metrics.projectionMetrics()
113113
);
114114
}
115115
}

cypher-aggregation/src/main/java/org/neo4j/gds/projection/CypherAggregation.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import org.neo4j.gds.core.loading.Capabilities.WriteMode;
2828
import org.neo4j.gds.core.utils.progress.TaskStore;
2929
import org.neo4j.gds.logging.LogAdapter;
30-
import org.neo4j.gds.metrics.MetricsFacade;
30+
import org.neo4j.gds.metrics.Metrics;
3131
import org.neo4j.gds.transaction.DatabaseTransactionContext;
3232
import org.neo4j.internal.kernel.api.exceptions.ProcedureException;
3333
import org.neo4j.internal.kernel.api.procs.Neo4jTypes;
@@ -87,7 +87,7 @@ public AggregationResult procedureSyntax(
8787
@Override
8888
public UserAggregationReducer createReducer(Context ctx) throws ProcedureException {
8989
var databaseService = ctx.graphDatabaseAPI();
90-
var metricsFacade = Neo4jProxy.lookupComponentProvider(ctx, MetricsFacade.class, true);
90+
var metrics = Neo4jProxy.lookupComponentProvider(ctx, Metrics.class, true);
9191
var taskStore = Neo4jProxy.lookupComponentProvider(ctx, TaskStore.class, true);
9292
var log = Neo4jProxy.lookupComponentProvider(ctx, Log.class, true);
9393
var username = ctx.kernelTransaction().securityContext().subject().executingUser();
@@ -121,7 +121,7 @@ public UserAggregationReducer createReducer(Context ctx) throws ProcedureExcepti
121121
writeMode,
122122
queryEstimator,
123123
queryProvider,
124-
metricsFacade.projectionMetrics(),
124+
metrics.projectionMetrics(),
125125
taskStore,
126126
new LogAdapter(log)
127127
);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
import org.neo4j.gds.core.utils.warnings.EmptyUserLogRegistryFactory;
4141
import org.neo4j.gds.gdl.GdlGraphs;
4242
import org.neo4j.gds.logging.Log;
43-
import org.neo4j.gds.metrics.MetricsFacade;
43+
import org.neo4j.gds.metrics.Metrics;
4444
import org.neo4j.gds.projection.GraphProjectFromStoreConfig;
4545
import org.neo4j.gds.termination.TerminationMonitor;
4646
import org.neo4j.gds.test.TestAlgorithm;
@@ -84,7 +84,7 @@ void setup() throws Exception {
8484
.nodeLookup(NodeLookup.EMPTY)
8585
.modelCatalog(ModelCatalog.EMPTY)
8686
.isGdsAdmin(false)
87-
.metricsFacade(MetricsFacade.PASSTHROUGH_METRICS_FACADE)
87+
.metrics(Metrics.DISABLED)
8888
.build();
8989

9090
memoryEstimationExecutor = new MemoryEstimationExecutor<>(

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
import org.neo4j.gds.extension.GdlGraph;
4141
import org.neo4j.gds.extension.Inject;
4242
import org.neo4j.gds.logging.Log;
43-
import org.neo4j.gds.metrics.MetricsFacade;
43+
import org.neo4j.gds.metrics.Metrics;
4444
import org.neo4j.gds.termination.TerminationMonitor;
4545
import org.neo4j.gds.utils.StringJoining;
4646

@@ -153,7 +153,7 @@ public boolean containsDependency(Class<?> type) {
153153
.closeableResourceRegistry(CloseableResourceRegistry.EMPTY)
154154
.nodeLookup(NodeLookup.EMPTY)
155155
.userLogRegistryFactory(EmptyUserLogRegistryFactory.INSTANCE)
156-
.metricsFacade(MetricsFacade.PASSTHROUGH_METRICS_FACADE)
156+
.metrics(Metrics.DISABLED)
157157
.build();
158158
}
159159

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
import org.neo4j.gds.core.write.NodePropertyExporterBuilder;
3535
import org.neo4j.gds.core.write.RelationshipExporterBuilder;
3636
import org.neo4j.gds.logging.Log;
37-
import org.neo4j.gds.metrics.MetricsFacade;
37+
import org.neo4j.gds.metrics.Metrics;
3838
import org.neo4j.gds.procedures.algorithms.AlgorithmsProcedureFacade;
3939
import org.neo4j.gds.termination.TerminationMonitor;
4040

@@ -66,7 +66,7 @@ public interface ExecutionContext {
6666

6767
boolean isGdsAdmin();
6868

69-
MetricsFacade metricsFacade();
69+
Metrics metrics();
7070

7171
@Nullable
7272
AlgorithmsProcedureFacade algorithmsProcedureFacade();
@@ -169,8 +169,8 @@ public boolean isGdsAdmin() {
169169
}
170170

171171
@Override
172-
public MetricsFacade metricsFacade() {
173-
return MetricsFacade.PASSTHROUGH_METRICS_FACADE;
172+
public Metrics metrics() {
173+
return Metrics.DISABLED;
174174
}
175175

176176
@Override

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ public RESULT compute(
116116
algo.getProgressTracker().setEstimatedResourceFootprint(memoryEstimationInBytes, config.concurrency());
117117

118118

119-
ALGO_RESULT result = executeAlgorithm(builder, algo, executionContext.metricsFacade().algorithmMetrics());
119+
ALGO_RESULT result = executeAlgorithm(builder, algo, executionContext.metrics().algorithmMetrics());
120120

121121
var computationResult = builder
122122
.graph(graph)

metrics-api/src/main/java/org/neo4j/gds/metrics/ExecutionMetric.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,22 @@
2020
package org.neo4j.gds.metrics;
2121

2222
public abstract class ExecutionMetric implements AutoCloseable {
23+
static final ExecutionMetric DISABLED = new ExecutionMetric("disabled") {
24+
@Override
25+
public void start() {
26+
// do nothing
27+
}
28+
29+
@Override
30+
public void failed(Exception e) {
31+
// do nothing
32+
}
33+
34+
@Override
35+
public void close() {
36+
// do nothing
37+
}
38+
};
2339

2440
protected final String operation;
2541

metrics-api/src/main/java/org/neo4j/gds/metrics/ExecutionMetricRegistrar.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
package org.neo4j.gds.metrics;
2121

2222
public interface ExecutionMetricRegistrar {
23+
ExecutionMetricRegistrar DISABLED = __ -> ExecutionMetric.DISABLED;
2324

2425
ExecutionMetric create(String algorithm);
25-
2626
}

metrics-api/src/main/java/org/neo4j/gds/metrics/MetricsFacade.java renamed to metrics-api/src/main/java/org/neo4j/gds/metrics/Metrics.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,21 @@
2323
import org.neo4j.gds.metrics.procedures.DeprecatedProceduresMetricService;
2424
import org.neo4j.gds.metrics.projections.ProjectionMetricsService;
2525

26-
public class MetricsFacade {
27-
28-
public static final MetricsFacade PASSTHROUGH_METRICS_FACADE = new MetricsFacade(
29-
new AlgorithmMetricsService(new PassthroughExecutionMetricRegistrar()),
30-
new ProjectionMetricsService(new PassthroughExecutionMetricRegistrar()),
31-
DeprecatedProceduresMetricService.PASSTHROUGH
26+
/**
27+
* This is a <a href="https://refactoring.com/catalog/introduceParameterObject.html">parameter object</a> for all things metrics.
28+
*/
29+
public class Metrics {
30+
public static final Metrics DISABLED = new Metrics(
31+
AlgorithmMetricsService.DISABLED,
32+
ProjectionMetricsService.DISABLED,
33+
DeprecatedProceduresMetricService.DISABLED
3234
);
3335

3436
private final AlgorithmMetricsService algorithmMetricsService;
3537
private final ProjectionMetricsService projectionMetricsService;
3638
private final DeprecatedProceduresMetricService deprecatedProceduresMetricService;
3739

38-
public MetricsFacade(
40+
public Metrics(
3941
AlgorithmMetricsService algorithmMetricsService,
4042
ProjectionMetricsService projectionMetricsService,
4143
DeprecatedProceduresMetricService deprecatedProceduresMetricService

metrics-api/src/main/java/org/neo4j/gds/metrics/PassthroughExecutionMetric.java

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

metrics-api/src/main/java/org/neo4j/gds/metrics/PassthroughExecutionMetricRegistrar.java

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

metrics-api/src/main/java/org/neo4j/gds/metrics/algorithms/AlgorithmMetricsService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,11 @@
1919
*/
2020
package org.neo4j.gds.metrics.algorithms;
2121

22-
import org.neo4j.gds.metrics.ExecutionMetricRegistrar;
2322
import org.neo4j.gds.metrics.ExecutionMetric;
23+
import org.neo4j.gds.metrics.ExecutionMetricRegistrar;
2424

2525
public class AlgorithmMetricsService {
26+
public static final AlgorithmMetricsService DISABLED = new AlgorithmMetricsService(ExecutionMetricRegistrar.DISABLED);
2627

2728
private final ExecutionMetricRegistrar metricRegistrar;
2829

metrics-api/src/main/java/org/neo4j/gds/metrics/procedures/DeprecatedProceduresMetricRegistrar.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package org.neo4j.gds.metrics.procedures;
2121

2222
public interface DeprecatedProceduresMetricRegistrar {
23+
DeprecatedProceduresMetricRegistrar DISABLED = __ -> {};
2324

2425
void called(String deprecatedProcedure);
2526
}

metrics-api/src/main/java/org/neo4j/gds/metrics/procedures/DeprecatedProceduresMetricService.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@
2020
package org.neo4j.gds.metrics.procedures;
2121

2222
public final class DeprecatedProceduresMetricService {
23-
24-
public static final DeprecatedProceduresMetricService PASSTHROUGH = new DeprecatedProceduresMetricService(new PassthroughDeprecatedProceduresMetricRegistrar());
23+
public static final DeprecatedProceduresMetricService DISABLED = new DeprecatedProceduresMetricService(DeprecatedProceduresMetricRegistrar.DISABLED);
2524

2625
private final DeprecatedProceduresMetricRegistrar registrar;
2726

@@ -32,5 +31,4 @@ public DeprecatedProceduresMetricService(DeprecatedProceduresMetricRegistrar reg
3231
public void called(String deprecatedProcedure) {
3332
registrar.called(deprecatedProcedure);
3433
}
35-
3634
}

metrics-api/src/main/java/org/neo4j/gds/metrics/procedures/PassthroughDeprecatedProceduresMetricRegistrar.java

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

metrics-api/src/main/java/org/neo4j/gds/metrics/projections/ProjectionMetricsService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.neo4j.gds.metrics.ExecutionMetricRegistrar;
2424

2525
public class ProjectionMetricsService {
26+
public static final ProjectionMetricsService DISABLED = new ProjectionMetricsService(ExecutionMetricRegistrar.DISABLED);
2627

2728
private final ExecutionMetricRegistrar metricRegistrar;
2829

@@ -49,5 +50,4 @@ public ExecutionMetric createSubGraph() {
4950
public ExecutionMetric createRandomWakSampling(String type) {
5051
return metricRegistrar.create(type);
5152
}
52-
5353
}

0 commit comments

Comments
 (0)