0
Completed

Split connector polling import

Adam van Vliet (Chief Information Security Officer) 7 years ago • updated by anonymous 3 years ago 12

As some connectors don't only retrieve the keys that have changed, but actually retrieve the entities that have changed, the polling import interface should be split to allow for either returning the keys or the entities.

Possibly create a new return type that can be a container for either the keys or entities, and make the determination of what to do in the calling code.

Affected Versions:
Fixed by Version:

This has been completed in IdB. Still requires updates to connectors and testing.

Matthew, can you please confirm that the chris21 polling import hasn't regressed following these changes?

The chris21 polling import is not returning anything, even though EAI is correctly enabled on 2 forms. The polling for chris21 has not changed, so I suspect there may be something being lost in the split.

The connector job was always wrapping the connector incorrectly as an Entity Polling Connector. A type check now takes place before this occurs.

Fixing the conversion resulted in the connector making the call to pull changes, however my coinfiguration resulted in the following error:

hange detection engine poll failed.
Change detection engine poll for connector chris²¹ ADR failed with reason More keys have been specified then values when retrieving an entity.

Key Count: 2
Value count: 1. Duration: 00:00:00.5920000
Error details:
System.IO.InvalidDataException: More keys have been specified then values when retrieving an entity.

Key Count: 2
Value count: 1
at Unify.Product.IdentityBroker.Chris21EntityKeyFromMultiKeyAdapter.Transform(MultiKeyValue sourceValue) in S:\Hg\Connectors\Chris21\Master\Source\Unify.IdentityBroker.Connector.Chris21\Chris21EntityKeyFromMultiKeyAdapter.cs:line 67
at Unify.Product.IdentityBroker.Chris21ConnectorBase`1.GetEntity(MultiKeyValue entityId) in S:\Hg\Connectors\Chris21\Master\Source\Unify.IdentityBroker.Connector.Chris21\Chris21ConnectorBase.cs:line 156
at Unify.Product.IdentityBroker.Chris21ConnectorBase`1.GetEntities(IEnumerable`1 entityIds) in S:\Hg\Connectors\Chris21\Master\Source\Unify.IdentityBroker.Connector.Chris21\Chris21ConnectorBase.cs:line 209
at Unify.Product.IdentityBroker.ConnectorToIdPollingConnectorBridge.GetEntities(IEnumerable`1 entityIds) in S:\Hg\Product\IdentityBroker\IdentityBroker\Source\Connector\Unify.IdentityBroker.Connector\ConnectorToIdPollingConnectorBridge.cs:line 106
at Unify.Product.IdentityBroker.EventNotifierReadingConnectorDecoratorBase`1.GetEntities(IEnumerable`1 entityIds) in S:\Hg\Product\IdentityBroker\IdentityBroker\Source\Connector\Unify.IdentityBroker.Connector.Decorators\EventNotifierReadingConnectorDecoratorBase.cs:line 65
at Unify.Product.IdentityBroker.ChangeDetectionIdPollJob.RunBase() in S:\Hg\Product\IdentityBroker\IdentityBroker\Source\ChangeDetection\Unify.IdentityBroker.ChangeDetection\ChangeDetectionIdPollJob.cs:line 111
at Unify.Framework.JobBase.Run() in c:\Program Files (x86)\Jenkins\jobs\Framework Core (DEV)\workspace\Source\Scheduling\Unify.Framework.Scheduling.Job\JobBase.cs:line 16
at Unify.Framework.DefinedScopeJobAuditTrailJobDecorator.Run() in c:\Program Files (x86)\Jenkins\jobs\Framework Core (DEV)\workspace\Source\Scheduling\Unify.Framework.Scheduling.Job.Auditing\DefinedScopeJobAuditTrailJobDecorator.cs:line 34
at Unify.Product.IdentityBroker.QueuedConnectorExecutionProcessor.<>c_DisplayClass1.<RequestExecuteJob>b_0() in S:\Hg\Product\IdentityBroker\IdentityBroker\Source\ChangeDetection\Unify.IdentityBroker.ChangeDetection\QueuedConnectorExecutionProcessor.cs:line 104
at Unify.Framework.ExtensionMethods.WaitOnMutex(Mutex mutex, Action work) in c:\Program Files (x86)\Jenkins\jobs\Framework Core (DEV)\workspace\Source\Scheduling\Unify.Framework.Scheduling.Job\JobExtensionMethods.cs:line 21
at Unify.Product.IdentityBroker.QueuedConnectorExecutionProcessor.RequestExecuteJob(Guid connectorId, Action job, Boolean queueJob) in S:\Hg\Product\IdentityBroker\IdentityBroker\Source\ChangeDetection\Unify.IdentityBroker.ChangeDetection\QueuedConnectorExecutionProcessor.cs:line 70
at Unify.Product.IdentityBroker.ChangeDetectionQueuableConnectorJobDecorator.RunBase() in S:\Hg\Product\IdentityBroker\IdentityBroker\Source\ChangeDetection\Unify.IdentityBroker.ChangeDetection\ChangeDetectionQueuableConnectorJobDecorator.cs:line 51
at Unify.Framework.JobBase.Run() in c:\Program Files (x86)\Jenkins\jobs\Framework Core (DEV)\workspace\Source\Scheduling\Unify.Framework.Scheduling.Job\JobBase.cs:line 16
at Unify.Framework.AsynchronousJobExecutor.PerformJobCallback(Object state) in c:\Program Files (x86)\Jenkins\jobs\Framework Core (DEV)\workspace\Source\Scheduling\Unify.Framework.Scheduling.Job\AsynchronousJobExecutor.cs:line 29

