From 0df071f4aab05eb5aee458d2aafb48c0dc65b309 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Mon, 21 Jan 2008 12:10:39 +0000
Subject: [PATCH] Fix issues 2831 and 1948.

---
 opendj-sdk/opends/src/server/org/opends/server/backends/jeb/AttributeIndexBuilder.java |   50 ++++++++++++++++++++++++--------------------------
 1 files changed, 24 insertions(+), 26 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/AttributeIndexBuilder.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/AttributeIndexBuilder.java
index 82188e9..a30db7a 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/AttributeIndexBuilder.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/AttributeIndexBuilder.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Portions Copyright 2006-2007 Sun Microsystems, Inc.
+ *      Portions Copyright 2006-2008 Sun Microsystems, Inc.
  */
 package org.opends.server.backends.jeb;
 
@@ -56,29 +56,29 @@
 public class AttributeIndexBuilder implements IndexBuilder
 {
   /**
-   * The import context.
+   * The directory in which temporary merge files are held.
    */
-  private ImportContext importContext;
+  private final File tempDir;
 
   /**
    * The index database.
    */
-  private Index index;
+  private final Index index;
 
   /**
    * The indexer to generate the index keys.
    */
-  private Indexer indexer;
+  private final Indexer indexer;
 
   /**
    * The write buffer.
    */
-  ArrayList<IndexMod> buffer;
+  private ArrayList<IndexMod> buffer;
 
   /**
    * The write buffer size.
    */
-  private int bufferSize;
+  private final int bufferSize;
 
   /**
    * Current output file number.
@@ -86,31 +86,28 @@
   private int fileNumber = 0;
 
   /**
-   * The index entry limit.
-   */
-  private int entryLimit;
-
-  /**
    * A unique prefix for temporary files to prevent conflicts.
    */
-  private String fileNamePrefix;
+  private final String fileNamePrefix;
 
   /**
    * Indicates whether we are replacing existing data or not.
    */
-  private boolean replaceExisting = false;
+  private final boolean replaceExisting;
 
 
-  private ByteArrayOutputStream addBytesStream = new ByteArrayOutputStream();
-  private ByteArrayOutputStream delBytesStream = new ByteArrayOutputStream();
+  private final ByteArrayOutputStream addBytesStream =
+    new ByteArrayOutputStream();
+  private final ByteArrayOutputStream delBytesStream =
+    new ByteArrayOutputStream();
 
-  private DataOutputStream addBytesDataStream;
-  private DataOutputStream delBytesDataStream;
+  private final DataOutputStream addBytesDataStream;
+  private final DataOutputStream delBytesDataStream;
 
   /**
    * A file name filter to identify temporary files we have written.
    */
-  private FilenameFilter filter = new FilenameFilter()
+  private final FilenameFilter filter = new FilenameFilter()
   {
     public boolean accept(File d, String name)
     {
@@ -129,10 +126,13 @@
   public AttributeIndexBuilder(ImportContext importContext,
                       Index index, int entryLimit, long bufferSize)
   {
-    this.importContext = importContext;
+    File parentDir = getFileForPath(importContext.getConfig()
+        .getImportTempDirectory());
+    this.tempDir = new File(parentDir,
+        importContext.getConfig().getBackendId());
+
     this.index = index;
     this.indexer = index.indexer;
-    this.entryLimit = entryLimit;
     this.bufferSize = (int)bufferSize/100;
     long tid = Thread.currentThread().getId();
     fileNamePrefix = index.getName() + "_" + tid + "_";
@@ -149,8 +149,6 @@
   public void startProcessing()
   {
     // Clean up any work files left over from a previous run.
-    File tempDir = getFileForPath(
-        importContext.getConfig().getImportTempDirectory());
     File[] files = tempDir.listFiles(filter);
     if (files != null)
     {
@@ -225,6 +223,8 @@
     return index.getEntryLimitExceededCount();
   }
 
+
+
   /**
    * Record the insertion of an entry ID.
    * @param key The index key.
@@ -299,9 +299,7 @@
     // Start a new file.
     fileNumber++;
     String fileName = fileNamePrefix + String.valueOf(fileNumber);
-    File file = new File(getFileForPath(
-        importContext.getConfig().getImportTempDirectory()),
-                         fileName);
+    File file = new File(tempDir, fileName);
     BufferedOutputStream bufferedStream =
          new BufferedOutputStream(new FileOutputStream(file));
     DataOutputStream dataStream = new DataOutputStream(bufferedStream);

--
Gitblit v1.10.0