summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/CloudSubscriber.java9
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/CloudSubscriberFactory.java11
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/ConfigRetriever.java7
-rw-r--r--container-core/src/main/java/com/yahoo/container/di/config/SubscriberFactory.java2
-rw-r--r--container-disc/src/main/java/com/yahoo/container/jdisc/ConfiguredApplication.java6
-rw-r--r--standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneSubscriberFactory.java2
-rw-r--r--standalone-container/src/test/java/com/yahoo/container/standalone/StandaloneSubscriberTest.java2
7 files changed, 21 insertions, 18 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/di/CloudSubscriber.java b/container-core/src/main/java/com/yahoo/container/di/CloudSubscriber.java
index 4efb36d4b29..9201ad2a528 100644
--- a/container-core/src/main/java/com/yahoo/container/di/CloudSubscriber.java
+++ b/container-core/src/main/java/com/yahoo/container/di/CloudSubscriber.java
@@ -24,13 +24,15 @@ import static java.util.logging.Level.FINE;
public class CloudSubscriber implements Subscriber {
private static final Logger log = Logger.getLogger(CloudSubscriber.class.getName());
+ private final String name;
private final ConfigSubscriber subscriber;
private final Map<ConfigKey<ConfigInstance>, ConfigHandle<ConfigInstance>> handles = new HashMap<>();
// if waitNextGeneration has not yet been called, -1 should be returned
private long generation = -1L;
- CloudSubscriber(Set<ConfigKey<ConfigInstance>> keys, ConfigSource configSource) {
+ CloudSubscriber(String name, ConfigSource configSource, Set<ConfigKey<ConfigInstance>> keys) {
+ this.name = name;
this.subscriber = new ConfigSubscriber(configSource);
keys.forEach(k -> handles.put(k, subscriber.subscribe(k.getConfigClass(), k.getConfigId())));
}
@@ -91,6 +93,11 @@ public class CloudSubscriber implements Subscriber {
subscriber.close();
}
+ @Override
+ public String toString() {
+ return "CloudSubscriber{" + name + ", gen." + generation + "}";
+ }
+
// TODO: Remove, only used by test specific code in CloudSubscriberFactory
ConfigSubscriber getSubscriber() {
return subscriber;
diff --git a/container-core/src/main/java/com/yahoo/container/di/CloudSubscriberFactory.java b/container-core/src/main/java/com/yahoo/container/di/CloudSubscriberFactory.java
index 38f7ded28f8..a6327b01e21 100644
--- a/container-core/src/main/java/com/yahoo/container/di/CloudSubscriberFactory.java
+++ b/container-core/src/main/java/com/yahoo/container/di/CloudSubscriberFactory.java
@@ -2,26 +2,19 @@
package com.yahoo.container.di;
import com.yahoo.config.ConfigInstance;
-import com.yahoo.config.subscription.ConfigHandle;
import com.yahoo.config.subscription.ConfigSource;
import com.yahoo.config.subscription.ConfigSourceSet;
-import com.yahoo.config.subscription.ConfigSubscriber;
import com.yahoo.container.di.config.Subscriber;
import com.yahoo.container.di.config.SubscriberFactory;
import com.yahoo.vespa.config.ConfigKey;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.WeakHashMap;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import static java.util.logging.Level.FINE;
/**
* @author Tony Vaagenes
@@ -39,14 +32,14 @@ public class CloudSubscriberFactory implements SubscriberFactory {
}
@Override
- public Subscriber getSubscriber(Set<? extends ConfigKey<?>> configKeys) {
+ public Subscriber getSubscriber(Set<? extends ConfigKey<?>> configKeys, String name) {
Set<ConfigKey<ConfigInstance>> subscriptionKeys = new HashSet<>();
for(ConfigKey<?> key: configKeys) {
@SuppressWarnings("unchecked") // ConfigKey is defined as <CONFIGCLASS extends ConfigInstance>
ConfigKey<ConfigInstance> invariant = (ConfigKey<ConfigInstance>) key;
subscriptionKeys.add(invariant);
}
- CloudSubscriber subscriber = new CloudSubscriber(subscriptionKeys, configSource);
+ CloudSubscriber subscriber = new CloudSubscriber(name, configSource, subscriptionKeys);
testGeneration.ifPresent(subscriber.getSubscriber()::reload); // TODO: test specific code, remove
activeSubscribers.put(subscriber, 0);
diff --git a/container-core/src/main/java/com/yahoo/container/di/ConfigRetriever.java b/container-core/src/main/java/com/yahoo/container/di/ConfigRetriever.java
index 88167c73198..5554a5a804f 100644
--- a/container-core/src/main/java/com/yahoo/container/di/ConfigRetriever.java
+++ b/container-core/src/main/java/com/yahoo/container/di/ConfigRetriever.java
@@ -33,6 +33,7 @@ public final class ConfigRetriever {
private final Subscriber bootstrapSubscriber;
private Subscriber componentSubscriber;
private final SubscriberFactory subscriberFactory;
+ private int componentSubscriberIndex;
public ConfigRetriever(Set<ConfigKey<? extends ConfigInstance>> bootstrapKeys, SubscriberFactory subscriberFactory) {
this.bootstrapKeys = bootstrapKeys;
@@ -41,8 +42,8 @@ public final class ConfigRetriever {
if (bootstrapKeys.isEmpty()) {
throw new IllegalArgumentException("Bootstrap key set is empty");
}
- this.bootstrapSubscriber = this.subscriberFactory.getSubscriber(bootstrapKeys);
- this.componentSubscriber = this.subscriberFactory.getSubscriber(componentSubscriberKeys);
+ this.bootstrapSubscriber = this.subscriberFactory.getSubscriber(bootstrapKeys, "bootstrap");
+ this.componentSubscriber = this.subscriberFactory.getSubscriber(componentSubscriberKeys, "component_" + ++componentSubscriberIndex);
}
public ConfigSnapshot getConfigs(Set<ConfigKey<? extends ConfigInstance>> componentConfigKeys,
@@ -133,7 +134,7 @@ public final class ConfigRetriever {
componentSubscriberKeys = keys;
try {
log.log(FINE, () -> "Setting up new component subscriber for keys: " + keys);
- componentSubscriber = subscriberFactory.getSubscriber(keys);
+ componentSubscriber = subscriberFactory.getSubscriber(keys, "component_" + ++componentSubscriberIndex);
} catch (Throwable e) {
log.log(Level.WARNING, "Failed setting up subscriptions for component configs: " + e.getMessage());
log.log(Level.WARNING, "Config keys: " + keys);
diff --git a/container-core/src/main/java/com/yahoo/container/di/config/SubscriberFactory.java b/container-core/src/main/java/com/yahoo/container/di/config/SubscriberFactory.java
index 1bfd4344b90..f11f44413c7 100644
--- a/container-core/src/main/java/com/yahoo/container/di/config/SubscriberFactory.java
+++ b/container-core/src/main/java/com/yahoo/container/di/config/SubscriberFactory.java
@@ -14,7 +14,7 @@ import java.util.Set;
@ProvidedBy(CloudSubscriberFactory.Provider.class)
public interface SubscriberFactory {
- Subscriber getSubscriber(Set<? extends ConfigKey<?>> configKeys);
+ Subscriber getSubscriber(Set<? extends ConfigKey<?>> configKeys, String name);
void reloadActiveSubscribers(long generation);
}
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 219616500c8..099df79cd9b 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
@@ -212,7 +212,8 @@ public final class ConfiguredApplication implements Application {
}
private <T extends ConfigInstance> T getConfig(Class<T> configClass, boolean isInitializing) {
- Subscriber subscriber = subscriberFactory.getSubscriber(Collections.singleton(new ConfigKey<>(configClass, configId)));
+ Subscriber subscriber = subscriberFactory.getSubscriber(Collections.singleton(new ConfigKey<>(configClass, configId)),
+ configClass.getName());
try {
subscriber.waitNextGeneration(isInitializing);
return configClass.cast(first(subscriber.config().values()));
@@ -222,7 +223,8 @@ public final class ConfiguredApplication implements Application {
}
private void watchPortChange() {
- Subscriber subscriber = subscriberFactory.getSubscriber(Collections.singleton(new ConfigKey<>(QrConfig.class, configId)));
+ Subscriber subscriber = subscriberFactory.getSubscriber(Collections.singleton(new ConfigKey<>(QrConfig.class, configId)),
+ "portWatcher");
try {
while (true) {
subscriber.waitNextGeneration(false);
diff --git a/standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneSubscriberFactory.java b/standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneSubscriberFactory.java
index 8e8367cbe4c..d9db169ec54 100644
--- a/standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneSubscriberFactory.java
+++ b/standalone-container/src/main/java/com/yahoo/container/standalone/StandaloneSubscriberFactory.java
@@ -83,7 +83,7 @@ public class StandaloneSubscriberFactory implements SubscriberFactory {
@Override
@SuppressWarnings("unchecked")
- public Subscriber getSubscriber(Set<? extends ConfigKey<?>> configKeys) {
+ public Subscriber getSubscriber(Set<? extends ConfigKey<?>> configKeys, String name) {
return new StandaloneSubscriber((Set<ConfigKey<ConfigInstance>>) configKeys);
}
diff --git a/standalone-container/src/test/java/com/yahoo/container/standalone/StandaloneSubscriberTest.java b/standalone-container/src/test/java/com/yahoo/container/standalone/StandaloneSubscriberTest.java
index 76e3f9e6ec0..ecfc2caf722 100644
--- a/standalone-container/src/test/java/com/yahoo/container/standalone/StandaloneSubscriberTest.java
+++ b/standalone-container/src/test/java/com/yahoo/container/standalone/StandaloneSubscriberTest.java
@@ -39,7 +39,7 @@ public class StandaloneSubscriberTest {
keys.add(platformBundlesKey);
keys.add(applicationBundlesKey);
keys.add(componentsKey);
- Subscriber subscriber = new StandaloneSubscriberFactory(root).getSubscriber(keys);
+ Subscriber subscriber = new StandaloneSubscriberFactory(root).getSubscriber(keys, "standalone");
Map<ConfigKey<ConfigInstance>, ConfigInstance> config = subscriber.config();
assertEquals(2, config.size());