From 62255c2bf7a52c493a59d3460477edfff0ab0673 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Mon, 5 Mar 2018 12:11:27 +0000 Subject: Update generation, but clear config on bad config. --- .../config/subscription/impl/JRTConfigSubscription.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'config') 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 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 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()); -- cgit v1.2.3