(service) Ensure the service discovery starts early

This is necessary as we use zookeeper to orchestrate first-time startup of the services, to ensure that the database is properly migrated by the control service before anything else is permitted to start.
This commit is contained in:
Viktor Lofgren 2024-04-25 15:08:33 +02:00
parent 3952ef6ca5
commit 6690e9bde8
9 changed files with 39 additions and 1 deletions

View File

@ -4,6 +4,7 @@ import com.google.inject.Guice;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Injector; import com.google.inject.Injector;
import nu.marginalia.service.MainClass; import nu.marginalia.service.MainClass;
import nu.marginalia.service.discovery.ServiceRegistryIf;
import nu.marginalia.service.module.ServiceDiscoveryModule; import nu.marginalia.service.module.ServiceDiscoveryModule;
import nu.marginalia.service.ServiceId; import nu.marginalia.service.ServiceId;
import nu.marginalia.service.module.ServiceConfigurationModule; import nu.marginalia.service.module.ServiceConfigurationModule;
@ -23,6 +24,10 @@ public class ApiMain extends MainClass {
new DatabaseModule(false), new DatabaseModule(false),
new ServiceDiscoveryModule(), new ServiceDiscoveryModule(),
new ServiceConfigurationModule(ServiceId.Api)); new ServiceConfigurationModule(ServiceId.Api));
// Ensure that the service registry is initialized early
injector.getInstance(ServiceRegistryIf.class);
injector.getInstance(ApiMain.class); injector.getInstance(ApiMain.class);
injector.getInstance(Initialization.class).setReady(); injector.getInstance(Initialization.class).setReady();
} }

View File

@ -4,6 +4,7 @@ import com.google.inject.Guice;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Injector; import com.google.inject.Injector;
import nu.marginalia.service.MainClass; import nu.marginalia.service.MainClass;
import nu.marginalia.service.discovery.ServiceRegistryIf;
import nu.marginalia.service.module.ServiceDiscoveryModule; import nu.marginalia.service.module.ServiceDiscoveryModule;
import nu.marginalia.service.ServiceId; import nu.marginalia.service.ServiceId;
import nu.marginalia.service.module.ServiceConfigurationModule; import nu.marginalia.service.module.ServiceConfigurationModule;
@ -31,6 +32,9 @@ public class DatingMain extends MainClass {
new DatabaseModule(false) new DatabaseModule(false)
); );
// Ensure that the service registry is initialized early
injector.getInstance(ServiceRegistryIf.class);
injector.getInstance(DatingMain.class); injector.getInstance(DatingMain.class);
injector.getInstance(Initialization.class).setReady(); injector.getInstance(Initialization.class).setReady();
} }

View File

@ -4,6 +4,7 @@ import com.google.inject.Guice;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Injector; import com.google.inject.Injector;
import nu.marginalia.service.MainClass; import nu.marginalia.service.MainClass;
import nu.marginalia.service.discovery.ServiceRegistryIf;
import nu.marginalia.service.module.ServiceDiscoveryModule; import nu.marginalia.service.module.ServiceDiscoveryModule;
import nu.marginalia.service.ServiceId; import nu.marginalia.service.ServiceId;
import nu.marginalia.service.module.ServiceConfigurationModule; import nu.marginalia.service.module.ServiceConfigurationModule;
@ -31,6 +32,9 @@ public class ExplorerMain extends MainClass {
new DatabaseModule(false) new DatabaseModule(false)
); );
// Ensure that the service registry is initialized early
injector.getInstance(ServiceRegistryIf.class);
injector.getInstance(ExplorerMain.class); injector.getInstance(ExplorerMain.class);
injector.getInstance(Initialization.class).setReady(); injector.getInstance(Initialization.class).setReady();
} }

View File

@ -4,6 +4,7 @@ import com.google.inject.Guice;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Injector; import com.google.inject.Injector;
import nu.marginalia.service.MainClass; import nu.marginalia.service.MainClass;
import nu.marginalia.service.discovery.ServiceRegistryIf;
import nu.marginalia.service.module.ServiceDiscoveryModule; import nu.marginalia.service.module.ServiceDiscoveryModule;
import nu.marginalia.service.ServiceId; import nu.marginalia.service.ServiceId;
import nu.marginalia.service.module.ServiceConfigurationModule; import nu.marginalia.service.module.ServiceConfigurationModule;
@ -32,6 +33,9 @@ public class SearchMain extends MainClass {
new DatabaseModule(false) new DatabaseModule(false)
); );
// Ensure that the service registry is initialized early
injector.getInstance(ServiceRegistryIf.class);
injector.getInstance(SearchMain.class); injector.getInstance(SearchMain.class);
injector.getInstance(Initialization.class).setReady(); injector.getInstance(Initialization.class).setReady();

View File

