diff options
author | Jon Bratseth <bratseth@oath.com> | 2018-12-01 12:31:24 -0800 |
---|---|---|
committer | Jon Bratseth <bratseth@oath.com> | 2018-12-01 12:31:24 -0800 |
commit | 872994569344340f13519c92324bf177fc666ac9 (patch) | |
tree | fd859c0a38ed68300c743b54ee5ab41a986e273f /container-disc | |
parent | ce9f57d123d835cc698adf2febe4aae47128031d (diff) |
Revert "Merge pull request #7835 from vespa-engine/revert-7833-bratseth/remove-unused-rpc-server-take-2"
This reverts commit ce9f57d123d835cc698adf2febe4aae47128031d, reversing
changes made to c2af67b3d11da53655a0750d2e288b584c7b938c.
Diffstat (limited to 'container-disc')
-rw-r--r-- | container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java b/container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java index 69a525a2c54..f16fd0ed2a3 100644 --- a/container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java +++ b/container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java @@ -5,13 +5,13 @@ import com.google.common.collect.MapMaker; import com.google.inject.AbstractModule; import com.google.inject.Inject; import com.google.inject.Injector; +import com.yahoo.cloud.config.SlobroksConfig; import com.yahoo.component.provider.ComponentRegistry; import com.yahoo.concurrent.DaemonThreadFactory; import com.yahoo.config.ConfigInstance; import com.yahoo.config.subscription.ConfigInterruptedException; import com.yahoo.container.Container; import com.yahoo.container.QrConfig; -import com.yahoo.container.Server; import com.yahoo.container.core.ChainsConfig; import com.yahoo.container.core.config.HandlersConfigurerDi; import com.yahoo.container.di.config.Subscriber; @@ -30,8 +30,14 @@ import com.yahoo.jdisc.handler.RequestHandler; import com.yahoo.jdisc.service.ClientProvider; import com.yahoo.jdisc.service.ServerProvider; import com.yahoo.jrt.ListenFailedException; +import com.yahoo.jrt.Spec; +import com.yahoo.jrt.Supervisor; +import com.yahoo.jrt.Transport; +import com.yahoo.jrt.slobrok.api.Register; +import com.yahoo.jrt.slobrok.api.SlobrokList; import com.yahoo.log.LogLevel; import com.yahoo.log.LogSetup; +import com.yahoo.net.HostName; import com.yahoo.osgi.OsgiImpl; import com.yahoo.vespa.config.ConfigKey; import com.yahoo.yolean.Exceptions; @@ -73,6 +79,8 @@ public final class ConfiguredApplication implements Application { private final ContainerDiscApplication applicationWithLegacySetup; private final OsgiFramework osgiFramework; private final com.yahoo.jdisc.Timer timerSingleton; + private final Register slobrokRegistrator; + //TODO: FilterChainRepository should instead always be set up in the model. private final FilterChainRepository defaultFilterChainRepository = new FilterChainRepository(new ChainsConfig(new ChainsConfig.Builder()), @@ -107,7 +115,9 @@ public final class ConfiguredApplication implements Application { public ConfiguredApplication(ContainerActivator activator, OsgiFramework osgiFramework, com.yahoo.jdisc.Timer timer, - SubscriberFactory subscriberFactory) throws ListenFailedException { + SubscriberFactory subscriberFactory, + SlobroksConfig slobroksConfig, + QrConfig qrConfig) throws ListenFailedException { this.activator = activator; this.osgiFramework = osgiFramework; this.timerSingleton = timer; @@ -117,6 +127,20 @@ public final class ConfiguredApplication implements Application { Container.get().setOsgi(new OsgiImpl(osgiFramework)); applicationWithLegacySetup = new ContainerDiscApplication(configId); + + slobrokRegistrator = registerInSlobrok(slobroksConfig, qrConfig); + } + + /** The container has no rpc methods, but we still need to register it in Slobrok to enable orchestration */ + private Register registerInSlobrok(SlobroksConfig slobrokConfig, QrConfig qrConfig) { + SlobrokList slobrokList = new SlobrokList(); + slobrokList.setup(slobrokConfig.slobrok().stream().map(SlobroksConfig.Slobrok::connectionspec).toArray(String[]::new)); + Spec mySpec = new Spec(HostName.getLocalhost(), qrConfig.rpc().port()); + Register slobrokRegistrator = new Register(new Supervisor(new Transport()), slobrokList, mySpec); + slobrokRegistrator.registerName(qrConfig.rpc().slobrokId()); + log.log(LogLevel.INFO, + "Registered name '" + qrConfig.rpc().slobrokId() + "' at " + mySpec + " with: " + slobrokList); + return slobrokRegistrator; } @Override @@ -134,10 +158,11 @@ public final class ConfiguredApplication implements Application { portWatcher.start(); } - + @SuppressWarnings("deprecation") private static void hackToInitializeServer(QrConfig config) { try { - Server.get().initialize(config); + Container.get().setupFileAcquirer(config.filedistributor()); + com.yahoo.container.Server.get().initialize(config); } catch (Exception e) { log.log(LogLevel.ERROR, "Caught exception when initializing server. Exiting.", e); Runtime.getRuntime().halt(1); @@ -293,6 +318,7 @@ public final class ConfiguredApplication implements Application { log.info("Stop: Shutting container down"); configurer.shutdown(new Deconstructor(false)); Container.get().shutdown(); + slobrokRegistrator.shutdown(); log.info("Stop: Finished"); } |