mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Matthew Swift
10.42.2013 ba0fd6f7b8279e3dd09ca94df123be4e319b4f58
Fix OPENDJ-1248: Unexpected rejected entries during import-ldif

* ensure that temporary enviroment is always closed.
1 files modified
34 ■■■■ changed files
opends/src/server/org/opends/server/backends/jeb/importLDIF/Importer.java 34 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/backends/jeb/importLDIF/Importer.java
@@ -901,6 +901,9 @@
      InterruptedException, ExecutionException
  {
    this.rootContainer = rootContainer;
    DiskSpaceMonitor tmpMonitor = null;
    DiskSpaceMonitor dbMonitor = null;
    try {
    try
    {
      reader = new LDIFReader(importConfiguration, rootContainer);
@@ -911,7 +914,7 @@
      throw new InitializationException(message, ioe);
    }
    DiskSpaceMonitor tmpMonitor =
      tmpMonitor =
        new DiskSpaceMonitor(backendConfiguration.getBackendId()
            + " backend import tmp directory", tempDir, backendConfiguration
            .getDiskLowThreshold(),
@@ -923,7 +926,7 @@
        getFileForPath(backendConfiguration.getDBDirectory());
    File backendDirectory =
        new File(parentDirectory, backendConfiguration.getBackendId());
    DiskSpaceMonitor dbMonitor =
      dbMonitor =
        new DiskSpaceMonitor(backendConfiguration.getBackendId()
            + " backend import DB directory", backendDirectory,
            backendConfiguration.getDiskLowThreshold(), backendConfiguration
@@ -931,8 +934,6 @@
    dbMonitor.initializeMonitorProvider(null);
    DirectoryServer.registerMonitorProvider(dbMonitor);
    try
    {
      Message message =
          NOTE_JEB_IMPORT_STARTING.get(DirectoryServer.getVersionString(),
              BUILD_ID, REVISION_NUMBER);
@@ -978,17 +979,34 @@
              .get(), reader.getEntriesIgnored(), reader.getEntriesRejected(),
              migratedCount, importTime / 1000, rate);
      logError(message);
      return new LDIFImportResult(reader.getEntriesRead(), reader
          .getEntriesRejected(), reader.getEntriesIgnored());
    }
    finally
    {
      reader.close();
      StaticUtils.close(reader);
      if (!skipDNValidation)
      {
        try
        {
          tmpEnv.shutdown();
        }
        catch (Exception ignored)
        {
          // Do nothing.
        }
      }
      if (tmpMonitor != null)
      {
      DirectoryServer.deregisterMonitorProvider(tmpMonitor);
      DirectoryServer.deregisterMonitorProvider(dbMonitor);
      tmpMonitor.finalizeMonitorProvider();
      }
      if (dbMonitor != null)
      {
        DirectoryServer.deregisterMonitorProvider(dbMonitor);
      dbMonitor.finalizeMonitorProvider();
    }
    return new LDIFImportResult(reader.getEntriesRead(), reader
        .getEntriesRejected(), reader.getEntriesIgnored());
    }
  }
  private void recursiveDelete(File dir)