summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2022-06-13 16:09:33 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2022-06-13 16:09:33 +0200
commitcf6dda04cac4d97b37147fe600861870993c4dd0 (patch)
tree103a8bfc90e59f7623736286984383849522ba7b /container-search
parent2f10d04c342447b37df56fe3cb8f278ad1e370df (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.java25
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;