From 9c2a8a7d775af41b6669dca1ca35b1f49b61f5b7 Mon Sep 17 00:00:00 2001 From: JarrodCTaylor Date: Tue, 3 Feb 2026 14:21:09 -0600 Subject: [PATCH 1/2] Remove cache from WriterFactory The handlerCache in WriterFactory provided no benefit. buildWriteHandlerMap() always created a new WriteHandlerMap on return, regardless of cache hit or miss. This removes the cache and its synchronized block, eliminating unnecessary contention overhead. --- .../com/cognitect/transit/impl/WriterFactory.java | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/main/java/com/cognitect/transit/impl/WriterFactory.java b/src/main/java/com/cognitect/transit/impl/WriterFactory.java index 1384b80..74e908a 100644 --- a/src/main/java/com/cognitect/transit/impl/WriterFactory.java +++ b/src/main/java/com/cognitect/transit/impl/WriterFactory.java @@ -17,21 +17,8 @@ public class WriterFactory { - private static final Map>, WriteHandlerMap> handlerCache = new Cache>, WriteHandlerMap>(); - private static WriteHandlerMap buildWriteHandlerMap(Map> customHandlers) { - if (customHandlers instanceof WriteHandlerMap) - return new WriteHandlerMap(customHandlers); - - WriteHandlerMap writeHandlerMap; - synchronized (handlerCache) { - writeHandlerMap = handlerCache.get(customHandlers); - if (writeHandlerMap == null) { - writeHandlerMap = new WriteHandlerMap(customHandlers); - handlerCache.put(customHandlers, writeHandlerMap); - } - } - return new WriteHandlerMap(writeHandlerMap); + return new WriteHandlerMap(customHandlers); } private static WriteHandlerMap verboseHandlerMap(Map> customHandlers) { From d85f75d50fdc4c55500044866c52518b452be2d7 Mon Sep 17 00:00:00 2001 From: JarrodCTaylor Date: Tue, 3 Feb 2026 15:15:13 -0600 Subject: [PATCH 2/2] Remove cache from ReaderFactory and delete Cache.java The handlerCache in ReaderFactory used a synchronized block that caused contention. The cache benefit was outweighed by the synchronization overhead. With this change, Cache.java is no longer used and has been removed. --- .../com/cognitect/transit/impl/Cache.java | 19 ------------------- .../cognitect/transit/impl/ReaderFactory.java | 12 +----------- 2 files changed, 1 insertion(+), 30 deletions(-) delete mode 100644 src/main/java/com/cognitect/transit/impl/Cache.java diff --git a/src/main/java/com/cognitect/transit/impl/Cache.java b/src/main/java/com/cognitect/transit/impl/Cache.java deleted file mode 100644 index e9736f7..0000000 --- a/src/main/java/com/cognitect/transit/impl/Cache.java +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (c) Cognitect, Inc. -// All rights reserved. - -package com.cognitect.transit.impl; - -import java.util.LinkedHashMap; -import java.util.Map; - -public class Cache extends LinkedHashMap { - - public Cache() { - super(10); - } - - @Override - protected boolean removeEldestEntry(Map.Entry eldest) { - return size() > 10; - } -} diff --git a/src/main/java/com/cognitect/transit/impl/ReaderFactory.java b/src/main/java/com/cognitect/transit/impl/ReaderFactory.java index 3d8f828..938000d 100644 --- a/src/main/java/com/cognitect/transit/impl/ReaderFactory.java +++ b/src/main/java/com/cognitect/transit/impl/ReaderFactory.java @@ -15,8 +15,6 @@ public class ReaderFactory { - private static Map>, ReadHandlerMap> handlerCache = new Cache>, ReadHandlerMap>(); - public static Map> defaultHandlers() { Map> handlers = new HashMap>(); @@ -58,15 +56,7 @@ private static Map> handlerMap(Map