Cab*_*bal 5 ravendb ravendb-studio
我需要在一段时间后将文档标记为过期,因此我尝试使用 @refresh 功能重新运行订阅并计算我的“过期”标志。我知道有“文档过期”功能,但这个功能会删除我不想要的数据。
我在设置中打开了刷新功能,并在所需文档的元数据中添加了 @refresh UTC 日期时间。例如我手动添加了这个文件:
{
"Name": "My data",
"@metadata": {
"@collection": "Testing",
"@refresh": "2021-04-30T07:41:35.4845961Z"
}
}
Run Code Online (Sandbox Code Playgroud)
看起来我正面临非确定性行为 - 有时会处理刷新有时不会。我尝试了不同的时间组合,并通过代码或 Raven Studio 进行设置。
我在用
在错误跟踪器中没有找到相关问题 https://issues.hibernaterhinos.com/issues/RavenDB?q=document%20refresh
任何想法要检查什么或可能是什么情况?
编辑:打开登录控制台后,我发现了一些错误日志。看起来像
RavendbProject, Raven.Server.Documents.Expiration.ExpiredDocumentsCleaner, Failed to refresh documents on RavendbProject which are older than 05/17/2021 09:48:47, EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object.
RavendbProject | at Sparrow.Server.ByteStringContext`1.From(String value, ByteStringType type, ByteString& str) in C:\Builds\RavenDB-Stable-5.1\51024\src\Sparrow.Server\ByteString.cs:line 1297
RavendbProject | at Raven.Server.Documents.DocumentPutAction.PutDocument(DocumentsOperationContext context, String id, String expectedChangeVector, BlittableJsonReaderObject document, Nullable`1 lastModifiedTicks, String changeVector, DocumentFlags flags, NonPersistentDocumentFlags nonPersistentFlags) in C:\Builds\RavenDB-Stable-5.1\51024\src\Raven.Server\Documents\DocumentPutAction.cs:line 190
Run Code Online (Sandbox Code Playgroud)
另外值得一提的是,我的文档存储在 ClusterWide 事务中,因此我可以在其中一个文档中看到相应的标志:
"@flags": "FromClusterTransaction",
Run Code Online (Sandbox Code Playgroud)
我目前的怀疑是,这些文档之一可能会阻止其他文档的刷新。删除集群事务文档后,集合中的其他文档被刷新
小智 0
与通过集群事务添加的文档相关的错误,目前的解决方法是不使用集群事务。
我在错误跟踪器上提出了一个问题, https://issues.hibernatingrhinos.com/issue/RavenDB-16710
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |