diff options
Diffstat (limited to 'container-core/src/main/java')
3 files changed, 16 insertions, 11 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/Server.java b/container-core/src/main/java/com/yahoo/container/Server.java index 207050a8d88..2eec2e36c47 100644 --- a/container-core/src/main/java/com/yahoo/container/Server.java +++ b/container-core/src/main/java/com/yahoo/container/Server.java @@ -19,7 +19,7 @@ public class Server { private ConfigSubscriber subscriber = new ConfigSubscriber(); /** The OSGi container instance of this server */ - private Container container=Container.get(); + private Container container = Container.get(); /** A short string which is different for all the qrserver instances on a given node. */ private String localServerDiscriminator = "qrserver.0"; @@ -48,7 +48,6 @@ public class Server { return instance; } - private void initRpcServer(Rpc rpcConfig) { if (rpcConfig.enabled()) { ContainerRpcAdaptor rpcAdaptor = container.getRpcAdaptor(); @@ -57,8 +56,7 @@ public class Server { } } - /** Ugly hack, see Container.resetInstance - **/ + /** Ugly hack, see Container.resetInstance */ static void resetInstance() { instance = new Server(); } diff --git a/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java b/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java index 49cacb3a09b..41e3e43f156 100644 --- a/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java +++ b/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java @@ -86,7 +86,7 @@ public class HandlersConfigurerDi { container = new Container(subscriberFactory, configId, deconstructor, osgiWrapper); try { - runOnceAndEnsureRegistryHackRun(discInjector); + getNewConfigGraph(discInjector, false); } catch (InterruptedException e) { throw new RuntimeException("Interrupted while setting up handlers for the first time."); } @@ -138,11 +138,18 @@ public class HandlersConfigurerDi { } } - public void runOnceAndEnsureRegistryHackRun(Injector discInjector) throws InterruptedException { - currentGraph = container.runOnce(currentGraph, createFallbackInjector(vespaContainer, discInjector)); - - RegistriesHack registriesHack = currentGraph.getInstance(RegistriesHack.class); - assert (registriesHack != null); + /** + * Wait for new config to arrive and produce the new graph + * + * @return true if this resulted in a new graph that should be applied to the currently running container + */ + public boolean getNewConfigGraph(Injector discInjector, boolean restartOnRedeploy) throws InterruptedException { + ComponentGraph newGraph = container.getNewConfigGraph(currentGraph, createFallbackInjector(vespaContainer, discInjector), restartOnRedeploy); + if (newGraph == currentGraph) return false; + currentGraph = newGraph; + + assert (currentGraph.getInstance(RegistriesHack.class) != null); // TODO: Remove, seems quite pointless? + return true; } @SuppressWarnings("deprecation") diff --git a/container-core/src/main/java/com/yahoo/container/core/config/testutil/HandlersConfigurerTestWrapper.java b/container-core/src/main/java/com/yahoo/container/core/config/testutil/HandlersConfigurerTestWrapper.java index 89c73e19fe3..008ca5c1d5a 100644 --- a/container-core/src/main/java/com/yahoo/container/core/config/testutil/HandlersConfigurerTestWrapper.java +++ b/container-core/src/main/java/com/yahoo/container/core/config/testutil/HandlersConfigurerTestWrapper.java @@ -112,7 +112,7 @@ public class HandlersConfigurerTestWrapper { public void reloadConfig() { configurer.reloadConfig(++lastGeneration); try { - configurer.runOnceAndEnsureRegistryHackRun(Guice.createInjector()); + configurer.getNewConfigGraph(Guice.createInjector(), false); } catch (InterruptedException e) { throw new RuntimeException(e); } |