From bffeb78279ded6c57eb050f7237201ad93f8a4c2 Mon Sep 17 00:00:00 2001
From: vharseko <vharseko@3a-systems.ru>
Date: Tue, 18 Jul 2023 16:23:17 +0000
Subject: [PATCH] FIX Setup Issue - Error Creating Base Entry (#286)

---
 opendj-packages/opendj-docker/Dockerfile-alpine                                                  |    3 +
 opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java |   16 ++++----
 opendj-server-legacy/resource/config/java.properties                                             |   14 ++----
 opendj-server-legacy/src/main/java/org/opends/server/tools/ImportLDIF.java                       |    2 
 opendj-server-legacy/src/main/java/org/opends/quicksetup/UserData.java                           |   29 +++-----------
 opendj-doc-generated-ref/pom.xml                                                                 |    1 
 .github/workflows/build.yml                                                                      |    8 +++-
 opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/InstallerHelper.java          |   15 ++++---
 pom.xml                                                                                          |    6 ++
 opendj-packages/opendj-docker/Dockerfile                                                         |    2 
 10 files changed, 44 insertions(+), 52 deletions(-)

diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index ba727b6..0210d2a 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -65,15 +65,19 @@
     - name: Test on Unix
       if: runner.os != 'Windows'
       run:   |
-        opendj-server-legacy/target/package/opendj/setup -h localhost -p 1389 --ldapsPort 1636 --adminConnectorPort 4444 --enableStartTLS --generateSelfSignedCertificate --rootUserDN "cn=Directory Manager" --rootUserPassword password --baseDN dc=example,dc=com --addBaseEntry --cli --acceptLicense --no-prompt
+        export OPENDJ_JAVA_ARGS="-server -Xmx1g"
+        opendj-server-legacy/target/package/opendj/setup -h localhost -p 1389 --ldapsPort 1636 --adminConnectorPort 4444 --enableStartTLS --generateSelfSignedCertificate --rootUserDN "cn=Directory Manager" --rootUserPassword password --baseDN dc=example,dc=com --sampleData 50000 --cli --acceptLicense --no-prompt
         opendj-server-legacy/target/package/opendj/bin/status --bindDN "cn=Directory Manager" --bindPassword password
         opendj-server-legacy/target/package/opendj/bin/ldapsearch --hostname localhost --port 1636 --bindDN "cn=Directory Manager" --bindPassword password --useSsl --trustAll --baseDN "dc=example,dc=com" --searchScope base "(objectClass=*)" 1.1
+        opendj-server-legacy/target/package/opendj/bin/ldapsearch --hostname localhost --port 1636 --bindDN "cn=Directory Manager" --bindPassword password --useSsl --trustAll --baseDN "ou=people,dc=example,dc=com" --searchScope sub "(uid=user.*)" dn | grep ^dn: | wc -l | grep -q 50000
     - name: Test on Windows
       if: runner.os == 'Windows'
       run:   |
-        opendj-server-legacy\target\package\opendj\setup.bat -h localhost -p 1389 --ldapsPort 1636 --adminConnectorPort 4444 --enableStartTLS --generateSelfSignedCertificate --rootUserDN "cn=Directory Manager" --rootUserPassword password --baseDN dc=example,dc=com --addBaseEntry --cli --acceptLicense --no-prompt
+        set OPENDJ_JAVA_ARGS="-server -Xmx1g"
+        opendj-server-legacy\target\package\opendj\setup.bat -h localhost -p 1389 --ldapsPort 1636 --adminConnectorPort 4444 --enableStartTLS --generateSelfSignedCertificate --rootUserDN "cn=Directory Manager" --rootUserPassword password --baseDN dc=example,dc=com --sampleData 50000 --cli --acceptLicense --no-prompt
         opendj-server-legacy\target\package\opendj\bat\status.bat --bindDN "cn=Directory Manager" --bindPassword password
         opendj-server-legacy\target\package\opendj\bat\ldapsearch.bat --hostname localhost --port 1636 --bindDN "cn=Directory Manager" --bindPassword password --useSsl --trustAll --baseDN "dc=example,dc=com" --searchScope base "(objectClass=*)" 1.1
+        opendj-server-legacy\target\package\opendj\bat\ldapsearch.bat --hostname localhost --port 1636 --bindDN "cn=Directory Manager" --bindPassword password --useSsl --trustAll --baseDN "dc=example,dc=com" --searchScope sub "(uid=user.*)" dn | find /c '"dn:"' | findstr "50000"
     - name: Upload artifacts OpenDJ Server
       uses: actions/upload-artifact@v3
       with:
diff --git a/opendj-doc-generated-ref/pom.xml b/opendj-doc-generated-ref/pom.xml
index 64f80bc..4755740 100644
--- a/opendj-doc-generated-ref/pom.xml
+++ b/opendj-doc-generated-ref/pom.xml
@@ -46,6 +46,7 @@
                             <goal>unpack</goal>
                         </goals>
                         <configuration>
+							<ignorePermissions>true</ignorePermissions>
                             <artifactItems>
                                 <artifactItem>
                                     <groupId>org.openidentityplatform.opendj</groupId>
diff --git a/opendj-packages/opendj-docker/Dockerfile b/opendj-packages/opendj-docker/Dockerfile
index 95c0442..22f5699 100644
--- a/opendj-packages/opendj-docker/Dockerfile
+++ b/opendj-packages/opendj-docker/Dockerfile
@@ -14,7 +14,7 @@
     MASTER_SERVER=${MASTER_SERVER} \
     OPENDJ_REPLICATION_TYPE=${OPENDJ_REPLICATION_TYPE} \
     OPENDJ_USER="opendj" \
-    OPENDJ_JAVA_ARGS=""
+    OPENDJ_JAVA_ARGS="-server -XX:+UseContainerSupport"
 
 ARG VERSION=@project_version@
 
diff --git a/opendj-packages/opendj-docker/Dockerfile-alpine b/opendj-packages/opendj-docker/Dockerfile-alpine
index 817c62c..61d8e05 100644
--- a/opendj-packages/opendj-docker/Dockerfile-alpine
+++ b/opendj-packages/opendj-docker/Dockerfile-alpine
@@ -13,7 +13,8 @@
     OPENDJ_SSL_OPTIONS=${SSL_OPTIONS:-"--generateSelfSignedCertificate"} \
     MASTER_SERVER=${MASTER_SERVER} \
     OPENDJ_REPLICATION_TYPE=${OPENDJ_REPLICATION_TYPE} \
-    OPENDJ_USER="opendj"
+    OPENDJ_USER="opendj"\
+    OPENDJ_JAVA_ARGS="-server -XX:+UseContainerSupport"
 
 ARG VERSION=@project_version@
 
diff --git a/opendj-server-legacy/resource/config/java.properties b/opendj-server-legacy/resource/config/java.properties
index 028a617..91f7ed7 100644
--- a/opendj-server-legacy/resource/config/java.properties
+++ b/opendj-server-legacy/resource/config/java.properties
@@ -12,7 +12,7 @@
 #
 # Copyright 2008-2010 Sun Microsystems, Inc.
 # Portions Copyright 2011-2016 ForgeRock AS.
-
+# Portions Copyright 2018- 3A Systems LLC.
 #
 # This file contains the java properties that the different command lines will
 # use when launched.  You can specify the location of the java binaries to be
@@ -42,7 +42,7 @@
 # Examples:
 #
 # Specify to use a particular Java Virtual Machine for the offline import:
-# import-ldif.offline.java-home=/usr/jdk1.7
+# import-ldif.offline.java-home=/usr/jdk1.8
 #
 # Specify to use -client argument when running dsconfig:
 # dsconfig.java-args=-client
@@ -52,15 +52,11 @@
 #
 # Specify to use the java home for all the command-lines that have not
 # an associated property defined:
-# default.java-home=/usr/jdk1.6
+# default.java-home=/usr/jdk1.8
 #
 # Specify to use the -client argument for all the command-lines that have not
 # an associated property defined:
-# default.java-args=-client
+# default.java-args=-server
 
 default.java-home=$JAVA_HOME
-default.java-args=-Xms32m -client
-import-ldif.offline.java-args=-server
-rebuild-index.offline.java-args=-server
-start-ds.java-args=-server
-ldifdiff.java-args=-server
+default.java-args=-server
\ No newline at end of file
diff --git a/opendj-server-legacy/src/main/java/org/opends/quicksetup/UserData.java b/opendj-server-legacy/src/main/java/org/opends/quicksetup/UserData.java
index d558d06..2a5d3ac 100644
--- a/opendj-server-legacy/src/main/java/org/opends/quicksetup/UserData.java
+++ b/opendj-server-legacy/src/main/java/org/opends/quicksetup/UserData.java
@@ -23,6 +23,7 @@
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.Map;
 import java.util.Set;
@@ -866,42 +867,26 @@
 
   private void createDefaultJavaArguments()
   {
-    hmJavaArguments = new HashMap<>();
-    int maxMemoryMb = 256;
-    int minMemoryMb = 128;
-    final int maxMemoryBytes = maxMemoryMb * 1024 * 1024;
-    // If the current max memory is bigger than the max heap we want to set,
-    // assume that the JVM ergonomics are going to be able to allocate enough
-    // memory.
-    long currentMaxMemoryBytes = Runtime.getRuntime().maxMemory();
-    if (currentMaxMemoryBytes > maxMemoryBytes)
-    {
-      maxMemoryMb = -1;
-      minMemoryMb = -1;
-    }
+    hmJavaArguments = new LinkedHashMap<>();
+
+    JavaArguments defaultPanelJavaArgument = new JavaArguments();
+    hmJavaArguments.put("default", defaultPanelJavaArgument);
+    
     for (String clientScript : getClientScripts())
     {
       JavaArguments javaArgument = new JavaArguments();
-      javaArgument.setInitialMemory(8);
-      javaArgument.setAdditionalArguments(new String[] {"-client"});
       hmJavaArguments.put(clientScript, javaArgument);
     }
     for (String serverScript : getServerScripts())
     {
       JavaArguments javaArgument = new JavaArguments();
-      javaArgument.setInitialMemory(minMemoryMb);
-      javaArgument.setMaxMemory(maxMemoryMb);
-      javaArgument.setAdditionalArguments(new String[] {"-server"});
       hmJavaArguments.put(serverScript, javaArgument);
     }
 
     JavaArguments controlPanelJavaArgument = new JavaArguments();
-    controlPanelJavaArgument.setInitialMemory(64);
-    controlPanelJavaArgument.setMaxMemory(128);
-    controlPanelJavaArgument.setAdditionalArguments(new String[] {"-client"});
     hmJavaArguments.put("control-panel", controlPanelJavaArgument);
 
-    hmDefaultJavaArguments = new HashMap<>(hmJavaArguments);
+    hmDefaultJavaArguments = new LinkedHashMap<>(hmJavaArguments);
   }
 
   private String[] getClientScripts()
diff --git a/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/InstallerHelper.java b/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/InstallerHelper.java
index d3c9f01..5b2e5e8 100644
--- a/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/InstallerHelper.java
+++ b/opendj-server-legacy/src/main/java/org/opends/quicksetup/installer/InstallerHelper.java
@@ -35,8 +35,8 @@
 import java.io.InputStreamReader;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.HashMap;
 import java.util.HashSet;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
@@ -142,7 +142,7 @@
     final ProcessBuilder processBuilder = new ProcessBuilder(argList.toArray(new String[argList.size()]));
     final Map<String, String> env = processBuilder.environment();
     env.remove(SetupUtils.OPENDJ_JAVA_HOME);
-    env.remove(SetupUtils.OPENDJ_JAVA_ARGS);
+    //env.remove(SetupUtils.OPENDJ_JAVA_ARGS);
     env.remove("CLASSPATH");
     processBuilder.directory(installPath);
 
@@ -755,7 +755,7 @@
 
     // Try to transform things if necessary.  The following map has as key
     // the original JavaArgument object and as value the 'transformed' JavaArgument.
-    Map<JavaArguments, JavaArguments> hmJavaArguments = new HashMap<>();
+    Map<JavaArguments, JavaArguments> hmJavaArguments = new LinkedHashMap<>();
     for (String script : uData.getScriptNamesForJavaArguments())
     {
       JavaArguments origJavaArguments = uData.getJavaArguments(script);
@@ -778,8 +778,8 @@
     }
 
     Properties fileProperties = getJavaPropertiesFileContents(getPropertiesFileName(installPath));
-    Map<String, JavaArguments> args = new HashMap<>();
-    Map<String, String> otherProperties = new HashMap<>();
+    Map<String, JavaArguments> args = new LinkedHashMap<>();
+    Map<String, String> otherProperties = new LinkedHashMap<>();
 
     for (String script : uData.getScriptNamesForJavaArguments())
     {
@@ -910,6 +910,7 @@
         break;
       }
     }
