0

运行一个简单的查询,比如对一个小表进行选择,然后我得到结果;使用更复杂的查询执行相同的代码,它会因任务取消异常而出错。

        var executeSqlRequest = service.Projects.Instances.Databases.Sessions.ExecuteStreamingSql(
            new Google.Apis.Spanner.v1.Data.ExecuteSqlRequest()
                { Sql = sql_text, QueryMode= "NORMAL" },
            session);

        PartialResultSet resultSet = await executeSqlRequest.ExecuteAsync();

通过 lib 进行调试的更多信息 - 看起来套接字在仍在使用时被释放,并且访问它导致任务被取消:

System.ObjectDisposedException 发生消息:抛出异常:System.dll 中的“System.ObjectDisposedException”附加信息:无法访问已处置的对象。

System.IO.IOException 发生消息:抛出异常:System.dll 中的“System.IO.IOException”附加信息:无法从传输连接读取数据:无法访问已处置的对象。对象名称:'System.Net.Sockets.Socket'..

从客户端代码调试:

一个任务被取消了。{“ClassName”:“System.Threading.Tasks.TaskCanceledException”,“Message”:“任务已取消。”,“Data”:null,“InnerException”:null,“HelpURL”:null,“StackTraceString”:“在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 Google.Apis.Requests.ClientServiceRequest 1.d__27.MoveNext( )\r\n--- 从先前引发异常的位置结束堆栈跟踪 ---\r\n 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n1.<ExecuteUnparsedAsync>d__30.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.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at Google.Apis.Requests.ClientServiceRequest

在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)\r\n 在 Google.Apis.Requests.ClientServiceRequest 1.GetResult()\ r\n 在 C:\Users\Dave\Documents\Visual Studio 2015\Projects\SpannerConsoleApp\SpannerConsoleApp\Program.cs:line 257 中的 Discovery.ListAPIs.Program.d__10.MoveNext() 处", "RemoteStackTraceString": null, " RemoteStackIndex”:0, “ExceptionMethod”:“8\nThrowForNonSuccess\nmscorlib,版本=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089\nSystem.Runtime.CompilerServices.TaskAwaiter\nVoid ThrowForNonSuccess(System.Threading.Tasks.Task)” ,“HResult”:-2146233029,“来源”:“mscorlib", "WatsonBuckets": null }---1.<ExecuteAsync>d__26.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.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter

4

0 回答 0