OPENDJ-2688 Upgrade: Error in matching rule when starting server after upgrade
Removed the configuration for the matching rules deleted in commit c2eaf97f09d246d92b8259687472304c5bab695c
| | |
| | | "ds-cfg-java-class: org.opends.server.extensions.BcryptPasswordStorageScheme", |
| | | "ds-cfg-enabled: true")); |
| | | |
| | | /** See OPENDJ-2683 */ |
| | | register("4.0.0", |
| | | deleteConfigEntry(INFO_UPGRADE_TASK_REMOVE_MATCHING_RULES.get(), |
| | | "cn=Auth Password Exact Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Bit String Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Boolean Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Case Exact Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Case Exact Ordering Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Case Exact Substring Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Case Exact IA5 Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Case Exact IA5 Substring Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Case Ignore Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Case Ignore Ordering Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Case Ignore Substring Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Case Ignore IA5 Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Case Ignore IA5 Substring Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Case Ignore List Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Case Ignore List Substring Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Certificate Exact Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Directory String First Component Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Distinguished Name Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Double Metaphone Approximate Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Generalized Time Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Generalized Time Ordering Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Integer Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Integer Ordering Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Integer First Component Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Keyword Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Numeric String Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Numeric String Ordering Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Numeric String Substring Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Object Identifier Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Object Identifier First Component Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Octet String Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Octet String Ordering Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Octet String Substring Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Presentation Address Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Protocol Information Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Telephone Number Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Telephone Number Substring Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Time Based Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Unique Member Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=User Password Exact Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=UUID Equality Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=UUID Ordering Matching Rule,cn=Matching Rules,cn=config", |
| | | "cn=Word Equality Matching Rule,cn=Matching Rules,cn=config")); |
| | | |
| | | /** |
| | | * All upgrades will refresh the server configuration schema and generate a new upgrade folder. |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * Returns a new upgrade task which deletes a config entry from the underlying |
| | | * config file. |
| | | * Returns a new upgrade task which deletes a config entry from the underlying config file. |
| | | * |
| | | * @param summary |
| | | * The summary of this upgrade task. |
| | | * @param dnInLDIF |
| | | * The dn to delete in the form of LDIF. |
| | | * @return A new upgrade task which applies an LDIF record to all |
| | | * configuration entries matching the provided filter. |
| | | * @param dnsInLDIF |
| | | * The dns to delete in the form of LDIF. |
| | | * @return A new upgrade task which applies an LDIF record to all configuration entries matching |
| | | * the provided filter. |
| | | */ |
| | | public static UpgradeTask deleteConfigEntry(final LocalizableMessage summary, |
| | | final String dnInLDIF) |
| | | public static UpgradeTask deleteConfigEntry(final LocalizableMessage summary, final String... dnsInLDIF) |
| | | { |
| | | return updateConfigEntry(summary, null, ChangeOperationType.DELETE, dnInLDIF); |
| | | return updateConfigEntry(summary, null, ChangeOperationType.DELETE, dnsInLDIF); |
| | | } |
| | | |
| | | /** |
| | |
| | | import java.io.FileReader; |
| | | import java.io.FilenameFilter; |
| | | import java.io.IOException; |
| | | import java.util.HashSet; |
| | | import java.util.LinkedList; |
| | | import java.util.List; |
| | | import java.util.Set; |
| | | |
| | | import org.forgerock.i18n.LocalizableMessage; |
| | | import org.forgerock.i18n.slf4j.LocalizedLogger; |
| | |
| | | writer.writeComment(INFO_CONFIG_FILE_HEADER.get()); |
| | | writer.setWrapColumn(0); |
| | | |
| | | boolean entryAlreadyExist = false; |
| | | DN ldifDN = null; |
| | | if (filter == null && (changeType == ADD || changeType == DELETE)) |
| | | Set<DN> ldifDNs = new HashSet<>(); |
| | | if (filter == null) |
| | | { |
| | | // The first line should start with dn: |
| | | ldifDN = DN.valueOf(ldifLines[0].replaceFirst("dn: ", "")); |
| | | switch (changeType) |
| | | { |
| | | case ADD: |
| | | // The first line should start with dn: |
| | | ldifDN = DN.valueOf(removeDnPrefix(ldifLines[0])); |
| | | ldifDNs.add(ldifDN); |
| | | break; |
| | | |
| | | case DELETE: |
| | | // All lines represent dns |
| | | for (String dnLine : ldifLines) |
| | | { |
| | | ldifDNs.add(DN.valueOf(removeDnPrefix(dnLine))); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | |
| | | boolean entryAlreadyExist = false; |
| | | final Filter f = filter != null ? filter : Filter.alwaysFalse(); |
| | | final Matcher matcher = f.matcher(schema); |
| | | while (entryReader.hasNext()) |
| | |
| | | readLDIFLines(entryDN, changeType, ldifLines)); |
| | | entry = Entries.modifyEntryPermissive(entry, mr.getModifications()); |
| | | changeCount++; |
| | | logger.debug(LocalizableMessage.raw( |
| | | "The following entry has been modified : %s", entryDN)); |
| | | logger.debug(LocalizableMessage.raw("The following entry has been modified : %s", entryDN)); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | if (entryDN.equals(ldifDN)) |
| | | if (ldifDNs.remove(entryDN)) |
| | | { |
| | | logger.debug(LocalizableMessage.raw("Entry %s found", entryDN)); |
| | | entryAlreadyExist = true; |
| | |
| | | { |
| | | entry = null; |
| | | changeCount++; |
| | | logger.debug(LocalizableMessage.raw( |
| | | "The following entry has been deleted : %s", entryDN)); |
| | | logger.debug(LocalizableMessage.raw("The following entry has been deleted : %s", entryDN)); |
| | | } |
| | | } |
| | | |
| | |
| | | { |
| | | final AddRequest ar = Requests.newAddRequest(ldifLines); |
| | | writer.writeEntry(ar); |
| | | logger.debug(LocalizableMessage.raw("Entry successfully added %s in %s", |
| | | ldifDN, original.getAbsolutePath())); |
| | | logger.debug(LocalizableMessage.raw("Entry successfully added %s in %s", ldifDN, original.getAbsolutePath())); |
| | | changeCount++; |
| | | } |
| | | } |
| | |
| | | return changeCount; |
| | | } |
| | | |
| | | private static String removeDnPrefix(String dnLine) |
| | | { |
| | | return dnLine.replaceFirst("dn: ", ""); |
| | | } |
| | | |
| | | /** |
| | | * This task adds new attributes / object classes to the specified destination |
| | | * file. The new attributes and object classes must be originally defined in |
| | |
| | | INFO_UPGRADE_TASK_RENAME_JE_DB_DIR_20022=Renaming local-db backend directory '%s' to '%s' |
| | | INFO_UPGRADE_TASK_RENAME_JE_DB_DIR_WARNING_20023=You must reimport all your data into the PDB \ |
| | | backends in order to have a fully functional server |
| | | INFO_UPGRADE_TASK_REMOVE_MATCHING_RULES_2683=Removing configuration for matching rules |
| | | |
| | | INFO_LDAP_CONN_PROMPT_SECURITY_LDAP=LDAP |
| | | INFO_LDAP_CONN_PROMPT_SECURITY_USE_SSL=LDAP with SSL |