【问题标题】:DocumentDB client 1.14 kills running processDocumentDB 客户端 1.14 终止正在运行的进程
【发布时间】:2017-05-15 17:31:53
【问题描述】:

将 DocumentDB 客户端升级到版本 1.14.0(CosmosDB 更改)后,我的应用程序在 Azure 作为云服务运行时意外终止。 我在本地针对最新版本的模拟器运行它没有问题。 在本地针对 Azure CosmosDB 实例运行它时,我也没有遇到任何问题。这似乎表明云服务环境存在一些问题(降级到以前的版本 1.13.4 有效)。

以下是事件日志中的错误:

Faulting application name: Application.exe, version: 1.0.21.0, time stamp: 0x59196ef2
Faulting module name: DocumentDB.Spatial.Sql.dll, version: 1.14.8.3, time stamp: 0x59125a74
Exception code: 0xc000001d
Fault offset: 0x0000000000074753
Faulting process id: 0x1754
Faulting application start time: 0x01d2cd9ce28ddb4f
Faulting application path: C:\Resources\directory\08707c89190040c7b18ae72ed40addee.Host.LocalStoreDirectory\orleans-backend\1.0.21\Application.exe
Faulting module path: C:\Resources\directory\08707c89190040c7b18ae72ed40addee.Host.LocalStoreDirectory\orleans-backend\1.0.21\DocumentDB.Spatial.Sql.dll
Report Id: da991426-1eff-4d89-bf21-118198848fef
Faulting package full name: 
Faulting package-relative application ID: 

Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Runtime.InteropServices.SEHException
   at Microsoft.Azure.Documents.ServiceInteropWrapper.GetPartitionKeyRangesFromQuery(IntPtr, System.String, Boolean, Boolean, System.String[], UInt32[], UInt32, Microsoft.Azure.Documents.PartitionKind, IntPtr, UInt32, UInt32 ByRef)
   at Microsoft.Azure.Documents.Query.QueryPartitionProvider.GetPartitionedQueryExecutionInfoInternal(Microsoft.Azure.Documents.SqlQuerySpec, Microsoft.Azure.Documents.PartitionKeyDefinition, Boolean, Boolean)
   at Microsoft.Azure.Documents.Routing.PartitionRoutingHelper.GetProvidedPartitionKeyRanges(Microsoft.Azure.Documents.SqlQuerySpec, Boolean, Boolean, Boolean, Microsoft.Azure.Documents.PartitionKeyDefinition, Microsoft.Azure.Documents.Query.QueryPartitionProvider, System.String, Microsoft.Azure.Documents.Query.QueryInfo ByRef)
   at Microsoft.Azure.Documents.Query.DefaultDocumentQueryExecutionContext+<TryGetTargetPartitionKeyRangeAsync>d__23.MoveNext()
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Start[[Microsoft.Azure.Documents.Query.DefaultDocumentQueryExecutionContext+<TryGetTargetPartitionKeyRangeAsync>d__23, Microsoft.Azure.Documents.Client, Version=1.14.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]](<TryGetTargetPartitionKeyRangeAsync>d__23 ByRef)
   at Microsoft.Azure.Documents.Query.DefaultDocumentQueryExecutionContext.TryGetTargetPartitionKeyRangeAsync(Microsoft.Azure.Documents.DocumentServiceRequest, Microsoft.Azure.Documents.DocumentCollection, Microsoft.Azure.Documents.Query.QueryPartitionProvider, Microsoft.Azure.Documents.Routing.IRoutingMapProvider, Microsoft.Azure.Documents.Routing.Range`1<System.String>, System.Collections.Generic.List`1<Microsoft.Azure.Documents.Query.CompositeContinuationToken>)
   at Microsoft.Azure.Documents.Query.DefaultDocumentQueryExecutionContext+<ExecuteOnceAsync>d__f.MoveNext()
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Start[[Microsoft.Azure.Documents.Query.DefaultDocumentQueryExecutionContext+<ExecuteOnceAsync>d__f, Microsoft.Azure.Documents.Client, Version=1.14.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]](<ExecuteOnceAsync>d__f ByRef)
   at Microsoft.Azure.Documents.Query.DefaultDocumentQueryExecutionContext.ExecuteOnceAsync(Microsoft.Azure.Documents.IDocumentClientRetryPolicy, System.Threading.CancellationToken)
   at Microsoft.Azure.Documents.Query.DefaultDocumentQueryExecutionContext+<>c__DisplayClass2+<<ExecuteInternalAsync>b__1>d__4.MoveNext()
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Start[[Microsoft.Azure.Documents.Query.DefaultDocumentQueryExecutionContext+<>c__DisplayClass2+<<ExecuteInternalAsync>b__1>d__4, Microsoft.Azure.Documents.Client, Version=1.14.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]](<<ExecuteInternalAsync>b__1>d__4 ByRef)
   at Microsoft.Azure.Documents.Query.DefaultDocumentQueryExecutionContext+<>c__DisplayClass2.<ExecuteInternalAsync>b__1()
   at Microsoft.Azure.Documents.BackoffRetryUtility`1+<>c__DisplayClass2+<<ExecuteAsync>b__0>d__4[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].MoveNext()
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Start[[Microsoft.Azure.Documents.BackoffRetryUtility`1+<>c__DisplayClass2+<<ExecuteAsync>b__0>d__4[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], Microsoft.Azure.Documents.Client, Version=1.14.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]](<<ExecuteAsync>b__0>d__4<System.__Canon> ByRef)
   at Microsoft.Azure.Documents.BackoffRetryUtility`1+<>c__DisplayClass2[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].<ExecuteAsync>b__0()
   at Microsoft.Azure.Documents.BackoffRetryUtility`1+<ExecuteRetry>d__1b[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].MoveNext()
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Start[[Microsoft.Azure.Documents.BackoffRetryUtility`1+<ExecuteRetry>d__1b[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], Microsoft.Azure.Documents.Client, Version=1.14.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]](<ExecuteRetry>d__1b<System.__Canon> ByRef)
   at Microsoft.Azure.Documents.BackoffRetryUtility`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].ExecuteRetry(System.Func`1<System.Threading.Tasks.Task`1<System.__Canon>>, System.Func`3<System.Exception,System.Threading.CancellationToken,System.Threading.Tasks.Task`1<Microsoft.Azure.Documents.ShouldRetryResult>>, System.Threading.CancellationToken, System.Action`1<System.Exception>)
   at Microsoft.Azure.Documents.BackoffRetryUtility`1+<ExecuteAsync>d__a[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].MoveNext()
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Start[[Microsoft.Azure.Documents.BackoffRetryUtility`1+<ExecuteAsync>d__a[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], Microsoft.Azure.Documents.Client, Version=1.14.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]](<ExecuteAsync>d__a<System.__Canon> ByRef)
   at Microsoft.Azure.Documents.BackoffRetryUtility`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].ExecuteAsync(System.Func`1<System.Threading.Tasks.Task`1<System.__Canon>>, Microsoft.Azure.Documents.IRetryPolicy, System.Threading.CancellationToken, System.Action`1<System.Exception>)
   at Microsoft.Azure.Documents.Query.DefaultDocumentQueryExecutionContext+<ExecuteInternalAsync>d__8.MoveNext()
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Start[[Microsoft.Azure.Documents.Query.DefaultDocumentQueryExecutionContext+<ExecuteInternalAsync>d__8, Microsoft.Azure.Documents.Client, Version=1.14.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]](<ExecuteInternalAsync>d__8 ByRef)
   at Microsoft.Azure.Documents.Query.DefaultDocumentQueryExecutionContext.ExecuteInternalAsync(System.Threading.CancellationToken)
   at Microsoft.Azure.Documents.Query.DocumentQueryExecutionContextBase+<ExecuteNextAsync>d__4.MoveNext()
   at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Start[[Microsoft.Azure.Documents.Query.DocumentQueryExecutionContextBase+<ExecuteNextAsync>d__4, Microsoft.Azure.Documents.Client, Version=1.14.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]](<ExecuteNextAsync>d__4 ByRef)
   at Microsoft.Azure.Documents.Query.DocumentQueryExecutionContextBase.ExecuteNextAsync(System.Threading.CancellationToken)
   at Microsoft.Azure.Documents.Linq.DocumentQuery`1+<ExecuteNextPrivateAsync>d__2d`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].MoveNext()

我遇到了另一个相关问题:针对最新的本地模拟器运行 DocumendDB 客户端 1.13.4 时,我得到以下异常:

Newtonsoft.Json.JsonReaderException
{"Unexpected character encountered while parsing value: ≻. Path '', line 0, position 0."}
   at Newtonsoft.Json.JsonTextReader.ParseValue()
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader, JsonContract contract, Boolean hasConverter)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
   at Microsoft.Azure.Documents.Query.QueryPartitionProvider.GetPartitionedQueryExecutionInfoInternal(SqlQuerySpec querySpec, PartitionKeyDefinition partitionKeyDefinition, Boolean requireFormattableOrderByQuery, Boolean isContinuationExpected)
   at Microsoft.Azure.Documents.Routing.PartitionRoutingHelper.GetProvidedPartitionKeyRanges(SqlQuerySpec querySpec, Boolean enableCrossPartitionQuery, Boolean parallelizeCrossPartitionQuery, Boolean isContinuationExpected, PartitionKeyDefinition partitionKeyDefinition, QueryPartitionProvider queryPartitionProvider, String clientApiVersion, QueryInfo& queryInfo)
   at Microsoft.Azure.Documents.Query.DefaultDocumentQueryExecutionContext.<TryGetTargetPartitionKeyRangeAsync>d__1e.MoveNext()
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Azure.Documents.Query.DefaultDocumentQueryExecutionContext.<ExecuteOnceAsync>d__a.MoveNext()

显然在处理分区键方面发生了重大变化。

【问题讨论】:

  • 您似乎找到了解决此问题的解决方法。它可能是最新的 DocumentDB 客户端库的兼容性,我会报告这个问题。另外,您可以添加您的问题here
  • 我在 azure webjob 中使用 1.14.0,同样的问题。降级到 1.13.4 现在解决了它。显然这是不好的集成测试。仅在 azure 网站/作业中运行时才会发生这种情况的原因是什么?
  • @vip32 不知道,我们还没有收到 DocumentDB 团队的任何回复
  • 更新:DocumentDB 团队正在积极调查这个问题,并将报告 github 问题(上面的链接)

标签: azure azure-cosmosdb azure-cloud-services


【解决方案1】:

这是 DocumentDB SDK 的问题:

总而言之,我们在不支持 SSE4 指令的 x64 机器上的 .NET SDK v1.14.0 版本中发现了一个关键问题。我们正在开发补丁,但同时请使用https://www.nuget.org/packages/Microsoft.Azure.DocumentDB/1.13.4 或更早版本。当补丁可用时,我们会发布更新。

该问题已在 1.14.1 中修复

https://www.nuget.org/packages/Microsoft.Azure.DocumentDB/1.14.1

【讨论】:

  • 非常感谢!这也解决了我的问题。对于其他人,当调用针对 Cosmo DB 执行查询的 Web API 方法时,我的错误导致消息“指定的 CGI 应用程序遇到错误并且服务器终止了进程”。如果你看到了,试试 Jakub 提到的 1.14.1 包
【解决方案2】:

我也遇到过同样的问题。对我来说,它只在调用 IDocumentQuery.ExecuteNextAsync 时发生。

添加新文档并获取单个文档可以正常工作。

正如你提到的,我在这里报告了它,Jakub: https://github.com/Azure/azure-documentdb-dotnet/issues/259

【讨论】:

  • 在我看来客户端没有得到正确测试,因为我们遇到了基本功能问题
猜你喜欢
  • 2021-07-26
  • 1970-01-01
  • 2020-10-13
  • 2020-06-03
  • 2013-05-27
  • 1970-01-01
  • 2018-02-14
  • 2023-03-11
  • 2016-10-28
相关资源
最近更新 更多