Skip to content

Commit 8a836e5

Browse files
Correctly inject TaskStore instance
Co-authored-by: Ioannis Panagiotas <[email protected]>
1 parent aef5028 commit 8a836e5

File tree

3 files changed

+45
-10
lines changed

3 files changed

+45
-10
lines changed

progress-tracking/src/main/java/org/neo4j/gds/core/utils/progress/TaskRegistryExtension.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,16 +54,15 @@ public Lifecycle newInstance(ExtensionContext context, TaskRegistryExtension.Dep
5454
var registry = dependencies.globalProceduresRegistry();
5555
var enabled = dependencies.config().get(ProgressFeatureSettings.progress_tracking_enabled);
5656
String databaseName = dependencies.graphDatabaseService().databaseName();
57+
5758
if (enabled) {
59+
var taskStoreProvider = new TaskStoreProvider();
5860
// Use the centrally managed task stores
59-
var taskStore = TaskStoreHolder.getTaskStore(databaseName);
60-
var taskRegistryFactoryProvider = new TaskRegistryFactoryProvider(taskStore);
61-
62-
registry.registerComponent(TaskStore.class, ctx -> taskStore, true);
63-
registry.registerComponent(TaskRegistryFactory.class, taskRegistryFactoryProvider, true);
61+
registry.registerComponent(TaskStore.class, taskStoreProvider, true);
62+
registry.registerComponent(TaskRegistryFactory.class, new TaskRegistryFactoryProvider(taskStoreProvider), true);
6463

6564
// hey this is just for tests? TaskRegistryExtensionMultiDBTest breaks if it is missing
66-
context.dependencySatisfier().satisfyDependency(taskStore);
65+
context.dependencySatisfier().satisfyDependency(TaskStoreHolder.getTaskStore(databaseName));
6766
} else {
6867
registry.registerComponent(TaskRegistryFactory.class, ctx -> EmptyTaskRegistryFactory.INSTANCE, true);
6968
registry.registerComponent(TaskStore.class, ctx -> EmptyTaskStore.INSTANCE, true);
@@ -87,7 +86,7 @@ public void shutdown() {
8786
};
8887
}
8988

90-
interface Dependencies {
89+
public interface Dependencies {
9190
Config config();
9291

9392
LogService logService();

progress-tracking/src/main/java/org/neo4j/gds/core/utils/progress/TaskRegistryFactoryProvider.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,17 @@
2525
import org.neo4j.kernel.api.procedure.Context;
2626

2727
class TaskRegistryFactoryProvider implements ThrowingFunction<Context, TaskRegistryFactory, ProcedureException> {
28-
private final TaskStore taskStore;
2928

30-
TaskRegistryFactoryProvider(TaskStore taskStore) {this.taskStore = taskStore;}
29+
private final TaskStoreProvider taskStoreProvider;
30+
31+
TaskRegistryFactoryProvider(TaskStoreProvider taskStoreProvider) {
32+
33+
this.taskStoreProvider = taskStoreProvider;
34+
}
3135

3236
@Override
3337
public TaskRegistryFactory apply(Context context) throws ProcedureException {
3438
var username = Neo4jProxy.username(context.securityContext().subject());
35-
return new LocalTaskRegistryFactory(username, taskStore);
39+
return new LocalTaskRegistryFactory(username, taskStoreProvider.apply(context));
3640
}
3741
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
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.core.utils.progress;
21+
22+
import org.neo4j.function.ThrowingFunction;
23+
import org.neo4j.internal.kernel.api.exceptions.ProcedureException;
24+
import org.neo4j.kernel.api.procedure.Context;
25+
26+
class TaskStoreProvider implements ThrowingFunction<Context, TaskStore, ProcedureException> {
27+
28+
@Override
29+
public TaskStore apply(Context context) throws ProcedureException {
30+
return TaskStoreHolder.getTaskStore(context.graphDatabaseAPI().databaseName());
31+
}
32+
}

0 commit comments

Comments
 (0)