Uploaded image for project: 'MidPoint'
  1. MidPoint
  2. MID-3961

When directly matching focus vs shadow (e.g. on conflicts), conditions on correlation rules are ignored

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: 3.5.1, 3.6 (Comenius)
    • Fix Version/s: 4.0
    • Component/s: None
    • Labels:
      None

      Description

      Situation:

      There are two correlation rules. One has condition that evaluates to 'false'. The condition is, however, evaluated when matchUserCorrelationRule is used. The source code indicates that these conditions are not checked in that case.

      It could be directly seen also because, when that rule had wrong matchingRule, an exception was thrown even if it shouldn't be.

                  [cause]SystemException:java.lang.IllegalArgumentException: Matching rule {http://prism.evolveum.com/xml/ns/public/matching-rule-3}stringIgnoreCase does not support type {http://prism.evolveum.com/xml/ns/public/types-3}PolyStringType
                          com.evolveum.midpoint.model.impl.sync.SynchronizationServiceImpl.notifyChange(SynchronizationServiceImpl.java:317)
                          com.evolveum.midpoint.provisioning.impl.ChangeNotificationDispatcherImpl.notifyChange(ChangeNotificationDispatcherImpl.java:148)
                          com.evolveum.midpoint.model.impl.sync.SynchronizeAccountResultHandler.handleObjectInternal(SynchronizeAccountResultHandler.java:203)
                          com.evolveum.midpoint.model.impl.sync.SynchronizeAccountResultHandler.handleObject(SynchronizeAccountResultHandler.java:128)
                          com.evolveum.midpoint.model.impl.util.AbstractSearchIterativeResultHandler.processRequest(AbstractSearchIterativeResultHandler.java:327)
                          com.evolveum.midpoint.model.impl.util.AbstractSearchIterativeResultHandler.handle(AbstractSearchIterativeResultHandler.java:189)
                          com.evolveum.midpoint.provisioning.impl.ProvisioningServiceImpl$4.handle(ProvisioningServiceImpl.java:1191)
                          com.evolveum.midpoint.provisioning.impl.ShadowCache$2.handle(ShadowCache.java:890)
                          com.evolveum.midpoint.provisioning.impl.ResourceObjectConverter$3.handle(ResourceObjectConverter.java:1104)
                          com.evolveum.midpoint.provisioning.ucf.impl.ConnectorInstanceIcfImpl$2.handle(ConnectorInstanceIcfImpl.java:2334)
                          org.identityconnectors.framework.impl.api.SearchResultsHandlerLoggingProxy.handle(SearchResultsHandlerLoggingProxy.java:64)
                          org.identityconnectors.framework.impl.api.StreamHandlerUtil$ObjectStreamHandlerAdapter.handle(StreamHandlerUtil.java:101)
                          org.identityconnectors.framework.impl.api.BufferedResultsProxy.invoke(BufferedResultsProxy.java:262)
                          org.identityconnectors.framework.impl.api.DelegatingTimeoutProxy.invoke(DelegatingTimeoutProxy.java:94)
                          com.sun.proxy.$Proxy166.search(Unknown Source)
                          sun.reflect.GeneratedMethodAccessor878.invoke(Unknown Source)
                          sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
                          java.lang.reflect.Method.invoke(Unknown Source)
                          org.identityconnectors.framework.impl.api.LoggingProxy.invoke(LoggingProxy.java:83)
                          com.sun.proxy.$Proxy166.search(Unknown Source)
                          org.identityconnectors.framework.impl.api.AbstractConnectorFacade.search(AbstractConnectorFacade.java:177)
                          com.evolveum.midpoint.provisioning.ucf.impl.ConnectorInstanceIcfImpl.search(ConnectorInstanceIcfImpl.java:2430)
                          com.evolveum.midpoint.provisioning.impl.ResourceObjectConverter.searchResourceObjects(ResourceObjectConverter.java:1114)
                          com.evolveum.midpoint.provisioning.impl.ShadowCache.searchObjectsIterative(ShadowCache.java:897)
                          com.evolveum.midpoint.provisioning.impl.ShadowCache.searchObjectsIterative(ShadowCache.java:822)
                          com.evolveum.midpoint.provisioning.impl.ProvisioningServiceImpl.searchObjectsIterative(ProvisioningServiceImpl.java:1239)
                          com.evolveum.midpoint.model.impl.ModelObjectResolver.searchIterative(ModelObjectResolver.java:224)
                          com.evolveum.midpoint.model.impl.util.AbstractSearchIterativeTaskHandler.runInternal(AbstractSearchIterativeTaskHandler.java:252)
                          com.evolveum.midpoint.model.impl.util.AbstractSearchIterativeTaskHandler.run(AbstractSearchIterativeTaskHandler.java:159)
                          com.evolveum.midpoint.task.quartzimpl.execution.JobExecutor.executeHandler(JobExecutor.java:473)
                          com.evolveum.midpoint.task.quartzimpl.execution.JobExecutor.executeSingleTask(JobExecutor.java:294)
                          com.evolveum.midpoint.task.quartzimpl.execution.JobExecutor.execute(JobExecutor.java:160)
                          org.quartz.core.JobRunShell.run(JobRunShell.java:213)
                          org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
                      Caused by java.lang.IllegalArgumentException: Matching rule {http://prism.evolveum.com/xml/ns/public/matching-rule-3}stringIgnoreCase does not support type {http://prism.evolveum.com/xml/ns/public/types-3}PolyStringType
                          com.evolveum.midpoint.prism.query.ValueFilter.getMatchingRuleFromRegistry(ValueFilter.java:115)
                          com.evolveum.midpoint.prism.query.EqualFilter.match(EqualFilter.java:278)
                          com.evolveum.midpoint.prism.query.ObjectQuery.match(ObjectQuery.java:96)
                          com.evolveum.midpoint.model.impl.sync.CorrelationConfirmationEvaluator.matchUserCorrelationRule(CorrelationConfirmationEvaluator.java:287)
                          com.evolveum.midpoint.model.impl.sync.CorrelationConfirmationEvaluator.matchUserCorrelationRule(CorrelationConfirmationEvaluator.java:315)
                          com.evolveum.midpoint.model.impl.sync.SynchronizationServiceImpl.matchUserCorrelationRule(SynchronizationServiceImpl.java:594)
                          com.evolveum.midpoint.model.impl.lens.projector.ProjectionValuesProcessor.processProjections(ProjectionValuesProcessor.java:338)
                          com.evolveum.midpoint.model.impl.lens.projector.ProjectionValuesProcessor.process(ProjectionValuesProcessor.java:133)
                          com.evolveum.midpoint.model.impl.lens.projector.Projector.projectInternal(Projector.java:266)
                          com.evolveum.midpoint.model.impl.lens.projector.Projector.project(Projector.java:106)
                          com.evolveum.midpoint.model.impl.lens.Clockwork.click(Clockwork.java:302)
                          com.evolveum.midpoint.model.impl.lens.Clockwork.run(Clockwork.java:214)
                          com.evolveum.midpoint.model.impl.sync.SynchronizationServiceImpl.reactToChange(SynchronizationServiceImpl.java:773)
                          com.evolveum.midpoint.model.impl.sync.SynchronizationServiceImpl.notifyChange(SynchronizationServiceImpl.java:300)
                          com.evolveum.midpoint.provisioning.impl.ChangeNotificationDispatcherImpl.notifyChange(ChangeNotificationDispatcherImpl.java:148)
                          com.evolveum.midpoint.model.impl.sync.SynchronizeAccountResultHandler.handleObjectInternal(SynchronizeAccountResultHandler.java:203)
                          com.evolveum.midpoint.model.impl.sync.SynchronizeAccountResultHandler.handleObject(SynchronizeAccountResultHandler.java:128)
                          com.evolveum.midpoint.model.impl.util.AbstractSearchIterativeResultHandler.processRequest(AbstractSearchIterativeResultHandler.java:327)
                          com.evolveum.midpoint.model.impl.util.AbstractSearchIterativeResultHandler.handle(AbstractSearchIterativeResultHandler.java:189)
                          com.evolveum.midpoint.provisioning.impl.ProvisioningServiceImpl$4.handle(ProvisioningServiceImpl.java:1191)
                          com.evolveum.midpoint.provisioning.impl.ShadowCache$2.handle(ShadowCache.java:890)
                          com.evolveum.midpoint.provisioning.impl.ResourceObjectConverter$3.handle(ResourceObjectConverter.java:1104)
                          com.evolveum.midpoint.provisioning.ucf.impl.ConnectorInstanceIcfImpl$2.handle(ConnectorInstanceIcfImpl.java:2334)
                          org.identityconnectors.framework.impl.api.SearchResultsHandlerLoggingProxy.handle(SearchResultsHandlerLoggingProxy.java:64)
                          org.identityconnectors.framework.impl.api.StreamHandlerUtil$ObjectStreamHandlerAdapter.handle(StreamHandlerUtil.java:101)
                          org.identityconnectors.framework.impl.api.BufferedResultsProxy.invoke(BufferedResultsProxy.java:262)
                          org.identityconnectors.framework.impl.api.DelegatingTimeoutProxy.invoke(DelegatingTimeoutProxy.java:94)
                          com.sun.proxy.$Proxy166.search(Unknown Source)
                          sun.reflect.GeneratedMethodAccessor878.invoke(Unknown Source)
                          sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
                          java.lang.reflect.Method.invoke(Unknown Source)
                          org.identityconnectors.framework.impl.api.LoggingProxy.invoke(LoggingProxy.java:83)
                          com.sun.proxy.$Proxy166.search(Unknown Source)
                          org.identityconnectors.framework.impl.api.AbstractConnectorFacade.search(AbstractConnectorFacade.java:177)
                          com.evolveum.midpoint.provisioning.ucf.impl.ConnectorInstanceIcfImpl.search(ConnectorInstanceIcfImpl.java:2430)
                          com.evolveum.midpoint.provisioning.impl.ResourceObjectConverter.searchResourceObjects(ResourceObjectConverter.java:1114)
                          com.evolveum.midpoint.provisioning.impl.ShadowCache.searchObjectsIterative(ShadowCache.java:897)
                          com.evolveum.midpoint.provisioning.impl.ShadowCache.searchObjectsIterative(ShadowCache.java:822)
                          com.evolveum.midpoint.provisioning.impl.ProvisioningServiceImpl.searchObjectsIterative(ProvisioningServiceImpl.java:1239)
                          com.evolveum.midpoint.model.impl.ModelObjectResolver.searchIterative(ModelObjectResolver.java:224)
                          com.evolveum.midpoint.model.impl.util.AbstractSearchIterativeTaskHandler.runInternal(AbstractSearchIterativeTaskHandler.java:252)
                          com.evolveum.midpoint.model.impl.util.AbstractSearchIterativeTaskHandler.run(AbstractSearchIterativeTaskHandler.java:159)
                          com.evolveum.midpoint.task.quartzimpl.execution.JobExecutor.executeHandler(JobExecutor.java:473)
                          com.evolveum.midpoint.task.quartzimpl.execution.JobExecutor.executeSingleTask(JobExecutor.java:294)
                          com.evolveum.midpoint.task.quartzimpl.execution.JobExecutor.execute(JobExecutor.java:160)
                          org.quartz.core.JobRunShell.run(JobRunShell.java:213)
                          org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
                      Caused by com.evolveum.midpoint.util.exception.SchemaException: Matching rule {http://prism.evolveum.com/xml/ns/public/matching-rule-3}stringIgnoreCase does not support type {http://prism.evolveum.com/xml/ns/public/types-3}PolyStringType
                          com.evolveum.midpoint.prism.match.MatchingRuleRegistry.getMatchingRule(MatchingRuleRegistry.java:67)
                          com.evolveum.midpoint.prism.query.ValueFilter.getMatchingRuleFromRegistry(ValueFilter.java:113)
                          com.evolveum.midpoint.prism.query.EqualFilter.match(EqualFilter.java:278)
                          com.evolveum.midpoint.prism.query.ObjectQuery.match(ObjectQuery.java:96)
                          com.evolveum.midpoint.model.impl.sync.CorrelationConfirmationEvaluator.matchUserCorrelationRule(CorrelationConfirmationEvaluator.java:287)
                          com.evolveum.midpoint.model.impl.sync.CorrelationConfirmationEvaluator.matchUserCorrelationRule(CorrelationConfirmationEvaluator.java:315)
                          com.evolveum.midpoint.model.impl.sync.SynchronizationServiceImpl.matchUserCorrelationRule(SynchronizationServiceImpl.java:594)
                          com.evolveum.midpoint.model.impl.lens.projector.ProjectionValuesProcessor.processProjections(ProjectionValuesProcessor.java:338)
                          com.evolveum.midpoint.model.impl.lens.projector.ProjectionValuesProcessor.process(ProjectionValuesProcessor.java:133)
                          com.evolveum.midpoint.model.impl.lens.projector.Projector.projectInternal(Projector.java:266)
                          com.evolveum.midpoint.model.impl.lens.projector.Projector.project(Projector.java:106)
                          com.evolveum.midpoint.model.impl.lens.Clockwork.click(Clockwork.java:302)
                          com.evolveum.midpoint.model.impl.lens.Clockwork.run(Clockwork.java:214)
                          com.evolveum.midpoint.model.impl.sync.SynchronizationServiceImpl.reactToChange(SynchronizationServiceImpl.java:773)
                          com.evolveum.midpoint.model.impl.sync.SynchronizationServiceImpl.notifyChange(SynchronizationServiceImpl.java:300)
                          com.evolveum.midpoint.provisioning.impl.ChangeNotificationDispatcherImpl.notifyChange(ChangeNotificationDispatcherImpl.java:148)
                          com.evolveum.midpoint.model.impl.sync.SynchronizeAccountResultHandler.handleObjectInternal(SynchronizeAccountResultHandler.java:203)
                          com.evolveum.midpoint.model.impl.sync.SynchronizeAccountResultHandler.handleObject(SynchronizeAccountResultHandler.java:128)
                          com.evolveum.midpoint.model.impl.util.AbstractSearchIterativeResultHandler.processRequest(AbstractSearchIterativeResultHandler.java:327)
                          com.evolveum.midpoint.model.impl.util.AbstractSearchIterativeResultHandler.handle(AbstractSearchIterativeResultHandler.java:189)
                          com.evolveum.midpoint.provisioning.impl.ProvisioningServiceImpl$4.handle(ProvisioningServiceImpl.java:1191)
                          com.evolveum.midpoint.provisioning.impl.ShadowCache$2.handle(ShadowCache.java:890)
                          com.evolveum.midpoint.provisioning.impl.ResourceObjectConverter$3.handle(ResourceObjectConverter.java:1104)
                          com.evolveum.midpoint.provisioning.ucf.impl.ConnectorInstanceIcfImpl$2.handle(ConnectorInstanceIcfImpl.java:2334)
                          org.identityconnectors.framework.impl.api.SearchResultsHandlerLoggingProxy.handle(SearchResultsHandlerLoggingProxy.java:64)
                          org.identityconnectors.framework.impl.api.StreamHandlerUtil$ObjectStreamHandlerAdapter.handle(StreamHandlerUtil.java:101)
                          org.identityconnectors.framework.impl.api.BufferedResultsProxy.invoke(BufferedResultsProxy.java:262)
                          org.identityconnectors.framework.impl.api.DelegatingTimeoutProxy.invoke(DelegatingTimeoutProxy.java:94)
                          com.sun.proxy.$Proxy166.search(Unknown Source)
                          sun.reflect.GeneratedMethodAccessor878.invoke(Unknown Source)
                          sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
                          java.lang.reflect.Method.invoke(Unknown Source)
                          org.identityconnectors.framework.impl.api.LoggingProxy.invoke(LoggingProxy.java:83)
                          com.sun.proxy.$Proxy166.search(Unknown Source)
                          org.identityconnectors.framework.impl.api.AbstractConnectorFacade.search(AbstractConnectorFacade.java:177)
                          com.evolveum.midpoint.provisioning.ucf.impl.ConnectorInstanceIcfImpl.search(ConnectorInstanceIcfImpl.java:2430)
                          com.evolveum.midpoint.provisioning.impl.ResourceObjectConverter.searchResourceObjects(ResourceObjectConverter.java:1114)
                          com.evolveum.midpoint.provisioning.impl.ShadowCache.searchObjectsIterative(ShadowCache.java:897)
                          com.evolveum.midpoint.provisioning.impl.ShadowCache.searchObjectsIterative(ShadowCache.java:822)
                          com.evolveum.midpoint.provisioning.impl.ProvisioningServiceImpl.searchObjectsIterative(ProvisioningServiceImpl.java:1239)
                          com.evolveum.midpoint.model.impl.ModelObjectResolver.searchIterative(ModelObjectResolver.java:224)
                          com.evolveum.midpoint.model.impl.util.AbstractSearchIterativeTaskHandler.runInternal(AbstractSearchIterativeTaskHandler.java:252)
                          com.evolveum.midpoint.model.impl.util.AbstractSearchIterativeTaskHandler.run(AbstractSearchIterativeTaskHandler.java:159)
                          com.evolveum.midpoint.task.quartzimpl.execution.JobExecutor.executeHandler(JobExecutor.java:473)
                          com.evolveum.midpoint.task.quartzimpl.execution.JobExecutor.executeSingleTask(JobExecutor.java:294)
                          com.evolveum.midpoint.task.quartzimpl.execution.JobExecutor.execute(JobExecutor.java:160)
                          org.quartz.core.JobRunShell.run(JobRunShell.java:213)
                          org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
      
      

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              mederly Pavol Mederly
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated: