0
Fixed
Entity Search Table Errors
When using v5.3 entity search table (either connector or adapter), i'm running into a couple of errors;
If I attempt to order a column (just by clicking on the header), and any entity in the set has a NULL value for that field, I get this error from datatables:
Error System.AggregateException: One or more errors occurred. ---> Unify.Framework.Client.SwaggerException: The HTTP status code of the response was not expected (500). at Unify.Connect.Web.Client.EntityClient.<searchentitiesasync>d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Unify.Connect.Web.Client.ProfiledEntityClient.<searchentitiesasync>d__4.MoveNext() --- End of inner exception stack trace --- at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) at Unify.Connect.Web.IdentityBrokerEntitySearchController.CurrentEntities(EntityRetrievalInformation`1 information) at Unify.Connect.Web.IdentityBrokerEntitySearchController.<entitydata>d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at lambda_method(Closure , Task ) at System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass34.<begininvokeasynchronousactionmethod>b__33(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<invokeactionmethodfilterasynchronouslyrecursive>b__3c() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass45.<invokeactionmethodfilterasynchronouslyrecursive>b__3e() at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass1e.<>c__DisplayClass28.<begininvokeaction>b__19() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass1e.<begininvokeaction>b__1b(IAsyncResult asyncResult) ---> (Inner Exception #0) HTTP Response: {"Message":"An error has occurred.","ExceptionMessage":"The entity does not contain a value for the XYZ field.","ExceptionType":"Unify.Framework.Collections.GroupedNameValueCollectionMissingFieldException", "StackTrace":" at Unify.Product.IdentityBroker.EntityBase`3.GetValue[TValue](TKey key)\r\n at Unify.Connect.Web.ValueTypeIdentifierEntitySearchUtilityBase`4.<>c__DisplayClass1_0.<orderby>b__0(TEntity item)\r\n at System.Linq.EnumerableSorter`2.ComputeKeys(TElement[] elements, Int32 count)\r\n at System.Linq.EnumerableSorter`1.Sort(TElement[] elements, Int32 count)\r\n at System.Linq.OrderedEnumerable`1.<getenumerator>d__1.MoveNext()\r\n at Unify.Framework.Visitor.Visit[T](IEnumerable`1 visitCollection, Action`2 visitor)\r\n at Unify.Product.IdentityBroker.EntityController.ApplySkipTake(IEnumerable`1 entities, Int32 skip, Int32 take)\r\n at Unify.Product.IdentityBroker.EntityController.ApplySearch(SearchInformation searchInformation, IEnumerable`1 entities, Guid partitionId)\r\n at Unify.Product.IdentityBroker.EntityController.SearchEntities(Guid partitionId, SearchInformation searchInformation)\r\n at lambda_method(Closure , Object , Object[] )\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<getexecutor>b__9(Object instance, Object[] methodParameters)\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ApiControllerActionInvoker.<invokeactionasynccore>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ActionFilterResult.<executeasync>d__2.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.AuthorizationFilterAttribute.<executeauthorizationfilterasynccore>d__2.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<sendasync>d__1.MoveNext()"} Unify.Framework.Client.SwaggerException: The HTTP status code of the response was not expected (500). at Unify.Connect.Web.Client.EntityClient.<searchentitiesasync>d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Unify.Connect.Web.Client.ProfiledEntityClient.<searchentitiesasync>d__4.MoveNext()<---</searchentitiesasync></searchentitiesasync></sendasync></executeauthorizationfilterasynccore></executeasync></invokeactionasynccore></getexecutor></getenumerator></orderby></begininvokeaction></begininvokeaction></invokeactionmethodfilterasynchronouslyrecursive></invokeactionmethodfilterasynchronouslyrecursive></begininvokeasynchronousactionmethod></entitydata></searchentitiesasync></searchentitiesasync>
Likewise, If I attempt to use the "Is-Null" filter on any column (whether they're all populated or not), I get the following error:
Error System.AggregateException: One or more errors occurred. ---> Unify.Framework.Client.SwaggerException: The HTTP status code of the response was not expected (500). at Unify.Connect.Web.Client.EntityClient.<searchentitiesasync>d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Unify.Connect.Web.Client.ProfiledEntityClient.<searchentitiesasync>d__4.MoveNext() --- End of inner exception stack trace --- at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) at Unify.Connect.Web.IdentityBrokerEntitySearchController.CurrentEntities(EntityRetrievalInformation`1 information) at Unify.Connect.Web.IdentityBrokerEntitySearchController.<entitydata>d__35.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at lambda_method(Closure , Task ) at System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass34.<begininvokeasynchronousactionmethod>b__33(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<invokeactionmethodfilterasynchronouslyrecursive>b__3c() at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass45.<invokeactionmethodfilterasynchronouslyrecursive>b__3e() at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass1e.<>c__DisplayClass28.<begininvokeaction>b__19() at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass1e.<begininvokeaction>b__1b(IAsyncResult asyncResult) ---> (Inner Exception #0) HTTP Response: {"Message":"An error has occurred.","ExceptionMessage":"Could not find any resources appropriate for the specified culture or the neutral culture. Make sure \"Unify.Connect.Web.EntityResources.resources\" was correctly embedded or linked into assembly \"Unify.IdentityBroker.Entity.Api.Shared\" at compile time, or that all the satellite assemblies required are loadable and fully signed.","ExceptionType":"System.Resources.MissingManifestResourceException","StackTrace":" at System.Resources.ManifestBasedResourceGroveler.HandleResourceStreamMissing(String fileName)\r\n at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo culture, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackCrawlMark& stackMark)\r\n at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture, Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark)\r\n at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)\r\n at System.Resources.ResourceManager.GetString(String name, CultureInfo culture)\r\n at Unify.Connect.Web.IdentifierEntitySearchUtilityBase`2.GenerateSearchFunction(FilterInformation searchInformation, IDictionary`2 schema)\r\n at Unify.Product.IdentityBroker.EntityController.ApplyFilter(IEnumerable`1 entities, FilterInformation filterInformation, Guid partitionId)\r\n at Unify.Product.IdentityBroker.EntityController.<>c__DisplayClass8_0.<applyfilter>b__0(IEnumerable`1 filtered, FilterInformation filter)\r\n at System.Linq.Enumerable.Aggregate[TSource,TAccumulate](IEnumerable`1 source, TAccumulate seed, Func`3 func)\r\n at Unify.Product.IdentityBroker.EntityController.ApplySearch(SearchInformation searchInformation, IEnumerable`1 entities, Guid partitionId)\r\n at Unify.Product.IdentityBroker.EntityController.SearchEntities(Guid partitionId, SearchInformation searchInformation)\r\n at lambda_method(Closure , Object , Object[] )\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<getexecutor>b__9(Object instance, Object[] methodParameters)\r\n at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ApiControllerActionInvoker.<invokeactionasynccore>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Controllers.ActionFilterResult.<executeasync>d__2.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Filters.AuthorizationFilterAttribute.<executeauthorizationfilterasynccore>d__2.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<sendasync>d__1.MoveNext()"} Unify.Framework.Client.SwaggerException: The HTTP status code of the response was not expected (500). at Unify.Connect.Web.Client.EntityClient.<searchentitiesasync>d__8.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Unify.Connect.Web.Client.ProfiledEntityClient.<searchentitiesasync>d__4.MoveNext()<---</searchentitiesasync></searchentitiesasync></sendasync></executeauthorizationfilterasynccore></executeasync></invokeactionasynccore></getexecutor></applyfilter></begininvokeaction></begininvokeaction></invokeactionmethodfilterasynchronouslyrecursive></invokeactionmethodfilterasynchronouslyrecursive></begininvokeasynchronousactionmethod></entitydata></searchentitiesasync></searchentitiesasync>
I can seem to use other filters (such as "contains") on columns with null values no worries.
Replicated on both connector and adapter, on two machines. V5.3.0RTM
Customer support service by UserEcho
Hi Matt
Place the following in
Web/bin
to resolve the IsNull filter issue: Unify.Connect.Web.dllPlace the following in
Services/
to resolve the ordering with nulls issue: Unify.IdentityBroker.Entity.Api.Shared.dllHi Beau,
Thanks for those patches. I can confirm that the IsNull filter issue is fixed.
The ordering with nulls issue seems to still be around, but i'm getting a different error message:
The source of the above exception was moved from Unify.Product.Api to Unify.Product.Api.Shared for 5.3.1 so here's a couple of options.
First is the same fix above compiled against v5.3.0: Unify.IdentityBroker.Entity.Api.Shared.dll
Second, if the first doesn't work, both 5.3.1 version Api dlls: Unify.IdentityBroker.Entity.Api.Shared.dll Unify.IdentityBroker.Entity.Api.dll
Another patch. This one should fix the null reference exception. Use it with the Unify.IdentityBroker.Entity.Api.dll from above, if you don't still have it installed.
Unify.IdentityBroker.Entity.Api.Shared.dll
Thanks Beau, I can confirm that the patches work and have resolved the issue.
Hi Beau,
I'm running into this problem again, however seems to be in a slightly different context:
The field that i'm trying to filter on is generated using a Time Offset transformation. I can browse the table fine, and I can filter on the column using the "is-null" filter. The normal value filter seems to work fine as well. However if I try and order the column, I get the above error.
I've got the patches still installed as attached previously in the ticket.
Updated patch with timestamp ordering fix: Unify.IdentityBroker.Entity.Api.Shared.dll
Hi Beau,
Apologies for the delay on returning this for you. I can confirm that the patch fixes the issue with ordering.