| | |
| | | /* |
| | | * Search the domain root entry that is used to save the generation id |
| | | */ |
| | | |
| | | LinkedHashSet<String> attributes = new LinkedHashSet<String>(1); |
| | | Set<String> attributes = new LinkedHashSet<String>(1); |
| | | attributes.add(REPLICATION_GENERATION_ID); |
| | | attributes.add(REPLICATION_FRACTIONAL_EXCLUDE); |
| | | attributes.add(REPLICATION_FRACTIONAL_INCLUDE); |
| | |
| | | SearchResultEntry resultEntry = null; |
| | | if (search.getResultCode() == ResultCode.SUCCESS) |
| | | { |
| | | LinkedList<SearchResultEntry> result = search.getSearchEntries(); |
| | | resultEntry = result.getFirst(); |
| | | List<SearchResultEntry> result = search.getSearchEntries(); |
| | | resultEntry = result.get(0); |
| | | if (resultEntry != null) |
| | | { |
| | | AttributeType synchronizationGenIDType = |
| | |
| | | LDAPFilter filter = LDAPFilter.createEqualityFilter(DS_SYNC_CONFLICT, |
| | | ByteString.valueOf(freedDN.toString())); |
| | | |
| | | LinkedHashSet<String> attrs = new LinkedHashSet<String>(1); |
| | | Set<String> attrs = new LinkedHashSet<String>(1); |
| | | attrs.add(EntryHistorical.HISTORICAL_ATTRIBUTE_NAME); |
| | | attrs.add(EntryHistorical.ENTRYUUID_ATTRIBUTE_NAME); |
| | | attrs.add("*"); |
| | |
| | | 0, 0, false, filter, |
| | | attrs, null); |
| | | |
| | | LinkedList<SearchResultEntry> entries = searchOp.getSearchEntries(); |
| | | Entry entryToRename = null; |
| | | ChangeNumber entryToRenameCN = null; |
| | | for (SearchResultEntry entry : entries) |
| | | for (SearchResultEntry entry : searchOp.getSearchEntries()) |
| | | { |
| | | EntryHistorical history = EntryHistorical.newInstanceFromEntry(entry); |
| | | if (entryToRename == null) |
| | |
| | | { |
| | | InternalClientConnection conn = |
| | | InternalClientConnection.getRootConnection(); |
| | | LinkedHashSet<String> attrs = new LinkedHashSet<String>(1); |
| | | Set<String> attrs = new LinkedHashSet<String>(1); |
| | | attrs.add(ENTRYUUID_ATTRIBUTE_NAME); |
| | | InternalSearchOperation search = conn.processSearch(dn, |
| | | SearchScope.BASE_OBJECT, DereferencePolicy.NEVER_DEREF_ALIASES, |
| | |
| | | |
| | | if (search.getResultCode() == ResultCode.SUCCESS) |
| | | { |
| | | LinkedList<SearchResultEntry> result = search.getSearchEntries(); |
| | | List<SearchResultEntry> result = search.getSearchEntries(); |
| | | if (!result.isEmpty()) |
| | | { |
| | | SearchResultEntry resultEntry = result.getFirst(); |
| | | SearchResultEntry resultEntry = result.get(0); |
| | | if (resultEntry != null) |
| | | { |
| | | return EntryHistorical.getEntryUUID(resultEntry); |
| | |
| | | SearchFilter.createFilterFromString("entryuuid="+uuid)); |
| | | if (search.getResultCode() == ResultCode.SUCCESS) |
| | | { |
| | | LinkedList<SearchResultEntry> result = search.getSearchEntries(); |
| | | List<SearchResultEntry> result = search.getSearchEntries(); |
| | | if (!result.isEmpty()) |
| | | { |
| | | SearchResultEntry resultEntry = result.getFirst(); |
| | | SearchResultEntry resultEntry = result.get(0); |
| | | if (resultEntry != null) |
| | | { |
| | | return resultEntry.getDN(); |
| | |
| | | // Find an rename child entries. |
| | | try |
| | | { |
| | | LinkedHashSet<String> attrs = new LinkedHashSet<String>(1); |
| | | Set<String> attrs = new LinkedHashSet<String>(1); |
| | | attrs.add(ENTRYUUID_ATTRIBUTE_NAME); |
| | | attrs.add(EntryHistorical.HISTORICAL_ATTRIBUTE_NAME); |
| | | |
| | |
| | | |
| | | if (op.getResultCode() == ResultCode.SUCCESS) |
| | | { |
| | | LinkedList<SearchResultEntry> entries = op.getSearchEntries(); |
| | | List<SearchResultEntry> entries = op.getSearchEntries(); |
| | | if (entries != null) |
| | | { |
| | | for (SearchResultEntry entry : entries) |
| | |
| | | * Search the database entry that is used to periodically |
| | | * save the generation id |
| | | */ |
| | | LinkedHashSet<String> attributes = new LinkedHashSet<String>(1); |
| | | Set<String> attributes = new LinkedHashSet<String>(1); |
| | | attributes.add(REPLICATION_GENERATION_ID); |
| | | InternalSearchOperation search = conn.processSearch(asn1BaseDn, |
| | | SearchScope.BASE_OBJECT, |
| | |
| | | } |
| | | else |
| | | { |
| | | LinkedList<SearchResultEntry> result = search.getSearchEntries(); |
| | | SearchResultEntry resultEntry = result.getFirst(); |
| | | List<SearchResultEntry> result = search.getSearchEntries(); |
| | | SearchResultEntry resultEntry = result.get(0); |
| | | if (resultEntry != null) |
| | | { |
| | | AttributeType synchronizationGenIDType = |
| | |
| | | |
| | | // Publish and remove all the changes from the replayOperations list |
| | | // that are older than the endChangeNumber. |
| | | LinkedList<FakeOperation> opsToSend = new LinkedList<FakeOperation>(); |
| | | List<FakeOperation> opsToSend = new LinkedList<FakeOperation>(); |
| | | synchronized (replayOperations) |
| | | { |
| | | Iterator<FakeOperation> itOp = replayOperations.values().iterator(); |
| | |
| | | + fromChangeNumber + ")(" + EntryHistorical.HISTORICAL_ATTRIBUTE_NAME + |
| | | "<=dummy:" + maxValueForId + "))"); |
| | | |
| | | LinkedHashSet<String> attrs = new LinkedHashSet<String>(1); |
| | | Set<String> attrs = new LinkedHashSet<String>(1); |
| | | attrs.add(EntryHistorical.HISTORICAL_ATTRIBUTE_NAME); |
| | | attrs.add(EntryHistorical.ENTRYUUID_ATTRIBUTE_NAME); |
| | | attrs.add("*"); |
| | |
| | | else if (names.size() == 1 && names.contains("*")) |
| | | { |
| | | // Potential fast-path for delete operations. |
| | | LinkedList<Attribute> attributes = new LinkedList<Attribute>(); |
| | | List<Attribute> attributes = new LinkedList<Attribute>(); |
| | | for (List<Attribute> attributeList : entry.getUserAttributes().values()) |
| | | { |
| | | attributes.addAll(attributeList); |
| | |
| | | long endDate) |
| | | throws DirectoryException |
| | | { |
| | | LDAPFilter filter = null; |
| | | |
| | | TRACER.debugInfo("[PURGE] purgeConflictsHistorical " |
| | | + "on domain: " + baseDn |
| | | + "endDate:" + new Date(endDate) |
| | | + "lastChangeNumberPurgedFromHist: " |
| | | + lastChangeNumberPurgedFromHist.toStringUI()); |
| | | |
| | | LDAPFilter filter = null; |
| | | try |
| | | { |
| | | filter = LDAPFilter.decode( |
| | |
| | | // Not possible. We know the filter just above is correct. |
| | | } |
| | | |
| | | LinkedHashSet<String> attrs = new LinkedHashSet<String>(1); |
| | | Set<String> attrs = new LinkedHashSet<String>(1); |
| | | attrs.add(EntryHistorical.HISTORICAL_ATTRIBUTE_NAME); |
| | | attrs.add(EntryHistorical.ENTRYUUID_ATTRIBUTE_NAME); |
| | | attrs.add("*"); |
| | |
| | | if (task != null) |
| | | task.setProgressStats(lastChangeNumberPurgedFromHist, count); |
| | | |
| | | LinkedList<SearchResultEntry> entries = searchOp.getSearchEntries(); |
| | | for (SearchResultEntry entry : entries) |
| | | for (SearchResultEntry entry : searchOp.getSearchEntries()) |
| | | { |
| | | long maxTimeToRun = endDate - TimeThread.getTime(); |
| | | if (maxTimeToRun < 0) |
| | | { |
| | | Message errMsg = Message.raw(Category.SYNC, Severity.NOTICE, |
| | | " end date reached"); |
| | | DirectoryException de = new DirectoryException( |
| | | ResultCode.ADMIN_LIMIT_EXCEEDED, |
| | | errMsg); |
| | | throw (de); |
| | | throw new DirectoryException(ResultCode.ADMIN_LIMIT_EXCEEDED, |
| | | Message.raw(Category.SYNC, Severity.NOTICE, " end date reached")); |
| | | } |
| | | |
| | | EntryHistorical entryHist = EntryHistorical.newInstanceFromEntry(entry); |
| | |
| | | Attribute attr = entryHist.encodeAndPurge(); |
| | | count += entryHist.getLastPurgedValuesCount(); |
| | | List<Modification> mods = new LinkedList<Modification>(); |
| | | Modification mod; |
| | | mod = new Modification(ModificationType.REPLACE, attr); |
| | | mods.add(mod); |
| | | mods.add(new Modification(ModificationType.REPLACE, attr)); |
| | | |
| | | ModifyOperationBasis newOp = |
| | | new ModifyOperationBasis( |