diff options
author | valerijf <valerijf@yahoo-inc.com> | 2016-07-18 15:05:37 +0200 |
---|---|---|
committer | valerijf <valerijf@yahoo-inc.com> | 2016-07-18 15:05:37 +0200 |
commit | cc58b19d26d48c6e8f812a24a5bec9be26b2024e (patch) | |
tree | 0322f74452a213eb50960e50cb9d972b22790646 /node-admin | |
parent | 3847b871b8ccc9c33e521b64b9e6679ece0848ab (diff) |
Made MaintenanceSchedulerImpl constructor private to prevent having multiple instances
Diffstat (limited to 'node-admin')
2 files changed, 12 insertions, 2 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/MaintenanceSchedulerImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/MaintenanceSchedulerImpl.java index 5e9b89c9ca9..4345b591a0b 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/MaintenanceSchedulerImpl.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/maintenance/MaintenanceSchedulerImpl.java @@ -32,7 +32,16 @@ public class MaintenanceSchedulerImpl extends AbstractComponent implements Runna private final ScheduledExecutorService service = new ScheduledThreadPoolExecutor(1); private Queue<String> jobQueue = new LinkedBlockingQueue<>(); - public MaintenanceSchedulerImpl() { + private static MaintenanceScheduler maintenanceScheduler = null; + + // Because of the regular job queue, we must have only one instance of this class + public static MaintenanceScheduler getInstance() { + if (maintenanceScheduler == null) maintenanceScheduler = new MaintenanceSchedulerImpl(); + + return maintenanceScheduler; + } + + private MaintenanceSchedulerImpl() { service.scheduleAtFixedRate(this, rate.toMillis(), rate.toMillis(), TimeUnit.MILLISECONDS); addRegularJob(Maintainer.JOB_DELETE_OLD_APP_DATA, diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/ComponentsProviderImpl.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/ComponentsProviderImpl.java index 2adee07b5b0..b7f8710e85e 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/ComponentsProviderImpl.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/provider/ComponentsProviderImpl.java @@ -2,6 +2,7 @@ package com.yahoo.vespa.hosted.node.admin.provider; import com.yahoo.vespa.applicationmodel.HostName; +import com.yahoo.vespa.hosted.node.admin.maintenance.MaintenanceScheduler; import com.yahoo.vespa.hosted.node.admin.maintenance.MaintenanceSchedulerImpl; import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdmin; import com.yahoo.vespa.hosted.node.admin.nodeadmin.NodeAdminImpl; @@ -48,7 +49,7 @@ public class ComponentsProviderImpl implements ComponentsProvider { NodeRepository nodeRepository = new NodeRepositoryImpl(configServerHosts, HARDCODED_NODEREPOSITORY_PORT, baseHostName); Orchestrator orchestrator = OrchestratorImpl.createOrchestratorFromSettings(); - MaintenanceSchedulerImpl maintenanceScheduler = new MaintenanceSchedulerImpl(); + MaintenanceScheduler maintenanceScheduler = MaintenanceSchedulerImpl.getInstance(); final Function<HostName, NodeAgent> nodeAgentFactory = (hostName) -> new NodeAgentImpl(hostName, nodeRepository, orchestrator, new DockerOperations(docker), maintenanceScheduler); |