From e1bf9233cae27e1bacddab2a028719a798fbad09 Mon Sep 17 00:00:00 2001 From: sahvx655-wq Date: Wed, 3 Jun 2026 22:46:27 +0530 Subject: [PATCH] make listDelimiter volatile listDelimiter is mutated through setListDelimiter and read concurrently via getListDelimiter, but was left non-volatile when decoder and interpolator were marked volatile. without it a write has no happens-before with reads on other threads, so stale values can be observed. --- .../main/java/com/netflix/archaius/config/AbstractConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archaius2-core/src/main/java/com/netflix/archaius/config/AbstractConfig.java b/archaius2-core/src/main/java/com/netflix/archaius/config/AbstractConfig.java index ca16fb79..709c301d 100644 --- a/archaius2-core/src/main/java/com/netflix/archaius/config/AbstractConfig.java +++ b/archaius2-core/src/main/java/com/netflix/archaius/config/AbstractConfig.java @@ -53,7 +53,7 @@ public abstract class AbstractConfig implements Config { private final Lookup lookup; private volatile Decoder decoder; private volatile StrInterpolator interpolator; - private String listDelimiter = ","; + private volatile String listDelimiter = ","; private final String name; private static final AtomicInteger idCounter = new AtomicInteger();