-
Notifications
You must be signed in to change notification settings - Fork 48
Closed
Description
So in RegisterEndpointHandler we have
knownEndpoint = session.Query<KnownEndpoint, KnownEndpointIndex>()
.SingleOrDefault(e =>
e.EndpointDetails.Name == message.Endpoint.Name &&
e.EndpointDetails.Host == message.Endpoint.Host);
But because multiple endpoints can be deployed to the same host there could be multiple KnownEndpoint with the same Endpoint.Name and EndpointDetails.Host. So the session.Query returns more than 1 and SingleOrDefault blows up
message content
???[{
"$type":"ServiceControl.EndpointControl.InternalMessages.RegisterEndpoint, ServiceControl",
"EndpointInstanceId":"00000000-0000-0000-0000-000000000000",
"Endpoint":{
"Name":"XXX","HostId":"83078d7e-38ca-37ca-d3d3-98d5d836a3d6",
"Host":"YYY"},
"DetectedAt":"2014-05-26T03:30:48.3247685Z"
}]
exception
System.InvalidOperationException: Sequence contains more than one element
at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source)
at Raven.Client.Linq.RavenQueryProviderProcessor`1.GetQueryResult[TProjection](IDocumentQuery`1 finalQuery) in c:\Builds\RavenDB-Unstable-v2.5-New\Raven.Client.Lightweight\Linq\RavenQueryProviderProcessor.cs:line 1604
at Raven.Client.Linq.RavenQueryProviderProcessor`1.ExecuteQuery[TProjection]() in c:\Builds\RavenDB-Unstable-v2.5-New\Raven.Client.Lightweight\Linq\RavenQueryProviderProcessor.cs:line 1532
at Raven.Client.Linq.RavenQueryProvider`1.System.Linq.IQueryProvider.Execute[S](Expression expression) in c:\Builds\RavenDB-Unstable-v2.5-New\Raven.Client.Lightweight\Linq\RavenQueryProvider.cs:line 198
at System.Linq.Queryable.SingleOrDefault[TSource](IQueryable`1 source, Expression`1 predicate)
at ServiceControl.EndpointControl.Handlers.RegisterEndpointHandler.Handle(RegisterEndpoint message) in c:\BuildAgent\work\b7f882efc2cd360b\src\ServiceControl\EndpointControl\Handlers\RegisterEndpointHandler.cs:line 31
at NServiceBus.Unicast.HandlerInvocationCache.Invoke(Object handler, Object message, Dictionary`2 dictionary) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\Unicast\HandlerInvocationCache.cs:line 63
at NServiceBus.Unicast.Behaviors.InvokeHandlersBehavior.Invoke(HandlerInvocationContext context, Action next) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\Unicast\Behaviors\InvokeHandlersBehavior.cs:line 29
at NServiceBus.Sagas.SagaPersistenceBehavior.Invoke(HandlerInvocationContext context, Action next) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\Sagas\SagaPersistenceBehavior.cs:line 32
at NServiceBus.Sagas.AuditInvokedSagaBehavior.Invoke(HandlerInvocationContext context, Action next) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\Sagas\AuditInvokedSagaBehavior.cs:line 18
at NServiceBus.Unicast.Behaviors.SetCurrentMessageBeingHandledBehavior.Invoke(HandlerInvocationContext context, Action next) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\Unicast\Behaviors\SetCurrentMessageBeingHandledBehavior.cs:line 21
at NServiceBus.Pipeline.PipelineExecutor.Execute[T](BehaviorChain`1 pipelineAction, T context) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\Pipeline\PipelineExecutor.cs:line 135
at NServiceBus.Unicast.Behaviors.LoadHandlersBehavior.Invoke(ReceiveLogicalMessageContext context, Action next) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\Unicast\Behaviors\LoadHandlersBehavior.cs:line 37
at NServiceBus.DataBus.DataBusReceiveBehavior.Invoke(ReceiveLogicalMessageContext context, Action next) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\DataBus\DataBusReceiveBehavior.cs:line 68
at NServiceBus.Pipeline.MessageMutator.ApplyIncomingMessageMutatorsBehavior.Invoke(ReceiveLogicalMessageContext context, Action next) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\MessageMutator\ApplyIncomingMessageMutatorsBehavior.cs:line 25
at ServiceControl.Infrastructure.RavenDB.RavenUnitOfWorkBehavior.Invoke(ReceiveLogicalMessageContext context, Action next) in c:\BuildAgent\work\b7f882efc2cd360b\src\ServiceControl\Infrastructure\RavenDB\RavenUnitOfWorkBehavior.cs:line 26
at NServiceBus.Pipeline.PipelineExecutor.Execute[T](BehaviorChain`1 pipelineAction, T context) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\Pipeline\PipelineExecutor.cs:line 135
at NServiceBus.Unicast.Messages.ExecuteLogicalMessagesBehavior.Invoke(ReceivePhysicalMessageContext context, Action next) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\Unicast\Messages\ExecuteLogicalMessagesBehavior.cs:line 28
at NServiceBus.Unicast.Behaviors.CallbackInvocationBehavior.Invoke(ReceivePhysicalMessageContext context, Action next) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\Unicast\Behaviors\CallbackInvocationBehavior.cs:line 26
at NServiceBus.Unicast.Messages.ExtractLogicalMessagesBehavior.Invoke(ReceivePhysicalMessageContext context, Action next) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\Unicast\Messages\ExtractLogicalMessagesBehavior.cs:line 58
at NServiceBus.Sagas.RemoveIncomingHeadersBehavior.Invoke(ReceivePhysicalMessageContext context, Action next) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\Sagas\RemoveIncomingHeadersBehavior.cs:line 23
at NServiceBus.MessageMutator.ApplyIncomingTransportMessageMutatorsBehavior.Invoke(ReceivePhysicalMessageContext context, Action next) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\MessageMutator\ApplyIncomingTransportMessageMutatorsBehavior.cs:line 22
at NServiceBus.UnitOfWork.UnitOfWorkBehavior.Invoke(ReceivePhysicalMessageContext context, Action next) in c:\BuildAgent\work\31f8c64a6e8a2d7c\src\NServiceBus.Core\UnitOfWork\UnitOfWorkBehavior.cs:line 24