Reconciliation Duration Metrics
"Obtaining the Details of a Reconciliation" describes how to obtain the details of a reconciliation run over REST. This section provides more information on the metrics returned when you query the recon
endpoint. Reconciliation is processed as a series of distinct tasks. The durationSummary
property indicates the period of time spent on each task. You can use this information to address reconciliation performance bottlenecks.
The following sample output shows the kind of information returned for each reconciliation run:
{
"_id": "3bc72717-a4bb-4871-b936-3a5a560c1a7c-37",
"duration": 781561,
"durationSummary": {
"auditLog": {
...
},
...
"sourceObjectQuery": {
"count": 100,
"max": 96,
"mean": 14,
"min": 6,
"stdDev": 16,
"sum": 1450
},
"sourcePagePhase": {
"count": 1,
"max": 20944,
"mean": 20944,
"min": 20944,
"stdDev": 0,
"sum": 20944
},
"sourceQuery": {
"count": 1,
"max": 120,
"mean": 120,
"min": 120,
"stdDev": 0,
"sum": 120
},
"targetPhase": {
"count": 1,
"max": 0,
"mean": 0,
"min": 0,
"stdDev": 0,
"sum": 0
},
"targetQuery": {
"count": 1,
"max": 19657,
"mean": 19657,
"min": 19657,
"stdDev": 0,
"sum": 19657
}
},
...
}
The specific reconciliation tasks that are run depend on the configuration for that mapping. For example, the sourcePagePhase
is run only if paging is enabled. The linkQuery
is run only for non-clustered reconciliation operations, because an initial query of all links does not make sense if a single source page query is being run.
The following list describes all the possible tasks that can be run for a single reconciliation:
sourcePhase
This phase runs only for non-clustered, non-paged reconciliations. The total duration (
sum
) is the time spent processing all records on the source system.sourcePagePhase
Queries and processes individual objects in a page, based on their IDs. This phase is run only for clustered reconciliations or for non-clustered reconciliations that have source paging configured. The total duration (
sum
) is the total time spent processing source pages across all cluster nodes. This processing occurs in parallel across all cluster nodes, so it is normal for thesourcePagePhase
duration to exceed the total reconciliation duration.sourceQuery
Obtains all IDs on the source system, or in a specific source page.
Note
When the
sourceQuery
returns a null paging cookie, indicating that there are no more source IDs to reconcile, the clustered reconciliation process dispatches a scheduled job namedsourcePageCompletionCheck
.This job checks for remaining source page jobs on the scheduler. If there are no remaining source page jobs, the
sourcePageCompletionCheck
schedules the target phase. If there are still source page jobs to process, thesourcePageCompletionCheck
schedules another instance of itself to perform these checks again after a few seconds.Because the target phase reconciles all IDs that were not reconciled during the source phase, it cannot start until all of the source pages are complete. Final reconciliation statistics cannot be generated and logged until all source page jobs have completed, so the
sourcePageCompletionCheck
runs even if the target phase is not enabled.sourceObjectQuery
Queries the individual objects on the source system or page, based on their IDs.
validSourceScript
Processes any scripts that should be run to determine if a source object is valid to be mapped.
linkQuery
Queries any existing links between source and target objects.
This phase includes the following tasks:
sourceLinkQuery
Queries any existing links from source objects to target objects.
targetLinkQuery
Queries any existing links from target objects that were not processed during the
sourceLinkQuery
phase.linkQualifiersScript
Runs any link qualifier scripts. For more information, see "Map a Single Source Object to Multiple Target Objects".
onLinkScript
Processes any scripts that should be run when source and target objects are linked.
onUnlinkScript
Processes any scripts that should be run when source and target objects are unlinked.
deleteLinkObject
Deletes any links that are no longer relevant between source and target objects.
correlationQuery
Processes any configured correlation queries. For more information, see "Writing Correlation Queries".
correlationScript
Processes any configured correlation scripts. For more information, see "Writing Correlation Scripts".
defaultMappingScript
For roles, processes the script that applies the effective assignments as part of the mapping.
activePolicyScript
Sets the action and active policy based on the current situation.
activePolicyPostActionScript
Processes any scripts configured to run after policy validation.
targetPhase
The aggregated result for time spent processing records on the target system.
targetQuery
Queries all IDs on the target system. The list of IDs is restricted to IDs that have not already been linked to a source ID during the source phase. The target query generates a list of orphan IDs that must be reconciled if the target phase is not disabled.
targetObjectQuery
Queries the individual objects on the target system, based on their IDs.
validTargetScript
Processes any scripts that should be run to determine if a target object is valid to be mapped.
onCreateScript
Processes any scripts that should be run when a new target object is created.
updateTargetObject
Updates existing linked target objects, based on the configured situations and actions.
onUpdateScript
Processes any scripts that should be run when a target object is updated.
deleteTargetObject
Deletes any objects on the target resource that must be removed in accordance with the defined synchronization actions.
onDeleteScript
Processes any scripts that should be run when a target object is deleted.
resultScript
Processes the script that is executed for every mapping event, regardless of the operation.
propertyMappingScript
Runs any scripts configured for when source and target properties are mapped.
postMappingScript
Processes any scripts that should be run when synchronization has been performed on the managed/user object.
onReconScript
Processes any scripts that should be run after source and target systems are reconciled.
auditLog
Writes reconciliation results to the audit log.
For each phase, the following metrics are collected:
count
The number of objects or records processed during that phase. For the
sourcePageQuery
phase, thecount
parameter refers to the page size.When the
count
statistic of a particular task refers to the number of records being reconciled, thesum
statistic of that task represents the total time across the total number of threads running in all nodes in the cluster. For example:"updateTargetObject": { "count": 1000000, "max": 1193, "mean": 35, "min": 11, "stdDev": 0, "sum": 35065991 }
max
The maximum time, in milliseconds, spent processing a record during that phase.
mean
The average time, in milliseconds, spent processing a record during that phase.
min
The minimum time, in milliseconds, spent processing a record during that phase.
stdDev
The standard deviation, which measures the variance of the individual values from the mean.
sum
The total amount of time, in milliseconds, spent during that phase.