0
Fixed
An import to Identity Broker fails due to a NullReferenceException
The inclusion of a Relational.Composite adapter tranformation causes a FIM-instigated full import (adapter) to fail with the following exception:
Log Name: UNIFY.IdB.PeopleSoft Source: Adapter get all entities for adapter failed. Date: 3/10/2012 11:50:00 AM Event ID: 0 Task Category: None Level: Warning Keywords: Classic User: N/A Computer: D-OCCCP-AS001.dbb.local Description: Error occurred in module: Adapter Adapter get all entities for adapter 5db0f5e1-a032-450a-9415-fa4863f171da failed with reason Object reference not set to an instance of an object.. Duration: 00:00:40.8116688 Error details: System.NullReferenceException: Object reference not set to an instance of an object. at Unify.Framework.ArrayEqualityComparer`1.GetHashCode(T[] obj) at Unify.Framework.MultiKeyValue.GetHashCode() at System.Collections.Generic.GenericEqualityComparer`1.GetHashCode(T obj) at System.Linq.Set`1.InternalGetHashCode(TElement value) at System.Linq.Set`1.Find(TElement value, Boolean add) at System.Linq.Set`1.Add(TElement value) at System.Linq.Enumerable.<DistinctIterator>d__7a`1.MoveNext() at System.Linq.Enumerable.Count[TSource](IEnumerable`1 source) at Unify.Repository.EntityExpressionQueryVisitor`3.CreateMultiValueRangeExpression(IMultiKey`1 multiKey, IEnumerable`1 sourceValueList, IQueryable`1 sourceQueryable) at Unify.Repository.EntityExpressionQueryVisitor`3.VisitMethodWhereWithMultiValueEnumerableContains(MethodCallExpression expression) at Unify.Repository.EntityExpressionQueryVisitor`3.VisitMethodCall(MethodCallExpression m) at Unify.Framework.ExpressionVisitorBase`11.Visit(Expression exp) at Unify.Framework.LinqContextConversionExpressionVisitorBase`5.ConvertExpression(Expression partitionExpression) at Unify.Framework.LinqQueryConversionProvider`5.GetOrderedQuery(Expression businessExpression, IQueryable`1 sourceQueryable, TContext sourceContext) at Unify.Framework.LinqWhereQuery`5.EvaluateQuery(TContext context) at Unify.Framework.LinqWhereQuery`5.GetEnumerator() at System.Linq.Lookup`2.Create[TSource](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer) at System.Linq.Enumerable.ToLookup[TSource,TKey](IEnumerable`1 source, Func`2 keySelector) at Unify.Framework.EntityCompositeKeyDistinguishedNameStaticRelationValueAdapterBase.Transform(IEnumerable`1 sourceValue) at Unify.Framework.ChainValueAdapter`3.Transform(TBaseValue baseValue) at System.Linq.Enumerable.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSource x) at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at Unify.Framework.EnumerableExtensions.<ActionOnLast>d__16`1.MoveNext() at System.Linq.Enumerable.<SelectManyIterator>d__14`2.MoveNext() at Unify.Framework.EnumerableExtensions.<ActionOnLast>d__16`1.MoveNext() at System.Linq.Enumerable.<SelectManyIterator>d__14`2.MoveNext() at Unify.Framework.EnumerableExtensions.<ActionOnFirst>d__1c`1.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at Unify.Framework.ActionOnExceptionEnumerator`1.MoveNext() at Unify.Framework.EnumerableExtensions.<ActionOnLast>d__16`1.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at System.Linq.Enumerable.<SelectManyIterator>d__14`2.MoveNext() at System.Linq.Enumerable.<ConcatIterator>d__71`1.MoveNext() at Unify.Framework.LDIFComponentFileGenerator`1.GenerateFile(TextWriter writer, IEnumerable`1 entries) at Unify.Framework.LDIFAdapter.<>c__DisplayClass7`1.<CreateLDIFComponentStream>b__6(Stream stream) at Unify.Framework.LazyEvaluationStream.Evaluate(Object obj) Event Xml: <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System> <Provider Name="Adapter get all entities for adapter failed." /> <EventID Qualifiers="0">0</EventID> <Level>3</Level> <Task>0</Task> <Keywords>0x80000000000000</Keywords> <TimeCreated SystemTime="2012-10-03T01:50:00.000000000Z" /> <EventRecordID>1364406</EventRecordID> <Channel>UNIFY.IdB.PeopleSoft</Channel> <Computer>D-OCCCP-AS001.dbb.local</Computer> <Security /> </System> <EventData> <Data>Error occurred in module: Adapter Adapter get all entities for adapter 5db0f5e1-a032-450a-9415-fa4863f171da failed with reason Object reference not set to an instance of an object.. Duration: 00:00:40.8116688 Error details: System.NullReferenceException: Object reference not set to an instance of an object. at Unify.Framework.ArrayEqualityComparer`1.GetHashCode(T[] obj) at Unify.Framework.MultiKeyValue.GetHashCode() at System.Collections.Generic.GenericEqualityComparer`1.GetHashCode(T obj) at System.Linq.Set`1.InternalGetHashCode(TElement value) at System.Linq.Set`1.Find(TElement value, Boolean add) at System.Linq.Set`1.Add(TElement value) at System.Linq.Enumerable.<DistinctIterator>d__7a`1.MoveNext() at System.Linq.Enumerable.Count[TSource](IEnumerable`1 source) at Unify.Repository.EntityExpressionQueryVisitor`3.CreateMultiValueRangeExpression(IMultiKey`1 multiKey, IEnumerable`1 sourceValueList, IQueryable`1 sourceQueryable) at Unify.Repository.EntityExpressionQueryVisitor`3.VisitMethodWhereWithMultiValueEnumerableContains(MethodCallExpression expression) at Unify.Repository.EntityExpressionQueryVisitor`3.VisitMethodCall(MethodCallExpression m) at Unify.Framework.ExpressionVisitorBase`11.Visit(Expression exp) at Unify.Framework.LinqContextConversionExpressionVisitorBase`5.ConvertExpression(Expression partitionExpression) at Unify.Framework.LinqQueryConversionProvider`5.GetOrderedQuery(Expression businessExpression, IQueryable`1 sourceQueryable, TContext sourceContext) at Unify.Framework.LinqWhereQuery`5.EvaluateQuery(TContext context) at Unify.Framework.LinqWhereQuery`5.GetEnumerator() at System.Linq.Lookup`2.Create[TSource](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer) at System.Linq.Enumerable.ToLookup[TSource,TKey](IEnumerable`1 source, Func`2 keySelector) at Unify.Framework.EntityCompositeKeyDistinguishedNameStaticRelationValueAdapterBase.Transform(IEnumerable`1 sourceValue) at Unify.Framework.ChainValueAdapter`3.Transform(TBaseValue baseValue) at System.Linq.Enumerable.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSource x) at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at Unify.Framework.EnumerableExtensions.<ActionOnLast>d__16`1.MoveNext() at System.Linq.Enumerable.<SelectManyIterator>d__14`2.MoveNext() at Unify.Framework.EnumerableExtensions.<ActionOnLast>d__16`1.MoveNext() at System.Linq.Enumerable.<SelectManyIterator>d__14`2.MoveNext() at Unify.Framework.EnumerableExtensions.<ActionOnFirst>d__1c`1.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at Unify.Framework.ActionOnExceptionEnumerator`1.MoveNext() at Unify.Framework.EnumerableExtensions.<ActionOnLast>d__16`1.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext() at System.Linq.Enumerable.<SelectManyIterator>d__14`2.MoveNext() at System.Linq.Enumerable.<ConcatIterator>d__71`1.MoveNext() at Unify.Framework.LDIFComponentFileGenerator`1.GenerateFile(TextWriter writer, IEnumerable`1 entries) at Unify.Framework.LDIFAdapter.<>c__DisplayClass7`1.<CreateLDIFComponentStream>b__6(Stream stream) at Unify.Framework.LazyEvaluationStream.Evaluate(Object obj)</Data> </EventData> </Event>
The following is the adapter configuration which triggered the problem:
<adapter name="Relational.Composite" RelationshipConnectorId="{2030B82B-BCE1-40DD-A1EE-09C9F0DC66C6}" > <Relationships> <Relationship InputKey="SalAdminPlan" RelationshipKey="SalAdminPlan" /> <Relationship InputKey="Grade" RelationshipKey="Grade" /> </Relationships> <dn target="Grades"> <dnComponent name="Field" key="Grade" attributeType="CN" /> <dnComponent name="Constant" value="Grades" attributeType="OU" /> <dnComponent name="Field" key="SalAdminPlan" attributeType="CN" /> <dnComponent name="Constant" value="Plans" attributeType="OU" /> </dn> </adapter>
The generated full import of the adapter minus the above transformation would have been attached for reference had the subsequent full import attempt not failed with a timeout exceeded exteption (see comments), as I am suspecting null data values may not be being handled in the hash function call.
1000.jobs.evtx
Installed.png
PlatformDetails.txt
Unify.Framework.AdapterEntityTransformation.dll
Unify.Framework.Collections.dll
Customer support service by UserEcho
Subsequent full import failure:
Is this timeout influenced by any adapter/app config timout setting Adam?
Please try with Unify.Framework.Collections.dll, this should stop the null reference.
Attached output of PlatformDetails.ps1 script
No joy Adam - downloaded the DLL, uncommented that transform, restarted the service and ran a full import:
Increased app.config timeouts to 30 mins, renamed the DLL and re-commented the section, then restarted the service and trying another full import to see if I can get a clean one minus this attribute for now ...
Full import succeeded minus that offending transform
That looks like it's helped, good.
Unify.Framework.AdapterEntityTransformation.dll migrates a v4 update for the transformation. Let me know how it goes.
OK Adam - but I had to remove the first DLL above and keep the code commented. I'll leave it out and try the new v4 DLL now, cos the first DLL introduced a new bug (above).
The first dll did not introduce a new bug, it exposed an existing one.
It worked (with both)!!! OK so now does that create a problem for deployment? Can you include the above fix in a 3.* MSI, or should we deploy it and patch like in UAT?
I don't want to have version and deployment issues, and we are trying to improve our release management.
I hope to release a v3.0.8 shortly. I just have to schedule time for testing.
Uninstalled IdB for Peoplesoft and IdB service, cleaned out Services folder of all DLLs (except 3 SAS2IDM ones), and reinstalled service together with new 3.0.0.8 PeopleSoft MSI (twice to be sure to be sure).
Assigned the correct service account identity to the service and attempted to start ... got the following exception:
Does that mean there's a db corruption?
Adam - Ryan was caught up with WorkCover so I went ahead with this. Can you please help?
Screenshot of installed IdB versions attached
The issues has already been fixed in
IDB-116.Either manually clear the database, or delete it and start again.
version 3.0.0.9 appears to have solved all problems identified in this issue (including incorporating an IdB 4 feature) ... will close when testing is complete
This issue has not been updated for two weeks, and is still not closed. Update the issue with the current status or progress the issue.
This issue has not been updated in two weeks. Please provide a status update or transition the issue to the correct state.
Closed due to there being no further evidence of the issue - will reopen if it reappears during formal UAT (which has been delayed due to PHRIS timeframe shifts).