aboutsummaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2018-03-05 12:11:27 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2018-03-05 12:29:47 +0000
commit62255c2bf7a52c493a59d3460477edfff0ab0673 (patch)
tree882422c0c00a1444dd8e37a34a7464daf3ea4dce /config
parent64e625da1dc69990be8a460764e9a07c4ca58af2 (diff)
Update generation, but clear config on bad config.
Diffstat (limited to 'config')
-rw-r--r--config/src/main/java/com/yahoo/config/subscription/impl/JRTConfigSubscription.java14
1 files changed, 12 insertions, 2 deletions
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 9ae3e226d89..3eea87ab5ba 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
@@ -95,7 +95,17 @@ public class JRTConfigSubscription<T extends ConfigInstance> extends ConfigSubsc
}
protected void setNewConfig(JRTClientConfigRequest jrtReq) {
- setConfig(jrtReq.getNewGeneration(), toConfigInstance(jrtReq) );
+ Exception badConfigE = null;
+ T configInstance = null;
+ try {
+ configInstance = toConfigInstance(jrtReq);
+ } catch (IllegalArgumentException e) {
+ badConfigE = e;
+ }
+ setConfig(jrtReq.getNewGeneration(), configInstance);
+ if (badConfigE != null) {
+ throw new IllegalArgumentException("Bad config from jrt", badConfigE);
+ }
}
/**
@@ -106,7 +116,7 @@ public class JRTConfigSubscription<T extends ConfigInstance> extends ConfigSubsc
* @param jrtRequest a config request
* @return an instance of a config class (subclass of ConfigInstance)
*/
- T toConfigInstance(JRTClientConfigRequest jrtRequest) {
+ private T toConfigInstance(JRTClientConfigRequest jrtRequest) {
Payload payload = jrtRequest.getNewPayload();
ConfigPayload configPayload = ConfigPayload.fromUtf8Array(payload.withCompression(CompressionType.UNCOMPRESSED).getData());
T configInstance = configPayload.toInstance(configClass, jrtRequest.getConfigKey().getConfigId());