@ -4,6 +4,7 @@ import com.google.inject.Guice;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Injector; import com.google.inject.Injector;
import nu.marginalia.service.MainClass; import nu.marginalia.service.MainClass;
import nu.marginalia.service.discovery.ServiceRegistryIf;
import nu.marginalia.service.module.ServiceDiscoveryModule; import nu.marginalia.service.module.ServiceDiscoveryModule;
import nu.marginalia.service.ServiceId; import nu.marginalia.service.ServiceId;
import nu.marginalia.service.module.ServiceConfigurationModule; import nu.marginalia.service.module.ServiceConfigurationModule;
@ -28,6 +29,10 @@ public class AssistantMain extends MainClass {
new DatabaseModule(false) new DatabaseModule(false)
); );
// Ensure that the service registry is initialized early
injector.getInstance(ServiceRegistryIf.class);
injector.getInstance(AssistantMain.class); injector.getInstance(AssistantMain.class);
injector.getInstance(Initialization.class).setReady(); injector.getInstance(Initialization.class).setReady();

View File

@ -4,6 +4,7 @@ import com.google.inject.Guice;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Injector; import com.google.inject.Injector;
import nu.marginalia.service.MainClass; import nu.marginalia.service.MainClass;
import nu.marginalia.service.discovery.ServiceRegistryIf;
import nu.marginalia.service.module.ServiceDiscoveryModule; import nu.marginalia.service.module.ServiceDiscoveryModule;
import nu.marginalia.service.ServiceId; import nu.marginalia.service.ServiceId;
import nu.marginalia.service.module.ServiceConfigurationModule; import nu.marginalia.service.module.ServiceConfigurationModule;
@ -25,6 +26,9 @@ public class ControlMain extends MainClass {
new ServiceDiscoveryModule(), new ServiceDiscoveryModule(),
new ServiceConfigurationModule(ServiceId.Control)); new ServiceConfigurationModule(ServiceId.Control));
// Ensure that the service registry is initialized early
injector.getInstance(ServiceRegistryIf.class);
injector.getInstance(ControlMain.class); injector.getInstance(ControlMain.class);
injector.getInstance(Initialization.class).setReady(); injector.getInstance(Initialization.class).setReady();
} }

View File

@ -4,6 +4,7 @@ import com.google.inject.Guice;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Injector; import com.google.inject.Injector;
import nu.marginalia.service.MainClass; import nu.marginalia.service.MainClass;
import nu.marginalia.service.discovery.ServiceRegistryIf;
import nu.marginalia.service.module.ServiceDiscoveryModule; import nu.marginalia.service.module.ServiceDiscoveryModule;
import nu.marginalia.service.ServiceId; import nu.marginalia.service.ServiceId;
import nu.marginalia.service.module.DatabaseModule; import nu.marginalia.service.module.DatabaseModule;
@ -28,8 +29,11 @@ public class ExecutorMain extends MainClass {
new ServiceDiscoveryModule(), new ServiceDiscoveryModule(),
new ServiceConfigurationModule(ServiceId.Executor) new ServiceConfigurationModule(ServiceId.Executor)
); );
injector.getInstance(NodeStatusWatcher.class);
// Ensure that the service registry is initialized early
injector.getInstance(ServiceRegistryIf.class);
injector.getInstance(NodeStatusWatcher.class);
injector.getInstance(ExecutorMain.class); injector.getInstance(ExecutorMain.class);
injector.getInstance(Initialization.class).setReady(); injector.getInstance(Initialization.class).setReady();
} }

View File

@ -4,6 +4,7 @@ import com.google.inject.Guice;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Injector; import com.google.inject.Injector;
import nu.marginalia.service.MainClass; import nu.marginalia.service.MainClass;
import nu.marginalia.service.discovery.ServiceRegistryIf;
import nu.marginalia.service.module.ServiceDiscoveryModule; import nu.marginalia.service.module.ServiceDiscoveryModule;
import nu.marginalia.service.ServiceId; import nu.marginalia.service.ServiceId;
import nu.marginalia.service.module.ServiceConfigurationModule; import nu.marginalia.service.module.ServiceConfigurationModule;
@ -29,6 +30,9 @@ public class IndexMain extends MainClass {
new ServiceConfigurationModule(ServiceId.Index) new ServiceConfigurationModule(ServiceId.Index)
); );
// Ensure that the service registry is initialized early
injector.getInstance(ServiceRegistryIf.class);
injector.getInstance(NodeStatusWatcher.class); injector.getInstance(NodeStatusWatcher.class);
injector.getInstance(IndexMain.class); injector.getInstance(IndexMain.class);

View File

@ -4,6 +4,7 @@ import com.google.inject.Guice;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Injector; import com.google.inject.Injector;
import nu.marginalia.service.MainClass; import nu.marginalia.service.MainClass;
import nu.marginalia.service.discovery.ServiceRegistryIf;
import nu.marginalia.service.module.ServiceDiscoveryModule; import nu.marginalia.service.module.ServiceDiscoveryModule;
import nu.marginalia.service.ServiceId; import nu.marginalia.service.ServiceId;
import nu.marginalia.service.module.ServiceConfigurationModule; import nu.marginalia.service.module.ServiceConfigurationModule;
@ -28,6 +29,9 @@ public class QueryMain extends MainClass {
new ServiceConfigurationModule(ServiceId.Query) new ServiceConfigurationModule(ServiceId.Query)
); );
// Ensure that the service registry is initialized early
injector.getInstance(ServiceRegistryIf.class);
injector.getInstance(QueryMain.class); injector.getInstance(QueryMain.class);
injector.getInstance(Initialization.class).setReady(); injector.getInstance(Initialization.class).setReady();
} }