Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Sep 4, 2018
2 parents 2c8bc04 + 30142a3 commit d202be0
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 26 deletions.
Expand Up @@ -236,7 +236,7 @@ public <F extends ObjectType> ModelContext<F> previewChanges(
}

OperationResult result = parentResult.createSubresult(PREVIEW_CHANGES);
LensContext<F> context;
LensContext<F> context = null;

try {
RepositoryCache.enter();
Expand Down Expand Up @@ -272,6 +272,8 @@ public <F extends ObjectType> ModelContext<F> previewChanges(
throw new SystemException(e);

} finally {
LensUtil.reclaimSequences(context, cacheRepositoryService, task, result);

RepositoryCache.exit();
}

Expand Down
Expand Up @@ -1056,7 +1056,7 @@ private <F extends ObjectType> void processClockworkException(LensContext<F> con
result.recordFatalError(e);
auditEvent(context, AuditEventStage.EXECUTION, null, true, task, result);
recordOperationExecution(context, e, task, result);
reclaimSequences(context, task, result);
LensUtil.reclaimSequences(context, repositoryService, task, result);
}

private <F extends ObjectType> void auditEvent(LensContext<F> context, AuditEventStage stage,
Expand Down Expand Up @@ -1608,21 +1608,4 @@ private <F extends ObjectType> Collection<PrismContainerValue<AssignmentType>> d
}
return processedChangedAssignmentValues;
}

private <F extends ObjectType> void reclaimSequences(LensContext<F> context, Task task, OperationResult result) throws SchemaException {
Map<String, Long> sequenceMap = context.getSequences();
LOGGER.trace("Context sequence map: {}", sequenceMap);
for (Entry<String, Long> sequenceMapEntry: sequenceMap.entrySet()) {
Collection<Long> unusedValues = new ArrayList<>(1);
unusedValues.add(sequenceMapEntry.getValue());
try {
LOGGER.trace("Returning value {} to sequence {}", sequenceMapEntry.getValue(), sequenceMapEntry.getKey());
repositoryService.returnUnusedValuesToSequence(sequenceMapEntry.getKey(), unusedValues, result);
} catch (ObjectNotFoundException e) {
LOGGER.error("Cannot return unused value to sequence {}: it does not exist", sequenceMapEntry.getKey(), e);
// ... but otherwise ignore it and go on
}
}
}

}
Expand Up @@ -15,13 +15,7 @@
*/
package com.evolveum.midpoint.model.impl.lens;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.*;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collectors;
Expand All @@ -41,6 +35,7 @@
import com.evolveum.midpoint.prism.query.RefFilter;
import com.evolveum.midpoint.prism.query.builder.QueryBuilder;
import com.evolveum.midpoint.prism.polystring.AlphanumericPolyStringNormalizer;
import com.evolveum.midpoint.repo.api.RepositoryService;
import com.evolveum.midpoint.schema.SchemaConstantsGenerated;
import com.evolveum.midpoint.schema.util.*;
import com.evolveum.midpoint.util.DebugUtil;
Expand Down Expand Up @@ -1086,4 +1081,24 @@ public static SingleLocalizableMessageType interpretLocalizableMessageTemplate(L
}
return rv;
}

public static <F extends ObjectType> void reclaimSequences(LensContext<F> context, RepositoryService repositoryService, Task task, OperationResult result) throws SchemaException {
if (context == null) {
return;
}

Map<String, Long> sequenceMap = context.getSequences();
LOGGER.trace("Context sequence map: {}", sequenceMap);
for (Map.Entry<String, Long> sequenceMapEntry: sequenceMap.entrySet()) {
Collection<Long> unusedValues = new ArrayList<>(1);
unusedValues.add(sequenceMapEntry.getValue());
try {
LOGGER.trace("Returning value {} to sequence {}", sequenceMapEntry.getValue(), sequenceMapEntry.getKey());
repositoryService.returnUnusedValuesToSequence(sequenceMapEntry.getKey(), unusedValues, result);
} catch (ObjectNotFoundException e) {
LOGGER.error("Cannot return unused value to sequence {}: it does not exist", sequenceMapEntry.getKey(), e);
// ... but otherwise ignore it and go on
}
}
}
}

0 comments on commit d202be0

Please sign in to comment.