diff options
Diffstat (limited to 'base/common/src/com/netscape/cms')
3 files changed, 39 insertions, 4 deletions
diff --git a/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationUtils.java b/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationUtils.java index c5804f2d4..2a2c3b3ab 100644 --- a/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationUtils.java +++ b/base/common/src/com/netscape/cms/servlet/csadmin/ConfigurationUtils.java @@ -1254,11 +1254,18 @@ public class ConfigurationUtils { try { String select = cs.getString("preop.subsystem.select", ""); if (select.equals("clone")) { - // if this is clone, add index before replication - // don't put in the schema or bad things will happen + // in most cases, we want to replicate the schema and therefore + // NOT add it here. We provide this option though in case the + // clone already has schema and we want to replicate back to the + // master. + boolean replicateSchema = cs.getBoolean("preop.internaldb.replicateSchema", true); + if (! replicateSchema) { + importLDIFS("preop.internaldb.schema.ldif", conn); + } importLDIFS("preop.internaldb.ldif", conn); + + // add the index before replication, add VLV indexes afterwards importLDIFS("preop.internaldb.index_ldif", conn); - importLDIFS("preop.internaldb.manager_ldif", conn); } else { // data will be replicated from the master to the clone // so clone does not need the data @@ -1266,7 +1273,6 @@ public class ConfigurationUtils { importLDIFS("preop.internaldb.ldif", conn); importLDIFS("preop.internaldb.data_ldif", conn); importLDIFS("preop.internaldb.index_ldif", conn); - importLDIFS("preop.internaldb.manager_ldif", conn); } } catch (Exception e) { e.printStackTrace(); @@ -1506,6 +1512,25 @@ public class ConfigurationUtils { return dir.delete(); } + public static void populateDBManager() throws Exception { + CMS.debug("populateDBManager(): start"); + IConfigStore cs = CMS.getConfigStore(); + + IConfigStore dbCfg = cs.getSubStore("internaldb"); + ILdapConnFactory dbFactory = CMS.getLdapBoundConnFactory(); + dbFactory.init(dbCfg); + LDAPConnection conn = dbFactory.getConn(); + + try { + importLDIFS("preop.internaldb.manager_ldif", conn); + } catch (Exception e) { + CMS.debug("populateDBManager(): Exception thrown: " + e); + throw e; + } finally { + releaseConnection(conn); + } + } + public static void populateVLVIndexes() throws Exception { CMS.debug("populateVLVIndexes(): start"); IConfigStore cs = CMS.getConfigStore(); diff --git a/base/common/src/com/netscape/cms/servlet/csadmin/DatabasePanel.java b/base/common/src/com/netscape/cms/servlet/csadmin/DatabasePanel.java index 67f10bd8e..5beb81244 100644 --- a/base/common/src/com/netscape/cms/servlet/csadmin/DatabasePanel.java +++ b/base/common/src/com/netscape/cms/servlet/csadmin/DatabasePanel.java @@ -489,6 +489,7 @@ public class DatabasePanel extends WizardPanelBase { } ConfigurationUtils.reInitSubsystem(csType); + ConfigurationUtils.populateDBManager(); ConfigurationUtils.populateVLVIndexes(); cs.putBoolean("preop.Database.done", true); diff --git a/base/common/src/com/netscape/cms/servlet/csadmin/SystemConfigService.java b/base/common/src/com/netscape/cms/servlet/csadmin/SystemConfigService.java index 800f12365..27ee8a506 100644 --- a/base/common/src/com/netscape/cms/servlet/csadmin/SystemConfigService.java +++ b/base/common/src/com/netscape/cms/servlet/csadmin/SystemConfigService.java @@ -360,6 +360,8 @@ public class SystemConfigService extends PKIService implements SystemConfigResou replicationSecurity = "None"; } cs.putString("internaldb.ldapconn.replicationSecurity", replicationSecurity); + + cs.putString("preop.internaldb.replicateSchema", data.getReplicateSchema()); } try { @@ -386,6 +388,7 @@ public class SystemConfigService extends PKIService implements SystemConfigResou } ConfigurationUtils.reInitSubsystem(csType); + ConfigurationUtils.populateDBManager(); ConfigurationUtils.populateVLVIndexes(); } catch (Exception e) { @@ -860,6 +863,12 @@ public class SystemConfigService extends PKIService implements SystemConfigResou } } + if ((data.getReplicateSchema() != null) && (data.getReplicateSchema().equalsIgnoreCase("false"))) { + data.setReplicateSchema("false"); + } else { + data.setReplicateSchema("true"); + } + if ((data.getBackupKeys() != null) && data.getBackupKeys().equals("true")) { if ((data.getBackupFile() == null) || (data.getBackupFile().length()<=0)) { //TODO: also check for valid path, perhaps by touching file there |