aboutsummaryrefslogtreecommitdiffstats
path: root/container-core
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2021-10-08 20:17:42 +0200
committergjoranv <gv@verizonmedia.com>2021-10-08 20:53:41 +0200
commit9f38bbb802e95bea4c646388b6ce0dc202314358 (patch)
treee514bfa633a6f83250b392f54d18d02fbcbcb72a /container-core
parentbe5fc1c7a88efc0aaad2f945acaa79a1f4206b54 (diff)
Improve debugging of CloudSubscriber by adding a name.
Diffstat (limited to 'container-core')
-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
4 files changed, 15 insertions, 14 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);
}