The shutdown method releases - ThreadLocal held by NLS - GlobalBundleCache used by NLS - Executor held by WorkQueue Bug: 437855 Bug: 550529 Change-Id: Icfdccd63668ca90c730ee47a52a17dbd58695ada Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>tags/v5.8.0.202006091008-r
@@ -18,6 +18,8 @@ import java.io.IOException; | |||
import org.eclipse.jgit.lib.Repository; | |||
import org.eclipse.jgit.lib.RepositoryBuilder; | |||
import org.eclipse.jgit.lib.RepositoryCache; | |||
import org.eclipse.jgit.lib.internal.WorkQueue; | |||
import org.eclipse.jgit.nls.NLS; | |||
import org.eclipse.jgit.util.FS; | |||
/** | |||
@@ -170,6 +172,15 @@ public class Git implements AutoCloseable { | |||
return new InitCommand(); | |||
} | |||
/** | |||
* Shutdown JGit and release resources it holds like NLS and thread pools | |||
* @since 5.8 | |||
*/ | |||
public static void shutdown() { | |||
WorkQueue.getExecutor().shutdownNow(); | |||
NLS.clear(); | |||
} | |||
/** | |||
* Construct a new {@link org.eclipse.jgit.api.Git} object which can | |||
* interact with the specified git repository. |
@@ -70,4 +70,8 @@ class GlobalBundleCache { | |||
throw new Error(e); | |||
} | |||
} | |||
static void clear() { | |||
cachedBundles.clear(); | |||
} | |||
} |
@@ -100,6 +100,15 @@ public class NLS { | |||
return b.get(type); | |||
} | |||
/** | |||
* Release resources held by NLS | |||
* @since 5.8 | |||
*/ | |||
public static void clear() { | |||
local.remove(); | |||
GlobalBundleCache.clear(); | |||
} | |||
private final Locale locale; | |||
private final ConcurrentHashMap<Class, TranslationBundle> map = new ConcurrentHashMap<>(); | |||