+    reader.close();
     return commentLines;
   }
 
@@ -984,8 +985,8 @@
     {
       fLib.mkdir();
     }
-    final String destinationFile = Utils.getPath(libDir, isWindows() ? SET_JAVA_PROPERTIES_FILE_WINDOWS
-                                                                     : SET_JAVA_PROPERTIES_FILE_UNIX);
+//    final String destinationFile = Utils.getPath(libDir, isWindows() ? SET_JAVA_PROPERTIES_FILE_WINDOWS
+//                                                                     : SET_JAVA_PROPERTIES_FILE_UNIX);
   }
 
   /**
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java
index 26da5c3..df4ba93 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeImporter.java
@@ -454,15 +454,15 @@
     private BufferPool newHeapBufferPool(final int nbBuffers, final long heapMemoryAvailable)
         throws InitializationException
     {
-      final long minimumRequiredMemory = nbBuffers * MIN_BUFFER_SIZE + DB_CACHE_SIZE + REQUIRED_FREE_MEMORY;
-      if (heapMemoryAvailable < minimumRequiredMemory)
-      {
-        // Not enough memory.
-        throw new InitializationException(ERR_IMPORT_LDIF_LACK_MEM.get(heapMemoryAvailable, minimumRequiredMemory));
-      }
+//      final long minimumRequiredMemory = nbBuffers * MIN_BUFFER_SIZE + DB_CACHE_SIZE + REQUIRED_FREE_MEMORY;
+//      if (heapMemoryAvailable < minimumRequiredMemory)
+//      {
+//        // Not enough memory.
+//        throw new InitializationException(ERR_IMPORT_LDIF_LACK_MEM.get(heapMemoryAvailable, minimumRequiredMemory));
+//      }
       logger.info(NOTE_IMPORT_LDIF_TOT_MEM_BUF, heapMemoryAvailable, nbBuffers);
-      final long buffersMemory = heapMemoryAvailable - DB_CACHE_SIZE - REQUIRED_FREE_MEMORY;
-      final int bufferSize = Math.min(((int) (buffersMemory / nbBuffers)), MAX_BUFFER_SIZE);
+//      final long buffersMemory = heapMemoryAvailable - DB_CACHE_SIZE - REQUIRED_FREE_MEMORY;
+      final int bufferSize =1024*1024; //Math.min(((int) (buffersMemory / nbBuffers)), MAX_BUFFER_SIZE);
       logger.info(NOTE_IMPORT_LDIF_DB_MEM_BUF_INFO, DB_CACHE_SIZE, bufferSize);
       return new BufferPool(nbBuffers, bufferSize, false);
     }
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/ImportLDIF.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/ImportLDIF.java
index 6375b57..9144252 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/ImportLDIF.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/ImportLDIF.java
@@ -76,7 +76,7 @@
   private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
 
   /** The buffer size that should be used when reading data from LDIF. */
-  private static final int LDIF_BUFFER_SIZE = 1048576;
+  private static final int LDIF_BUFFER_SIZE = 8192;
 
   /**
    * The main method for ImportLDIF tool.
diff --git a/pom.xml b/pom.xml
index a952095..53a4225 100644
--- a/pom.xml
+++ b/pom.xml
@@ -414,7 +414,11 @@
                     <artifactId>maven-clean-plugin</artifactId>
                     <version>3.1.0</version>
                 </plugin>
-                
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-dependency-plugin</artifactId>
+                    <version>3.6.0</version>
+                </plugin>
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-javadoc-plugin</artifactId>

--
Gitblit v1.10.0