From c8447177b6c9d155ea48009583a20ecce7ffd8c6 Mon Sep 17 00:00:00 2001
From: jvergara <jvergara@localhost>
Date: Mon, 18 Jan 2010 22:27:40 +0000
Subject: [PATCH] Fix for issue 3901 (Setup fails when inserting a server in a replication topology with large umount of data) - Add a 'Runtime Options' step in the wizard. By default this will contain just two labels and two buttons: Server Runtime Options: Use Default <button to change> Import Options: Use Default <button to change>
---
opends/src/quicksetup/org/opends/quicksetup/UserData.java | 124 +++++++++++++++++++++++++++++++++++++++++
1 files changed, 123 insertions(+), 1 deletions(-)
diff --git a/opends/src/quicksetup/org/opends/quicksetup/UserData.java b/opends/src/quicksetup/org/opends/quicksetup/UserData.java
index ae7d42a..468978c 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/UserData.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/UserData.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Copyright 2008-2009 Sun Microsystems, Inc.
+ * Copyright 2008-2010 Sun Microsystems, Inc.
*/
package org.opends.quicksetup;
@@ -31,6 +31,7 @@
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Map;
+import java.util.Set;
import org.opends.admin.ads.ServerDescriptor;
import org.opends.admin.ads.SuffixDescriptor;
@@ -96,9 +97,23 @@
private String configurationClass;
+ private Map<String, JavaArguments> hmJavaArguments;
+ private Map<String, JavaArguments> hmDefaultJavaArguments;
+
private static String defaultHostName;
/**
+ * The script name to be used to get and set the java arguments for the
+ * server runtime.
+ */
+ public static String SERVER_SCRIPT_NAME = "start-ds";
+ /**
+ * The script name to be used to get and set the java arguments for the
+ * (off-line) import.
+ */
+ public static String IMPORT_SCRIPT_NAME = "import-ldif.offline";
+
+ /**
* Creates a user data object with default values.
*/
public UserData() {
@@ -149,6 +164,8 @@
remoteWithNoReplicationPort =
new HashMap<ServerDescriptor, AuthenticationData>();
+
+ createDefaultJavaArguments();
}
/**
@@ -759,4 +776,109 @@
{
this.configurationClass = configurationClass;
}
+
+ /**
+ * Returns the different script names for which there are java arguments.
+ * @return the different script names for which there are java arguments.
+ */
+ public Set<String> getScriptNamesForJavaArguments()
+ {
+ return hmJavaArguments.keySet();
+ }
+
+ /**
+ * Returns the java arguments associated with a script name. Returns
+ * <CODE>null</CODE> if no java arguments are defined.
+ * @param scriptName the script name.
+ * @return the java arguments associated with a script name.
+ */
+ public JavaArguments getJavaArguments(String scriptName)
+ {
+ return hmJavaArguments.get(scriptName);
+ }
+
+ /**
+ * Returns the default java arguments associated with a script name. Returns
+ * <CODE>null</CODE> if no java arguments are defined.
+ * @param scriptName the script name.
+ * @return the default java arguments associated with a script name.
+ */
+ public JavaArguments getDefaultJavaArguments(String scriptName)
+ {
+ return hmDefaultJavaArguments.get(scriptName);
+ }
+
+ /**
+ * Sets the java arguments associated with a script name.
+ * @param scriptName the script name.
+ * @param args the java arguments associated with a script name.
+ */
+ public void setJavaArguments(String scriptName, JavaArguments args)
+ {
+ hmJavaArguments.put(scriptName, args);
+ }
+
+
+
+ private void createDefaultJavaArguments()
+ {
+ hmJavaArguments = new HashMap<String, JavaArguments>();
+ int maxMemoryMb = 256;
+ 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;
+ }
+ 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(128);
+ javaArgument.setMaxMemory(256);
+ 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<String, JavaArguments>(hmJavaArguments);
+ }
+
+ private String[] getClientScripts()
+ {
+ return new String[] {
+ "backup.online", "base64", "create-rc-script", "dsconfig",
+ "dsreplication", "dsframework", "export-ldif.online",
+ "import-ldif.online", "ldapcompare", "ldapdelete",
+ "ldapmodify", "ldappasswordmodify", "ldapsearch", "list-backends",
+ "manage-account", "manage-tasks", "restore.online", "stop-ds",
+ "status", "uninstall", "setup"
+ };
+ }
+
+ private String[] getServerScripts()
+ {
+ return new String[]
+ {
+ "backup.offline", "encode-password", "export-ldif.offline",
+ IMPORT_SCRIPT_NAME, "ldif-diff", "ldifmodify", "ldifsearch",
+ "make-ldif", "rebuild-index", "restore.offline", SERVER_SCRIPT_NAME,
+ "upgrade", "verify-index", "dbtest"
+ };
+ }
}
--
Gitblit v1.10.0