From 5aca3171444ee4ad8ecf62343726df4720fb7cb0 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Tue, 05 May 2015 12:11:12 +0000
Subject: [PATCH] OPENDJ-1994 Setup with persistit backend containing automatically generated data hangs
---
opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java | 15 ++++++++++++++-
1 files changed, 14 insertions(+), 1 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java
index 1b0c08f..c1e9d80 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/persistit/PersistItStorage.java
@@ -46,6 +46,8 @@
import java.util.ListIterator;
import java.util.Map;
import java.util.NoSuchElementException;
+import java.util.Queue;
+import java.util.concurrent.ConcurrentLinkedDeque;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.slf4j.LocalizedLogger;
@@ -247,18 +249,29 @@
private final class ImporterImpl implements Importer
{
private final Map<TreeName, Tree> trees = new HashMap<TreeName, Tree>();
+ private final Queue<Map<TreeName, Exchange>> allExchanges = new ConcurrentLinkedDeque<>();
private final ThreadLocal<Map<TreeName, Exchange>> exchanges = new ThreadLocal<Map<TreeName, Exchange>>()
{
@Override
protected Map<TreeName, Exchange> initialValue()
{
- return new HashMap<TreeName, Exchange>();
+ final Map<TreeName, Exchange> value = new HashMap<>();
+ allExchanges.add(value);
+ return value;
}
};
@Override
public void close()
{
+ for (Map<TreeName, Exchange> map : allExchanges)
+ {
+ for (Exchange exchange : map.values())
+ {
+ db.releaseExchange(exchange);
+ }
+ map.clear();
+ }
PersistItStorage.this.close();
}
--
Gitblit v1.10.0