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