I believe this is because two keys were specified for the connector, where EAI is likely only returning one. Will need to investigate the use of the Parts configuration that was thought to be irrelevant.

Yes it should be - this is currently the error message being returned by the connector.

Error message has been updated, and still being thrown where there is a schema key with more than one value. The following error is also being thrown following a successful poll in the engine:

May/2012 11:10:53
Information
Connector Processor Connector Post Processing failed.
Connector Post Processing for connector chris²¹ DET failed with reason Method 'Boolean Contains(System.Guid)' has no supported translation to SQL.. Processed Entities: 1. Duration: 00:00:00.0920000
Error details:
System.NotSupportedException: Method 'Boolean Contains(System.Guid)' has no supported translation to SQL.
at System.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitMethodCall(SqlMethodCall mc)
at System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)
at System.Data.Linq.SqlClient.SqlVisitor.VisitExpression(SqlExpression exp)
at System.Data.Linq.SqlClient.SqlVisitor.VisitUnaryOperator(SqlUnary uo)
at System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)
at System.Data.Linq.SqlClient.SqlVisitor.VisitExpression(SqlExpression exp)
at System.Data.Linq.SqlClient.SqlVisitor.VisitSelectCore(SqlSelect select)
at System.Data.Linq.SqlClient.PostBindDotNetConverter.Visitor.VisitSelect(SqlSelect select)
at System.Data.Linq.SqlClient.SqlVisitor.Visit(SqlNode node)
at System.Data.Linq.SqlClient.SqlProvider.BuildQuery(ResultShape resultShape, Type resultType, SqlNode node, ReadOnlyCollection`1 parentParameters, SqlNodeAnnotations annotations)
at System.Data.Linq.SqlClient.SqlProvider.BuildQuery(Expression query, SqlNodeAnnotations annotations)
at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
at System.Data.Linq.DataQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArrayTSource(IEnumerable`1 source)
at Unify.Framework.Data.LinqWhereQuery`5.GetEnumerator() in c:\Program Files (x86)\Jenkins\jobs\Framework Core (DEV)\workspace\Source\Data\Unify.Framework.Data\LinqWhereQuery.cs:line 95
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.Enumerable.ToArrayTSource(IEnumerable`1 source)
at Unify.Product.IdentityBroker.PollRepositoryChangeDetectionWorker.PostPerformChangeDetection() in S:\Hg\Product\IdentityBroker\IdentityBroker\Source\ChangeDetection\Unify.IdentityBroker.ChangeDetection\PollRepositoryChangeDetectionWorker.cs:line 103
at Unify.Product.IdentityBroker.RepositoryChangeDetectionWorkerBase.PerformChangeDetection(IEnumerable`1 connectorEntities) in S:\Hg\Product\IdentityBroker\IdentityBroker\Source\ChangeDetection\Unify.IdentityBroker.ChangeDetection\RepositoryChangeDetectionWorkerBase.cs:line 105
at Unify.Product.IdentityBroker.ChangeDetectionIdPollJob.RunBase() in S:\Hg\Product\IdentityBroker\IdentityBroker\Source\ChangeDetection\Unify.IdentityBroker.ChangeDetection\ChangeDetectionIdPollJob.cs:line 93

The above error has been fixed. The log correctly shows the number of entities processed, but this is not reflected in the statistics for some reason.

Number of entities correctly displayed, and polling error messages correct. I will move the specific error around the address form to IDBCHRS-34.

Resolving as the issues mentioned since reopening have been addressed.