Skip to content

Commit

Permalink
Release a reference to threadlocal on shutdown
Browse files Browse the repository at this point in the history
Signed-off-by: jansupol <jan.supol@oracle.com>
  • Loading branch information
jansupol committed Aug 1, 2024
1 parent a85c4d2 commit 07abbce
Showing 1 changed file with 4 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2023 Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2023, 2024 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
Expand Down Expand Up @@ -90,7 +90,7 @@ public final class NonInjectionManager implements InjectionManager {
*/
private class TypedInstances<TYPE> {
private final MultivaluedMap<TYPE, InstanceContext<?>> singletonInstances = new MultivaluedHashMap<>();
private final ThreadLocal<MultivaluedMap<TYPE, InstanceContext<?>>> threadInstances = new ThreadLocal<>();
private ThreadLocal<MultivaluedMap<TYPE, InstanceContext<?>>> threadInstances = new ThreadLocal<>();
private final List<Object> threadPredestroyables = Collections.synchronizedList(new LinkedList<>());

private <T> List<InstanceContext<?>> _getSingletons(TYPE clazz) {
Expand Down Expand Up @@ -195,6 +195,8 @@ <T> T getInstance(TYPE clazz, Annotation[] annotations) {
void dispose() {
singletonInstances.forEach((clazz, instances) -> instances.forEach(instance -> preDestroy(instance.getInstance())));
threadPredestroyables.forEach(NonInjectionManager.this::preDestroy);
/* The java.lang.ThreadLocal$ThreadLocalMap$Entry[] keeps references to this NonInjectionManager */
threadInstances = null;
}
}

Expand Down

0 comments on commit 07abbce

Please sign in to comment.