aboutsummaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorHarald Musum <musum@yahooinc.com>2021-11-29 22:16:15 +0100
committerHarald Musum <musum@yahooinc.com>2021-11-29 22:16:15 +0100
commitca2dc28d3cbf24917d19721469ce596f4d9cf159 (patch)
tree45d64feedd5fd6179f4b9425b76d827a0b3b2c29 /config
parent2073de457281adee18c5c310644bb4169bd3af7a (diff)
Simplify ConfigSubscription
COnfigSubscriber isn't needed for all subscription (used only in equals method, whoch is only used by tests)
Diffstat (limited to 'config')
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/ConfigSetSubscription.java5
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/ConfigSubscription.java44
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/FileConfigSubscription.java5
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigSubscription.java4
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/JarConfigSubscription.java5
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/RawConfigSubscription.java7
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/ConfigSetSubscriptionTest.java9
-rw-r--r--config/src/test/java/com/yahoo/config/subscription/impl/FileConfigSubscriptionTest.java11
8 files changed, 35 insertions, 55 deletions
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSetSubscription.java b/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSetSubscription.java
index be71f230934..85bb1cd4ca7 100644
--- a/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSetSubscription.java
+++ b/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSetSubscription.java
@@ -4,7 +4,6 @@ package com.yahoo.config.subscription.impl;
import com.yahoo.config.ConfigInstance;
import com.yahoo.config.subscription.ConfigSet;
import com.yahoo.config.subscription.ConfigSource;
-import com.yahoo.config.subscription.ConfigSubscriber;
import com.yahoo.vespa.config.ConfigKey;
import java.lang.reflect.Constructor;
@@ -19,8 +18,8 @@ public class ConfigSetSubscription<T extends ConfigInstance> extends ConfigSubsc
private final ConfigSet set;
private final ConfigKey<T> subKey;
- ConfigSetSubscription(ConfigKey<T> key, ConfigSubscriber subscriber, ConfigSource cset) {
- super(key, subscriber);
+ ConfigSetSubscription(ConfigKey<T> key, ConfigSource cset) {
+ super(key);
if (!(cset instanceof ConfigSet)) throw new IllegalArgumentException("Source is not a ConfigSet: " + cset);
this.set = (ConfigSet) cset;
subKey = new ConfigKey<>(configClass, key.getConfigId());
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSubscription.java b/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSubscription.java
index d107d1e30b5..fd8398afdfc 100644
--- a/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSubscription.java
+++ b/config/src/main/java/com/yahoo/config/subscription/impl/ConfigSubscription.java
@@ -31,7 +31,6 @@ import static com.yahoo.vespa.config.PayloadChecksum.Type.MD5;
public abstract class ConfigSubscription<T extends ConfigInstance> {
protected static final Logger log = Logger.getLogger(ConfigSubscription.class.getName());
- protected final ConfigSubscriber subscriber;
private final AtomicReference<ConfigState<T>> config = new AtomicReference<>();
protected final ConfigKey<T> key;
protected final Class<T> configClass;
@@ -100,12 +99,10 @@ public abstract class ConfigSubscription<T extends ConfigInstance> {
* Initializes one subscription
*
* @param key a {@link ConfigKey}
- * @param subscriber the subscriber for this subscription
*/
- ConfigSubscription(ConfigKey<T> key, ConfigSubscriber subscriber) {
+ ConfigSubscription(ConfigKey<T> key) {
this.key = key;
this.configClass = key.getConfigClass();
- this.subscriber = subscriber;
this.config.set(new ConfigState<>());
getConfigState().getChecksums().removeChecksumsOfType(MD5); // TODO: Temporary until we don't use md5 anymore
}
@@ -120,17 +117,16 @@ public abstract class ConfigSubscription<T extends ConfigInstance> {
public static <T extends ConfigInstance> ConfigSubscription<T> get(ConfigKey<T> key, ConfigSubscriber subscriber,
ConfigSource source, TimingValues timingValues) {
String configId = key.getConfigId();
- if (source instanceof RawSource || configId.startsWith("raw:")) return getRawSub(key, subscriber, source);
- if (source instanceof FileSource || configId.startsWith("file:")) return getFileSub(key, subscriber, source);
- if (source instanceof DirSource || configId.startsWith("dir:")) return getDirFileSub(key, subscriber, source);
- if (source instanceof JarSource || configId.startsWith("jar:")) return getJarSub(key, subscriber, source);
- if (source instanceof ConfigSet) return new ConfigSetSubscription<>(key, subscriber, source);
+ if (source instanceof RawSource || configId.startsWith("raw:")) return getRawSub(key, source);
+ if (source instanceof FileSource || configId.startsWith("file:")) return getFileSub(key, source);
+ if (source instanceof DirSource || configId.startsWith("dir:")) return getDirFileSub(key, source);
+ if (source instanceof JarSource || configId.startsWith("jar:")) return getJarSub(key, source);
+ if (source instanceof ConfigSet) return new ConfigSetSubscription<>(key, source);
if (source instanceof ConfigSourceSet) return new JRTConfigSubscription<>(key, subscriber, source, timingValues);
throw new IllegalArgumentException("Unknown source type: " + source);
}
- private static <T extends ConfigInstance> JarConfigSubscription<T> getJarSub(
- ConfigKey<T> key, ConfigSubscriber subscriber, ConfigSource source) {
+ private static <T extends ConfigInstance> JarConfigSubscription<T> getJarSub(ConfigKey<T> key, ConfigSource source) {
String jarName;
String path = "config/";
if (source instanceof JarSource) {
@@ -141,29 +137,24 @@ public abstract class ConfigSubscription<T extends ConfigInstance> {
jarName = key.getConfigId().replace("jar:", "").replaceFirst("\\!/.*", "");
if (key.getConfigId().contains("!/")) path = key.getConfigId().replaceFirst(".*\\!/", "");
}
- return new JarConfigSubscription<>(key, subscriber, jarName, path);
+ return new JarConfigSubscription<>(key, jarName, path);
}
- private static <T extends ConfigInstance> ConfigSubscription<T> getFileSub(
- ConfigKey<T> key, ConfigSubscriber subscriber, ConfigSource source) {
+ private static <T extends ConfigInstance> ConfigSubscription<T> getFileSub(ConfigKey<T> key, ConfigSource source) {
File file = ((source instanceof FileSource))
? ((FileSource) source).getFile()
: new File(key.getConfigId().replace("file:", ""));
- return new FileConfigSubscription<>(key, subscriber, file);
+ return new FileConfigSubscription<>(key, file);
}
- private static <T extends ConfigInstance> ConfigSubscription<T> getRawSub(ConfigKey<T> key,
- ConfigSubscriber subscriber,
- ConfigSource source) {
+ private static <T extends ConfigInstance> ConfigSubscription<T> getRawSub(ConfigKey<T> key, ConfigSource source) {
String payload = ((source instanceof RawSource)
? ((RawSource) source).payload
: key.getConfigId().replace("raw:", ""));
- return new RawConfigSubscription<>(key, subscriber, payload);
+ return new RawConfigSubscription<>(key, payload);
}
- private static <T extends ConfigInstance> ConfigSubscription<T> getDirFileSub(ConfigKey<T> key,
- ConfigSubscriber subscriber,
- ConfigSource source) {
+ private static <T extends ConfigInstance> ConfigSubscription<T> getDirFileSub(ConfigKey<T> key, ConfigSource source) {
String dir = key.getConfigId().replace("dir:", "");
if (source instanceof DirSource) {
dir = ((DirSource) source).getDir().toString();
@@ -174,7 +165,7 @@ public abstract class ConfigSubscription<T extends ConfigInstance> {
if (!file.exists()) {
throw new IllegalArgumentException("Could not find a config file for '" + key.getName() + "' in '" + dir + "'");
}
- return new FileConfigSubscription<>(key, subscriber, file);
+ return new FileConfigSubscription<>(key, file);
}
@SuppressWarnings("unchecked")
@@ -182,8 +173,7 @@ public abstract class ConfigSubscription<T extends ConfigInstance> {
public boolean equals(Object o) {
if (o instanceof ConfigSubscription) {
ConfigSubscription<T> other = (ConfigSubscription<T>) o;
- return key.equals(other.key) &&
- subscriber.equals(other.subscriber);
+ return key.equals(other.key);
}
return false;
}
@@ -331,10 +321,6 @@ public abstract class ConfigSubscription<T extends ConfigInstance> {
public boolean isClosed() { return state == State.CLOSED; }
- State getState() {
- return state;
- }
-
/**
* Returns the file name corresponding to the given key's defName.
*
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/FileConfigSubscription.java b/config/src/main/java/com/yahoo/config/subscription/impl/FileConfigSubscription.java
index 3282bc81e55..5311b91c31f 100644
--- a/config/src/main/java/com/yahoo/config/subscription/impl/FileConfigSubscription.java
+++ b/config/src/main/java/com/yahoo/config/subscription/impl/FileConfigSubscription.java
@@ -5,7 +5,6 @@ import com.yahoo.config.ConfigInstance;
import com.yahoo.config.ConfigurationRuntimeException;
import com.yahoo.config.subscription.CfgConfigPayloadBuilder;
import com.yahoo.config.subscription.ConfigInterruptedException;
-import com.yahoo.config.subscription.ConfigSubscriber;
import com.yahoo.io.IOUtils;
import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.ConfigPayload;
@@ -26,8 +25,8 @@ public class FileConfigSubscription<T extends ConfigInstance> extends ConfigSubs
final File file;
long ts;
- FileConfigSubscription(ConfigKey<T> key, ConfigSubscriber subscriber, File f) {
- super(key, subscriber);
+ FileConfigSubscription(ConfigKey<T> key, File f) {
+ super(key);
setGeneration(0L);
file = f;
if (!file.exists() && !file.isFile())
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigSubscription.java b/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigSubscription.java
index c6ea79ddbcd..f0602e8079d 100644
--- a/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigSubscription.java
+++ b/config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigSubscription.java
@@ -34,6 +34,7 @@ public class JRTConfigSubscription<T extends ConfigInstance> extends ConfigSubsc
private JRTConfigRequester requester;
private final TimingValues timingValues;
+ private final ConfigSubscriber subscriber;
// Last time we got an OK JRT callback
private Instant lastOK = Instant.MIN;
@@ -46,8 +47,9 @@ public class JRTConfigSubscription<T extends ConfigInstance> extends ConfigSubsc
private ConfigSourceSet sources;
public JRTConfigSubscription(ConfigKey<T> key, ConfigSubscriber subscriber, ConfigSource source, TimingValues timingValues) {
- super(key, subscriber);
+ super(key);
this.timingValues = timingValues;
+ this.subscriber = subscriber;
if (source instanceof ConfigSourceSet) {
this.sources = (ConfigSourceSet) source;
}
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/JarConfigSubscription.java b/config/src/main/java/com/yahoo/config/subscription/impl/JarConfigSubscription.java
index 095ebc59c11..a75e1d0b976 100644
--- a/config/src/main/java/com/yahoo/config/subscription/impl/JarConfigSubscription.java
+++ b/config/src/main/java/com/yahoo/config/subscription/impl/JarConfigSubscription.java
@@ -5,7 +5,6 @@ import com.yahoo.config.ConfigInstance;
import com.yahoo.config.ConfigurationRuntimeException;
import com.yahoo.config.subscription.CfgConfigPayloadBuilder;
import com.yahoo.config.subscription.ConfigInterruptedException;
-import com.yahoo.config.subscription.ConfigSubscriber;
import com.yahoo.io.IOUtils;
import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.ConfigPayload;
@@ -32,8 +31,8 @@ public class JarConfigSubscription<T extends ConfigInstance> extends ConfigSubsc
private ZipEntry zipEntry = null;
// jar:configs/app.jar!/configs/
- JarConfigSubscription(ConfigKey<T> key, ConfigSubscriber subscriber, String jarName, String path) {
- super(key, subscriber);
+ JarConfigSubscription(ConfigKey<T> key, String jarName, String path) {
+ super(key);
this.jarName = jarName;
this.path = path;
}
diff --git a/config/src/main/java/com/yahoo/config/subscription/impl/RawConfigSubscription.java b/config/src/main/java/com/yahoo/config/subscription/impl/RawConfigSubscription.java
index acc1b183bb7..22939c375ae 100644
--- a/config/src/main/java/com/yahoo/config/subscription/impl/RawConfigSubscription.java
+++ b/config/src/main/java/com/yahoo/config/subscription/impl/RawConfigSubscription.java
@@ -4,7 +4,6 @@ package com.yahoo.config.subscription.impl;
import com.yahoo.config.ConfigInstance;
import com.yahoo.config.subscription.CfgConfigPayloadBuilder;
import com.yahoo.config.subscription.ConfigInterruptedException;
-import com.yahoo.config.subscription.ConfigSubscriber;
import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.ConfigPayload;
import com.yahoo.vespa.config.PayloadChecksums;
@@ -23,9 +22,9 @@ public class RawConfigSubscription<T extends ConfigInstance> extends ConfigSubsc
final String inputPayload;
String payload;
- RawConfigSubscription(ConfigKey<T> key, ConfigSubscriber subscriber, String pl) {
- super(key, subscriber);
- this.inputPayload = pl;
+ RawConfigSubscription(ConfigKey<T> key, String payload) {
+ super(key);
+ this.inputPayload = payload;
}
@Override
diff --git a/config/src/test/java/com/yahoo/config/subscription/ConfigSetSubscriptionTest.java b/config/src/test/java/com/yahoo/config/subscription/ConfigSetSubscriptionTest.java
index 0eb51e734c8..0d9b8745888 100644
--- a/config/src/test/java/com/yahoo/config/subscription/ConfigSetSubscriptionTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/ConfigSetSubscriptionTest.java
@@ -1,16 +1,19 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription;
-import static org.junit.Assert.*;
-
+import com.yahoo.config.subscription.impl.ConfigSubscription;
import com.yahoo.foo.AppConfig;
import com.yahoo.foo.SimpletypesConfig;
import com.yahoo.foo.StringConfig;
-import com.yahoo.config.subscription.impl.ConfigSubscription;
import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.TimingValues;
import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
+
public class ConfigSetSubscriptionTest {
@Test
diff --git a/config/src/test/java/com/yahoo/config/subscription/impl/FileConfigSubscriptionTest.java b/config/src/test/java/com/yahoo/config/subscription/impl/FileConfigSubscriptionTest.java
index 3eb532d8f7f..15f39f590aa 100644
--- a/config/src/test/java/com/yahoo/config/subscription/impl/FileConfigSubscriptionTest.java
+++ b/config/src/test/java/com/yahoo/config/subscription/impl/FileConfigSubscriptionTest.java
@@ -1,11 +1,10 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.subscription.impl;
-import com.yahoo.foo.SimpletypesConfig;
-import com.yahoo.foo.TestReferenceConfig;
import com.yahoo.config.subscription.ConfigSubscriber;
import com.yahoo.config.subscription.DirSource;
-import com.yahoo.config.subscription.FileSource;
+import com.yahoo.foo.SimpletypesConfig;
+import com.yahoo.foo.TestReferenceConfig;
import com.yahoo.vespa.config.ConfigKey;
import com.yahoo.vespa.config.TimingValues;
import org.junit.Before;
@@ -43,10 +42,8 @@ public class FileConfigSubscriptionTest {
@Test
public void require_that_new_config_is_detected_in_time() throws IOException, InterruptedException {
writeConfig("intval", "23");
- ConfigSubscriber subscriber = new ConfigSubscriber(new FileSource(TEST_TYPES_FILE));
ConfigSubscription<SimpletypesConfig> sub = new FileConfigSubscription<>(
new ConfigKey<>(SimpletypesConfig.class, ""),
- subscriber,
TEST_TYPES_FILE);
assertTrue(sub.nextConfig(1000));
assertThat(sub.getConfigState().getConfig().intval(), is(23));
@@ -59,10 +56,8 @@ public class FileConfigSubscriptionTest {
@Test
public void require_that_new_config_is_detected_on_reload() throws IOException {
writeConfig("intval", "23");
- ConfigSubscriber subscriber = new ConfigSubscriber(new FileSource(TEST_TYPES_FILE));
ConfigSubscription<SimpletypesConfig> sub = new FileConfigSubscription<>(
new ConfigKey<>(SimpletypesConfig.class, ""),
- subscriber,
TEST_TYPES_FILE);
assertTrue(sub.nextConfig(1000));
assertThat(sub.getConfigState().getConfig().intval(), is(23));
@@ -113,10 +108,8 @@ public class FileConfigSubscriptionTest {
public void require_that_bad_file_throws_exception() throws IOException {
// A little trick to ensure that we can create the subscriber, but that we get an error when reading.
writeConfig("intval", "23");
- ConfigSubscriber subscriber = new ConfigSubscriber(new FileSource(TEST_TYPES_FILE));
ConfigSubscription<SimpletypesConfig> sub = new FileConfigSubscription<>(
new ConfigKey<>(SimpletypesConfig.class, ""),
- subscriber,
TEST_TYPES_FILE);
sub.reload(1);
Files.delete(TEST_TYPES_FILE.toPath()); // delete file so the below statement throws exception