[CSHARP-1640] FirstOrDefaultAsync never return? Created: 27/Apr/16  Updated: 05/Apr/19  Resolved: 18/Aug/16

Status: Closed
Project: C# Driver
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Task Priority: Major - P3
Reporter: tianzhonghai Assignee: Craig Wilson
Resolution: Done Votes: 0
Labels: question
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified


 Description   

MongoDB.Driver 2.2.3
[TestMethod]
public async Task GetAsync()

{ SocialRobotRepository repo = new SocialRobotRepository(); SocialRobotEntity doc = await repo.GetAsync(x => x.RobotId == 11438); }

[CollectionNameAttribute("Ymt_Social_Robot")]
public class SocialRobotEntity : MongoEntityBase
{
public int RobotId

{ get; set; }

public int AdminId { get; set; }

public string AdminName

{ get; set; }

public int UserId { get; set; }

public DateTime CreatedAt

{ get; set; }

public string UserName { get; set; }

public string UserAvatar

{ get; set; }

}

public class SocialRobotRepository:MongoRepository<SocialRobotEntity>
{
}

public class MongoRepository<T> : IMongoRepository<T> where T : MongoEntityBase
{
public async Task<T> GetAsync(Expression<Func<T, bool>> filter)

{ return await collection.Find(filter).FirstOrDefaultAsync(); }

}
=============================
Test Name: GetAsync
Test FullName: Ymatou.Social.Core.Test.DataAccess.MongoRepositoryTest.GetAsync
Test Source: e:\Work\doc\99 个人文件夹\Ymatou.Social.Core\Ymatou.Social.Core.Test\DataAccess\MongoRepositoryTest.cs : line 26
Test Outcome: Failed
Test Duration: 0:00:46.977356

Result Message:
Test method Ymatou.Social.Core.Test.DataAccess.MongoRepositoryTest.GetAsync threw exception:
System.TimeoutException: A timeout occured after 30000ms selecting a server using CompositeServerSelector{ Selectors = ReadPreferenceServerSelector{ ReadPreference =

{ Mode = SecondaryPreferred, TagSets = [] }

}, LatencyLimitingServerSelector

{ AllowedLatencyRange = 00:00:00.0150000 }

}. Client view of cluster state is { ClusterId : "1", ConnectionMode : "ReplicaSet", Type : "ReplicaSet", State : "Disconnected", Servers : [{ ServerId: "

{ ClusterId : 1, EndPoint : "Unspecified/set3a.mongodb.ymatou.com:27017" }

", EndPoint: "Unspecified/set3a.mongodb.ymatou.com:27017", State: "Disconnected", Type: "Unknown" }, { ServerId: "

{ ClusterId : 1, EndPoint : "Unspecified/set3b.mongodb.ymatou.com:27017" }

", EndPoint: "Unspecified/set3b.mongodb.ymatou.com:27017", State: "Disconnected", Type: "Unknown" }] }.
Result StackTrace:
在 MongoDB.Driver.Core.Clusters.Cluster.ThrowTimeoutException(IServerSelector selector, ClusterDescription description)
在 MongoDB.Driver.Core.Clusters.Cluster.WaitForDescriptionChangedHelper.HandleCompletedTask(Task completedTask)
在 MongoDB.Driver.Core.Clusters.Cluster.<WaitForDescriptionChangedAsync>d__44.MoveNext()
— 引发异常的上一位置中堆栈跟踪的末尾 —
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
在 System.Runtime.CompilerServices.ConfiguredTaskAwaitable.ConfiguredTaskAwaiter.GetResult()
在 MongoDB.Driver.Core.Clusters.Cluster.<SelectServerAsync>d__37.MoveNext()
— 引发异常的上一位置中堆栈跟踪的末尾 —
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
在 System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
在 MongoDB.Driver.Core.Bindings.ReadPreferenceBinding.<GetReadChannelSourceAsync>d__8.MoveNext()
— 引发异常的上一位置中堆栈跟踪的末尾 —
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
在 System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
在 MongoDB.Driver.Core.Operations.FindOperation`1.<ExecuteAsync>d__107.MoveNext()
— 引发异常的上一位置中堆栈跟踪的末尾 —
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
在 System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
在 MongoDB.Driver.OperationExecutor.<ExecuteReadOperationAsync>d__1`1.MoveNext()
— 引发异常的上一位置中堆栈跟踪的末尾 —
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
在 System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
在 MongoDB.Driver.MongoCollectionImpl`1.<ExecuteReadOperationAsync>d__59`1.MoveNext()
— 引发异常的上一位置中堆栈跟踪的末尾 —
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
在 System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
在 MongoDB.Driver.IAsyncCursorSourceExtensions.<FirstOrDefaultAsync>d__5`1.MoveNext()
— 引发异常的上一位置中堆栈跟踪的末尾 —
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
在 Ymatou.Social.Core.DataAccess.MongoRepository`1.<GetAsync>d__0.MoveNext() 位置 e:\Work\doc\99 个人文件夹\Ymatou.Social.Core\Ymatou.Social.Core\DataAccess\MongoRepository.cs:行号 32
— 引发异常的上一位置中堆栈跟踪的末尾 —
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
在 Ymatou.Social.Core.Test.DataAccess.MongoRepositoryTest.<GetAsync>d__0.MoveNext() 位置 e:\Work\doc\99 个人文件夹\Ymatou.Social.Core\Ymatou.Social.Core.Test\DataAccess\MongoRepositoryTest.cs:行号 29
— 引发异常的上一位置中堆栈跟踪的末尾 —
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()



 Comments   
Comment by Craig Wilson [ 27/Apr/16 ]

Hi tianzhonghai,

The problem here isn't FirstOrDefaultAsync(). It's that it appears none of your servers are connected, as can be seen in the exception message. Are you having network issues? Is there anyway you could turn on System.Net.Sockets tracing so we can see what is going on at the network level?

Craig

Generated at Wed Feb 07 21:40:14 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.