From a20db7c8e8e630a9efc5f34cd2562c114bb7def6 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Tue, 15 Sep 2026 15:49:43 -0400 Subject: [PATCH 1/4] simplify decoder pool --- .../java/org/jlab/io/clara/Clas12Writer.java | 2 -- .../jlab/detector/decode/CLASDecoderPool.java | 19 ++++--------------- .../org/jlab/clas/reco/DecoderEngine.java | 4 ++-- 3 files changed, 6 insertions(+), 19 deletions(-) diff --git a/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Writer.java b/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Writer.java index f4420dfaee..dabcdb132c 100644 --- a/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Writer.java +++ b/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Writer.java @@ -3,8 +3,6 @@ import java.io.File; import java.nio.file.Path; import java.util.List; -import java.util.TreeMap; -import java.util.TreeSet; import org.jlab.clara.std.services.EventWriterException; import org.jlab.detector.calib.utils.ConstantsManager; import org.jlab.detector.helicity.HelicitySequenceDelayed; diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoderPool.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoderPool.java index 80430583ee..370a15d156 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoderPool.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoderPool.java @@ -6,16 +6,14 @@ * * @author baltzell */ -public class CLASDecoderPool { +public class CLASDecoderPool extends ConcurrentLinkedQueue { - ConcurrentLinkedQueue pool; - int sharedConstantsManagers = 64; public CLASDecoderPool(int size, String variation, String timestamp) { - pool = new ConcurrentLinkedQueue<>(); - + super(); + CLASDecoder d0 = null; for (int i=0; i Date: Wed, 16 Sep 2026 23:08:26 -0400 Subject: [PATCH 2/4] add a singleton --- .../java/org/jlab/detector/decode/CLASDecoderPool.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoderPool.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoderPool.java index 370a15d156..c92d9e5e1d 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoderPool.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoderPool.java @@ -31,4 +31,12 @@ public CLASDecoderPool(int size, String variation, String timestamp) { add(d); } } + + static CLASDecoderPool instance = null; + + public static CLASDecoderPool getInstance() { + if (instance == null) + instance = new CLASDecoderPool(64,"default",null); + return instance; + } } \ No newline at end of file From 44e7ecdce4bba97ec6d2985d61d4d607f7778ff7 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Wed, 16 Sep 2026 23:10:35 -0400 Subject: [PATCH 3/4] fix thread-safety --- .../src/main/java/org/jlab/detector/decode/CLASDecoderPool.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoderPool.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoderPool.java index c92d9e5e1d..eb366e218c 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoderPool.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoderPool.java @@ -32,7 +32,7 @@ public CLASDecoderPool(int size, String variation, String timestamp) { } } - static CLASDecoderPool instance = null; + volatile static CLASDecoderPool instance = null; public static CLASDecoderPool getInstance() { if (instance == null) From ef7acc2177120c53ce70a92ab9bfee4bf5377ed6 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Thu, 17 Sep 2026 15:14:29 -0400 Subject: [PATCH 4/4] requires synchronized --- .../src/main/java/org/jlab/detector/decode/CLASDecoderPool.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoderPool.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoderPool.java index eb366e218c..8acd795fa4 100644 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoderPool.java +++ b/common-tools/clas-detector/src/main/java/org/jlab/detector/decode/CLASDecoderPool.java @@ -34,7 +34,7 @@ public CLASDecoderPool(int size, String variation, String timestamp) { volatile static CLASDecoderPool instance = null; - public static CLASDecoderPool getInstance() { + public static synchronized CLASDecoderPool getInstance() { if (instance == null) instance = new CLASDecoderPool(64,"default",null); return instance;