diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2022-06-13 16:09:33 +0200 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2022-06-13 16:09:33 +0200 |
commit | cf6dda04cac4d97b37147fe600861870993c4dd0 (patch) | |
tree | 103a8bfc90e59f7623736286984383849522ba7b /container-search | |
parent | 2f10d04c342447b37df56fe3cb8f278ad1e370df (diff) |
Ensure mutable fields are visible between threads
Diffstat (limited to 'container-search')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java b/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java index 32f2ab3ad67..250e66ca9fb 100644 --- a/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java +++ b/container-search/src/main/java/com/yahoo/search/rendering/JsonRenderer.java @@ -121,16 +121,16 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> { private static final JsonFactory generatorFactory = createGeneratorFactory(); - private JsonGenerator generator; - private FieldConsumer fieldConsumer; - private Deque<Integer> renderedChildren; + private volatile JsonGenerator generator; + private volatile FieldConsumer fieldConsumer; + private volatile Deque<Integer> renderedChildren; static class FieldConsumerSettings { - boolean debugRendering = false; - boolean jsonDeepMaps = true; - boolean jsonWsets = true; - boolean jsonMapsAll = true; - boolean jsonWsetsAll = false; - boolean tensorShortForm = false; + volatile boolean debugRendering = false; + volatile boolean jsonDeepMaps = true; + volatile boolean jsonWsets = true; + volatile boolean jsonMapsAll = true; + volatile boolean jsonWsetsAll = false; + volatile boolean tensorShortForm = false; boolean convertDeep() { return (jsonDeepMaps || jsonWsets); } void init() { this.debugRendering = false; @@ -155,9 +155,9 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> { this.tensorShortForm = q.getPresentation().getTensorShortForm(); } } - private final FieldConsumerSettings fieldConsumerSettings = new FieldConsumerSettings(); - private LongSupplier timeSource; - private OutputStream stream; + private volatile FieldConsumerSettings fieldConsumerSettings; + private volatile LongSupplier timeSource; + private volatile OutputStream stream; public JsonRenderer() { this(null); @@ -180,6 +180,7 @@ public class JsonRenderer extends AsynchronousSectionedRenderer<Result> { @Override public void init() { super.init(); + fieldConsumerSettings = new FieldConsumerSettings(); fieldConsumerSettings.init(); setGenerator(null, fieldConsumerSettings); renderedChildren = null; |