0
Not a bug

Aurion Position import fails because key has been duplicated

Matthew Woolnough 7 years ago in UNIFYBroker/Aurion updated by anonymous 7 years ago 3

Created a connector for Aurion Positions to match the one if Idb3 & getting a duplicate key error.  I can't see any duplicates in the data when I trace the traffic using Wireshark. 

20170522,22:44:43,UNIFY Identity Broker,Connector,Information,"Request to import all entities from connector.
Request to import all entities from connector Aurion Position.",Normal
20170522,22:44:43,UNIFY Identity Broker,Connector,Information,"Import all entities from connector completed.
Import all entities from connector Aurion Position return 671 entities. Duration: 00:00:00",Normal
20170522,22:44:43,UNIFY Identity Broker,Connector Processor,Information,"Connector Processing started.
Connector Processing started for connector Aurion Position (page 1)",Normal
20170522,22:44:44,UNIFY Identity Broker,Connector Processor,Information,"Connector processing failed.
Connector Processing page 1 for connector Aurion Position failed with reason The key L32190N has been duplicated.. Duration: 00:00:00.2500002. 
Error details:
System.ArgumentException: The key L32190N has been duplicated.
   at Unify.Product.IdentityBroker.EntityRepositoryExtensions.DuplicateKeyBase(MultiKeyValue`1 arg1)
   at Unify.Framework.Collections.EnumerableExtensions.ToDictionaryWithKeyClashError[TKey,TValue,TOriginal](IEnumerable`1 originalEnumerable, Func`2 keySelector, Func`2 valueSelector, Action`3 duplicateAction)
   at Unify.Product.IdentityBroker.EntityRepositoryExtensions.ConvertConnectorEntitiesWithRepositoryEntities(IEnumerable`1 connectorEntities, IMultiKey`1 schemaKey, Func`2 retrieveEntities, Guid connectorId, IEnumerable`1 originalEntities, IHashSet`1 seenKeys)
   at Unify.Product.IdentityBroker.EntityRepositoryExtensions.ConvertConnectorEntitiesWithRepositoryEntities(IEnumerable`1 connectorEntities, IMultiKey`1 schemaKey, IKnownEntityContextBase`3 context, Guid connectorId, IEnumerable`1 originalEntities, IHashSet`1 seenKeys)
   at Unify.Product.IdentityBroker.RepositoryChangeDetectionWorkerBase.PerformChangeDetectionOnConnectorEntityPage(IEnumerable`1 connectorEntities, Int32& index, Int32 entitiesProcessedSoFar, IEntityChangesReportGenerator`2 reportGenerator, IHashSet`1 seenKeys)
   at Unify.Product.IdentityBroker.RepositoryChangeDetectionWorkerBase.<>c__DisplayClass11_0.<performchangedetection>b__0(IEnumerable`1 page)
   at Unify.Framework.Visitor.ThreadsafeVisitorEvaluator`1.ThreadsafeItemEvaluator.Evaluate()",Normal
20170522,22:44:44,UNIFY Identity Broker,Change detection engine,Error,"Change detection engine import all items failed.
Change detection engine import all items for connector Aurion Position failed with reason An error occurred while evaluating a task on a worker thread.  See the inner exception details for information.. Duration: 00:00:10.7189045
Error details:
Unify.Framework.EvaluatorVisitorException: An error occurred while evaluating a task on a worker thread.  See the inner exception details for information. ---> System.ArgumentException: The key L32190N has been duplicated.
   at Unify.Product.IdentityBroker.EntityRepositoryExtensions.DuplicateKeyBase(MultiKeyValue`1 arg1)
   at Unify.Framework.Collections.EnumerableExtensions.ToDictionaryWithKeyClashError[TKey,TValue,TOriginal](IEnumerable`1 originalEnumerable, Func`2 keySelector, Func`2 valueSelector, Action`3 duplicateAction)
   at Unify.Product.IdentityBroker.EntityRepositoryExtensions.ConvertConnectorEntitiesWithRepositoryEntities(IEnumerable`1 connectorEntities, IMultiKey`1 schemaKey, Func`2 retrieveEntities, Guid connectorId, IEnumerable`1 originalEntities, IHashSet`1 seenKeys)
   at Unify.Product.IdentityBroker.EntityRepositoryExtensions.ConvertConnectorEntitiesWithRepositoryEntities(IEnumerable`1 connectorEntities, IMultiKey`1 schemaKey, IKnownEntityContextBase`3 context, Guid connectorId, IEnumerable`1 originalEntities, IHashSet`1 seenKeys)
   at Unify.Product.IdentityBroker.RepositoryChangeDetectionWorkerBase.PerformChangeDetectionOnConnectorEntityPage(IEnumerable`1 connectorEntities, Int32& index, Int32 entitiesProcessedSoFar, IEntityChangesReportGenerator`2 reportGenerator, IHashSet`1 seenKeys)
   at Unify.Product.IdentityBroker.RepositoryChangeDetectionWorkerBase.<>c__DisplayClass11_0.<performchangedetection>b__0(IEnumerable`1 page)
   at Unify.Framework.Visitor.ThreadsafeVisitorEvaluator`1.ThreadsafeItemEvaluator.Evaluate()
   --- End of inner exception stack trace ---
   at Unify.Framework.Visitor.ThreadsafeVisitorEvaluator`1.CheckForException()
   at Unify.Framework.Visitor.ThreadsafeVisitorEvaluator`1.WaitForCompletedThreads()
   at Unify.Framework.Visitor.ThreadsafeVisitorEvaluator`1.Visit()
   at Unify.Framework.Visitor.VisitEvaluateOnThreadPool[T](IEnumerable`1 visitCollection, Action`2 visitor, Int32 maxThreads)
   at Unify.Product.IdentityBroker.RepositoryChangeDetectionWorkerBase.PerformChangeDetection(IEnumerable`1 connectorEntities)
   at Unify.Product.IdentityBroker.ChangeDetectionImportAllJob.ImportAllChangeProcess()
   at Unify.Product.IdentityBroker.ChangeDetectionImportAllJob.RunBase()
   at Unify.Framework.DefinedScopeJobAuditTrailJobDecorator.Run()
   at Unify.Product.IdentityBroker.ConnectorJobExecutor.<>c__DisplayClass30_0.<run>b__0()
   at Unify.Framework.AsynchronousJobExecutor.PerformJobCallback(Object state)",Normal</run></performchangedetection></performchangedetection>


Answer

Answer

The data retrieved by SOAPUI contains 2 positions with the same code as per the error in 5.1.

Has the handling of this scenario in IdB changed? I'm interested to know why 3.1 does not throw an error. 



3.1

communicator uri="http://ultdevapp13.dev.apra.gov.au/aurdev10/servlet/services/ev397_aurion_ws?wsdl" credentials="DefaultCredentials" proxy="Default" timeout="00:05" />
          <securityUser user="unify" password="cut" />
<apiSchema name="AQT_Output" type="Parent" queryId="QRY_UNIFY_POS">


5.1

communicator credentialsOptions="Default" uri="http://ultdevapp13.dev.apra.gov.au/aurdev10/servlet/services/ev397_aurion_ws?wsdl" ignoreCertificateErrorsLevel="None" preauthenticate="false" useDefaultTimeout="false" timeout="PT10M" proxyOptions="None" proxyCredentialsOptions="None" />
        <securityUser user="unify" securePassword="cut==" />
    
<queries>
 <query queryId="QRY_UNIFY_POS" />
</queries>





Answer

The data retrieved by SOAPUI contains 2 positions with the same code as per the error in 5.1.

Has the handling of this scenario in IdB changed? I'm interested to know why 3.1 does not throw an error.