ravendbravendb-studio

RavenDb: Document Refresh feature does not run at nor after the specified time by @refresh flag


I need to mark documets as expired after some time and therefore I am trying to use @refresh feature to re-run subscription and to compute my 'expired' flag. I know there is 'Document expiration' feature but this one removes data which I don't want.

I have turned Refresh feature in settings and added @refresh UTC datetime in metadata for required documents. For example I added manually this document:

{
    "Name": "My data",
    "@metadata": {
        "@collection": "Testing",
        "@refresh": "2021-04-30T07:41:35.4845961Z"
    }
}

It looks like I am facing non deterministic behavior - sometimes refresh is processed sometimes not. I tried with different combinations of times and set through code or via Raven Studio.

Refresh interval is set to refresh but still says "in less than a minute"

I am using

Did not find related issue in bug tracker https://issues.hibernatingrhinos.com/issues/RavenDB?q=document%20refresh

Any ideas what to check or what might be the case?


EDIT: After turned logging into console I found some error log. It looks like

 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

Also worth mentioning is that my document was stored in ClusterWide transaction and thus I can see in one of my documents corresponding flag:

"@flags": "FromClusterTransaction",

My current suspicion is that it may happen that one of these documents prevented other documents from being refreshed. After deleting cluster-transaction document, other documents in collection were refreshed


Solution

  • The bug related to document that was added via cluster transaction, the workaround for now would be to not use cluster transaction.

    I have opened an issue on bug tracker, https://issues.hibernatingrhinos.com/issue/RavenDB-16710