From 98b7ac3c69f631226e11dbd242025b49a811ea10 Mon Sep 17 00:00:00 2001
From: dugan <dugan@localhost>
Date: Tue, 01 Apr 2008 11:34:19 +0000
Subject: [PATCH] Fix occansional null pointer exception when an ancestor dn hasn't yet been added to dn2id by another work thread. Also simplify buffer flushing at end of the import. Issue 3083.
---
opends/src/server/org/opends/server/backends/jeb/importLDIF/Importer.java | 19 ++++++++-----------
1 files changed, 8 insertions(+), 11 deletions(-)
diff --git a/opends/src/server/org/opends/server/backends/jeb/importLDIF/Importer.java b/opends/src/server/org/opends/server/backends/jeb/importLDIF/Importer.java
index 85b9ebe..f3350ab 100644
--- a/opends/src/server/org/opends/server/backends/jeb/importLDIF/Importer.java
+++ b/opends/src/server/org/opends/server/backends/jeb/importLDIF/Importer.java
@@ -489,7 +489,7 @@
private void abortImport() throws JebException {
//Stop work threads telling them to skip substring flush.
- stopWorkThreads(false, true);
+ stopWorkThreads(false);
timer.cancel();
Message message = ERR_JEB_IMPORT_LDIF_ABORT.get();
throw new JebException(message);
@@ -498,17 +498,13 @@
/**
* Stop work threads.
*
- * @param flushBuffer Flag telling threads that it should do substring flush.
* @param abort <CODE>True</CODE> if stop work threads was called from an
* abort.
* @throws JebException if a Jeb error occurs.
*/
private void
- stopWorkThreads(boolean flushBuffer, boolean abort) throws JebException {
+ stopWorkThreads(boolean abort) throws JebException {
for (WorkThread t : threads) {
- if(!flushBuffer) {
- t.setFlush(false);
- }
t.stopProcessing();
}
// Wait for each thread to stop.
@@ -537,13 +533,14 @@
Message msg;
//Drain the work queue.
drainWorkQueue();
- //Prepare the buffer managers to flush.
- for(DNContext context : importMap.values()) {
- context.getBufferManager().prepareFlush();
- }
pTask.setPause(true);
long startTime = System.currentTimeMillis();
- stopWorkThreads(true, false);
+ stopWorkThreads(true);
+ //Flush the buffer managers.
+ for(DNContext context : importMap.values()) {
+ context.getBufferManager().prepareFlush();
+ context.getBufferManager().flushAll();
+ }
long finishTime = System.currentTimeMillis();
long flushTime = (finishTime - startTime) / 1000;
msg = NOTE_JEB_IMPORT_LDIF_BUFFER_FLUSH_COMPLETED.get(flushTime);
--
Gitblit v1.10.0