================ Problem #1 ================= Class Name | Shallow Heap | Retained Heap ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | org.jbpm.runtime.manager.impl.factory.InMemorySessionFactory @ 0xb12b9e40 | 24 | 75,730,864 |- class org.jbpm.runtime.manager.impl.factory.InMemorySessionFactory @ 0xb15a6ac0 | 0 | 0 |- environment org.switchyard.component.common.knowledge.config.builder.patch.PatchedRuntimeEnvironmentBuilder$PatchedRuntimeEnvironment @ 0xb124abd0| 72 | 66,968 |- kbase org.drools.core.impl.KnowledgeBaseImpl @ 0xb124c380 | 128 | 16,680 |- sessions java.util.concurrent.ConcurrentHashMap @ 0xb12b9e58 | 64 | 75,730,840 | |- class java.util.concurrent.ConcurrentHashMap @ 0xaeb61520 System Class | 136 | 432 | |- table java.util.concurrent.ConcurrentHashMap$Node[16384] @ 0xb552bf38 | 65,552 | 75,730,776 | | |- class java.util.concurrent.ConcurrentHashMap$Node[] @ 0xaeb611d0 | 0 | 0 | | |- [1] java.util.concurrent.ConcurrentHashMap$Node @ 0xb24c6a80 | 32 | 6,880 | | |- [3] java.util.concurrent.ConcurrentHashMap$Node @ 0xb24c8170 | 32 | 6,872 | | | |- class java.util.concurrent.ConcurrentHashMap$Node @ 0xaeb61238 System Class | 0 | 0 | | | |- key java.lang.Long @ 0xaeea9b60 3 | 24 | 24 | | | |- val org.drools.core.impl.StatefulKnowledgeSessionImpl @ 0xb24c8190 | 152 | 6,840 | | | | |- class org.drools.core.impl.StatefulKnowledgeSessionImpl @ 0xb2469918 | 16 | 192 | | | | |- id java.lang.Long @ 0xaeea9b60 3 | 24 | 24 | | | | |- kBase org.drools.core.impl.KnowledgeBaseImpl @ 0xb124c380 | 128 | 16,680 | | | | |- pctxFactory org.drools.core.common.PhreakPropagationContextFactory @ 0xb1261ef0 | 16 | 16 | | | | |- nodeMemories org.drools.core.common.ConcurrentNodeMemories @ 0xb24c8228 | 24 | 192 | | | | |- initialFactHandle org.drools.core.common.DefaultFactHandle @ 0xb24c85d0 | 80 | 80 | | | | |- defaultEntryPoint org.drools.core.common.NamedEntryPoint @ 0xb24c8620 | 64 | 1,624 | | | | |- handleFactory org.drools.core.reteoo.ReteooFactHandleFactory @ 0xb28a0208 | 24 | 64 | | | | |- globalResolver org.drools.core.base.MapGlobalResolver @ 0xb28a0290 | 24 | 488 | | | | |- ruleRuntimeEventSupport org.drools.core.event.RuleRuntimeEventSupport @ 0xb28a0478 | 16 | 104 | | | | |- ruleEventListenerSupport org.drools.core.event.RuleEventListenerSupport @ 0xb28a04e0 | 16 | 104 | | | | |- agendaEventSupport org.drools.core.event.AgendaEventSupport @ 0xb28a0548 | 16 | 104 | | | | |- kieBaseEventListeners java.util.LinkedList @ 0xb28a05b0 | 32 | 32 | | | | |- agenda org.drools.core.common.DefaultAgenda @ 0xb28a05d0 | 88 | 528 | | | | |- lock java.util.concurrent.locks.ReentrantLock @ 0xb28a07e0 | 16 | 48 | | | | |- propagationIdCounter java.util.concurrent.atomic.AtomicLong @ 0xb28a0810 | 24 | 24 | | | | |- workItemManager org.drools.core.process.instance.impl.DefaultWorkItemManager @ 0xb28a0828 | 32 | 320 | | | | |- timerService org.drools.core.time.impl.JDKTimerService @ 0xb28a0968 | 24 | 112 | | | | |- entryPoints java.util.concurrent.ConcurrentHashMap @ 0xb28a09d8 | 64 | 192 | | | | |- config org.drools.core.SessionConfigurationImpl @ 0xb28a0a98 | 64 | 1,280 | | | | |- environment org.drools.core.impl.EnvironmentImpl @ 0xb28a0ba8 | 24 | 488 | | | | |- opCounter java.util.concurrent.atomic.AtomicLong @ 0xb28a0d90 | 24 | 24 | | | | |- lastIdleTimestamp java.util.concurrent.atomic.AtomicLong @ 0xb28a0da8 | 24 | 24 | | | | |- propagationList org.drools.core.phreak.SynchronizedBypassPropagationList @ 0xb28a0dc0 | 32 | 48 | | | | |- mbeanRegistered java.util.concurrent.atomic.AtomicBoolean @ 0xb28a0df0 | 16 | 16 | | | | '- Total: 25 entries | | | | | '- Total: 3 entries | | | | |- [0] java.util.concurrent.ConcurrentHashMap$Node @ 0xb2525168 | 32 | 6,880 | | |- [2] java.util.concurrent.ConcurrentHashMap$Node @ 0xb289ce00 | 32 | 6,880 | | |- [6] java.util.concurrent.ConcurrentHashMap$Node @ 0xb289e508 | 32 | 6,880 | | |- [7] java.util.concurrent.ConcurrentHashMap$Node @ 0xb289fb88 | 32 | 6,880 | | |- [4] java.util.concurrent.ConcurrentHashMap$Node @ 0xb28a0e00 | 32 | 6,872 | | |- [5] java.util.concurrent.ConcurrentHashMap$Node @ 0xb28a24f8 | 32 | 6,880 | | |- [8] java.util.concurrent.ConcurrentHashMap$Node @ 0xb28a3c58 | 32 | 6,880 | | |- [9] java.util.concurrent.ConcurrentHashMap$Node @ 0xb28a52a0 | 32 | 6,880 | | |- [46] java.util.concurrent.ConcurrentHashMap$Node @ 0xb28b72c8 | 32 | 6,880 | | |- [86] java.util.concurrent.ConcurrentHashMap$Node @ 0xb28c5e38 | 32 | 6,880 | | |- [10] java.util.concurrent.ConcurrentHashMap$Node @ 0xb28e5488 | 32 | 6,880 | | |- [45] java.util.concurrent.ConcurrentHashMap$Node @ 0xb28fb920 | 32 | 6,880 | | |- [85] java.util.concurrent.ConcurrentHashMap$Node @ 0xb28fd5a8 | 32 | 6,880 | | |- [84] java.util.concurrent.ConcurrentHashMap$Node @ 0xb28fecf0 | 32 | 6,880 | | |- [83] java.util.concurrent.ConcurrentHashMap$Node @ 0xb2900408 | 32 | 6,880 | | |- [82] java.util.concurrent.ConcurrentHashMap$Node @ 0xb2901af8 | 32 | 6,880 | | |- [44] java.util.concurrent.ConcurrentHashMap$Node @ 0xb2903028 | 32 | 6,880 | | |- [81] java.util.concurrent.ConcurrentHashMap$Node @ 0xb29051f8 | 32 | 6,880 | | |- [43] java.util.concurrent.ConcurrentHashMap$Node @ 0xb2906728 | 32 | 6,880 | | |- [42] java.util.concurrent.ConcurrentHashMap$Node @ 0xb2907e18 | 32 | 6,880 | | |- [80] java.util.concurrent.ConcurrentHashMap$Node @ 0xb2908928 | 32 | 6,880 | | |- [41] java.util.concurrent.ConcurrentHashMap$Node @ 0xb290b5a8 | 32 | 6,880 | | '- Total: 25 of 11,001 entries; 10,976 more | | | '- Total: 2 entries | | '- Total: 4 entries | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ================= Problem #2 ==================== Class Name | Shallow Heap | Retained Heap -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- java.lang.Thread @ 0xb2379210 http-127.0.0.1:8080-1 Thread | 120 | 32,920 |- class java.lang.Thread @ 0xae921f88 System Class | 40 | 184 |- group java.lang.ThreadGroup @ 0xae802e18 main | 48 | 448 |- contextClassLoader org.jboss.modules.ModuleClassLoader @ 0xaea42d08 | 88 | 542,392 |- inheritedAccessControlContext java.security.AccessControlContext @ 0xb08965c8 | 40 | 72 |- , target org.apache.tomcat.util.net.JIoEndpoint$Worker @ 0xb23791f0 Busy Monitor | 32 | 32 |- java.lang.Thread @ 0xb2379210 http-127.0.0.1:8080-1 Thread | 120 | 32,920 |- name char[21] @ 0xb2379388 http-127.0.0.1:8080-1 | 64 | 64 |- threadLocals java.lang.ThreadLocal$ThreadLocalMap @ 0xb23793c8 | 24 | 32,520 | |- class java.lang.ThreadLocal$ThreadLocalMap @ 0xae922e68 System Class | 8 | 8 | |- table java.lang.ThreadLocal$ThreadLocalMap$Entry[512] @ 0xb2972018 | 2,064 | 32,496 | | |- class java.lang.ThreadLocal$ThreadLocalMap$Entry[] @ 0xaeb63f50 | 0 | 0 | | |- [511] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xb23793e0 | 32 | 32 | | |- [482] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xb2379b88 | 32 | 200 | | |- [470] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xb2379c50 | 32 | 32 | | |- [437] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xb2379c70 | 32 | 32 | | |- [369] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xb241e2f8 | 32 | 104 | | |- [339] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xb241e360 | 32 | 32 | | |- [336] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xb241e380 | 32 | 3,160 | | |- [224] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xb241e3a0 | 32 | 1,256 | | |- [197] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xb241e888 | 32 | 32 | | |- [142] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xb241e8a8 | 32 | 184 | | |- [126] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xb241e8c8 | 32 | 32 | | |- [97] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xb241e8e8 | 32 | 32 | | |- [82] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xb24ac960 | 32 | 1,256 | | |- [71] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xb24ace48 | 32 | 72 | | |- [29] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xb24ace90 | 32 | 32 | | |- [26] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xb24aceb0 | 32 | 376 | | |- [14] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xb24aced0 | 32 | 32 | | |- [284] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xb28c5cf8 | 32 | 32 | | |- [235] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xb28c5d18 | 32 | 32 | | |- [209] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xb28c5d38 | 32 | 32 | | |- [349] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe4ecf1a0 | 32 | 272 | | |- [420] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe50c17e0 | 32 | 272 | | |- [491] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe52b3d28 | 32 | 272 | | |- [50] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe54a66c8 | 32 | 272 | | |- [121] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe5699d18 | 32 | 272 | | |- [192] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe588c250 | 32 | 272 | | |- [263] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe5a7e798 | 32 | 272 | | |- [334] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe5c72850 | 32 | 272 | | |- [405] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe5e64d98 | 32 | 272 | | |- [476] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe6057310 | 32 | 272 | | |- [35] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe6249858 | 32 | 272 | | |- [106] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe643c5f8 | 32 | 272 | | |- [177] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe662eb58 | 32 | 272 | | |- [248] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe68210a0 | 32 | 272 | | |- [319] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe6a135e8 | 32 | 272 | | |- [390] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe6c063d0 | 32 | 272 | | |- [461] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe6df8d70 | 32 | 272 | | |- [20] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe6feb2e8 | 32 | 272 | | |- [91] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe71dd848 | 32 | 272 | | |- [162] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe73d05e0 | 32 | 272 | | |- [233] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe75c2b40 | 32 | 272 | | |- [304] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe77b5088 | 32 | 272 | | |- [375] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe79a75d0 | 32 | 272 | | |- [446] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe7b9a410 | 32 | 272 | | |- [5] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe7d8c960 | 32 | 272 | | |- [76] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe7f7eea8 | 32 | 272 | | |- [147] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe81713f0 | 32 | 272 | | |- [218] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe8363970 | 32 | 272 | | |- [289] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe8555eb8 | 32 | 272 | | |- [360] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe8748888 | 32 | 272 | | |- [431] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe893b768 | 32 | 272 | | |- [502] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe8b2dcb0 | 32 | 272 | | |- [61] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe8d20210 | 32 | 272 | | |- [132] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe8f12758 | 32 | 272 | | |- [203] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe9104d40 | 32 | 272 | | |- [274] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe92f7288 | 32 | 272 | | |- [345] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe94e97d0 | 32 | 272 | | |- [416] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe96dbd20 | 32 | 272 | | |- [487] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe98ceab0 | 32 | 272 | | |- [46] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe9ac1040 | 32 | 272 | | |- [117] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe9cb35a0 | 32 | 272 | | |- [188] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xe9ea5ae8 | 32 | 272 | | |- [259] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xea098d48 | 32 | 272 | | |- [330] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xea28b290 | 32 | 272 | | |- [401] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xea47d7d8 | 32 | 272 | | |- [472] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xea66fd20 | 32 | 272 | | |- [31] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xea862b18 | 32 | 272 | | |- [102] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xeaa55060 | 32 | 272 | | |- [173] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xeac475c0 | 32 | 272 | | |- [244] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xeae39b08 | 32 | 272 | | |- [315] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xeb02c088 | 32 | 272 | | |- [386] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xeb21e5d0 | 32 | 272 | | |- [457] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xeb410b48 | 32 | 272 | | |- [16] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xeb603958 | 32 | 272 | | |- [87] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xeb7f5ea0 | 32 | 272 | | |- [158] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xeb9e8840 | 32 | 272 | | |- [229] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xebbdad88 | 32 | 272 | | |- [300] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xebfa5100 | 32 | 272 | | |- [371] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xec197660 | 32 | 272 | | |- [442] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xec389b98 | 32 | 272 | | |- [1] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xec57c0e0 | 32 | 272 | | |- [72] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xec76e650 | 32 | 272 | | |- [143] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xec960b98 | 32 | 272 | | |- [214] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xecb530e0 | 32 | 272 | | |- [285] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xecd45628 | 32 | 272 | | |- [356] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xecf38450 | 32 | 272 | | |- [427] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xed12a998 | 32 | 272 | | |- [498] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xed31ced0 | 32 | 272 | | |- [57] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xed50f870 | 32 | 272 | | |- [128] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xed702678 | 32 | 272 | | |- [199] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xed8f4bb0 | 32 | 272 | | |- [270] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xedae70f8 | 32 | 272 | | |- [341] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xedcdaf88 | 32 | 272 | | |- [412] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xedecd4d0 | 32 | 272 | | |- [483] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xee0bfa18 | 32 | 272 | | |- [42] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xee2b1f60 | 32 | 272 | | |- [113] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xee4a4d70 | 32 | 272 | | |- [184] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xee6972a8 | 32 | 272 | | |- [255] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xee8897f0 | 32 | 272 | | |- [326] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xeea7bd38 | 32 | 272 | | |- [397] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xeec6eb38 | 32 | 272 | | |- [468] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xeee614d8 | 32 | 272 | | |- [27] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xef053a38 | 32 | 272 | | |- [98] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xef245f80 | 32 | 272 | | |- [169] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xef438510 | 32 | 272 | | |- [240] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xef62aa58 | 32 | 272 | | |- [311] java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xef81cfb8 | 32 | 48 | | | |- class java.lang.ThreadLocal$ThreadLocalMap$Entry @ 0xaeb63fb8 System Class | 0 | 0 | | | |- queue java.lang.ref.ReferenceQueue$Null @ 0xae80b428 | 32 | 48 | | | |- value org.jbpm.runtime.manager.impl.RuntimeEngineImpl @ 0xef81cf10 | 48 | 224 | | | | |- class org.jbpm.runtime.manager.impl.RuntimeEngineImpl @ 0xb2454270 | 0 | 0 | | | | |- manager org.switchyard.component.common.knowledge.runtime.KnowledgePerRequestRuntimeManager @ 0xb124aa18 | 56 | 75,731,000 | | | | |- taskService org.jbpm.services.task.impl.command.CommandBasedTaskService @ 0xb124ad28 | 24 | 424 | | | | |- context org.kie.internal.runtime.manager.context.EmptyContext @ 0xb2379400 | 16 | 16 | | | | |- initializer org.switchyard.component.common.knowledge.runtime.KnowledgePerRequestRuntimeManager$PerRequestInitializer @ 0xef81cf40| 16 | 16 | | | | |- listeners java.util.concurrent.CopyOnWriteArrayList @ 0xef81cf50 | 24 | 160 | | | | |- ksession org.drools.core.impl.StatefulKnowledgeSessionImpl @ 0xef835178 | 152 | 6,880 | | | | '- Total: 7 entries | | | | | |- referent java.lang.ThreadLocal @ 0xef81cfa8 | 16 | 16 | | | '- Total: 4 entries | | | | '- Total: 108 entries | | | '- Total: 2 entries | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ====================== Suggested fix =========================== diff --git a/switchyard/switchyard-component-common-knowledge/src/main/java/org/switchyard/component/common/knowledge/runtime/KnowledgePerRequestRuntimeManager.java b/switchyard/switchyard-component-common-knowledge/src/main/java/org/switchyard/component/common/knowledge/runtime/KnowledgePerRequestRuntimeManager.java index 42768e5..9639177 100644 --- a/switchyard/switchyard-component-common-knowledge/src/main/java/org/switchyard/component/common/knowledge/runtime/KnowledgePerRequestRuntimeManager.java +++ b/switchyard/switchyard-component-common-knowledge/src/main/java/org/switchyard/component/common/knowledge/runtime/KnowledgePerRequestRuntimeManager.java @@ -100,6 +100,11 @@ public class KnowledgePerRequestRuntimeManager extends PerRequestRuntimeManager if (isClosed()) { throw new IllegalStateException("Runtime manager " + identifier + " is already closed"); } + ThreadLocal loc = local.get(getIdentifier()); + if(loc != null) { + // remove the object from the Threadlocal + loc.remove(); + } local.remove(getIdentifier()); try { if (canDestroy(runtime)) { @@ -109,6 +114,8 @@ public class KnowledgePerRequestRuntimeManager extends PerRequestRuntimeManager ((Disposable)runtime).dispose(); } } + // clear InMemorySessionFactory sessions hashmap + getFactory().close(); } catch (Exception e) { // do nothing if (runtime instanceof Disposable) {