Клиент RavenDB C # выдает ошибку как неверный символ тега узла: n - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь удалить документ в RavenDB, на котором запущено 3 узла на одном компьютере (настройка разработки).Ниже приведен код для удаления документа.

public bool Remove<T>(string id) where T : new()
{
    bool bResult = false;
    using (var session = _session.OpenSession())
    {
        session.Delete(id);
        session.SaveChanges();
        bResult = true;
    }
    return bResult;
}

, но он выдает ошибку в строке session.SaveChanges();

Недопустимый символ тега узла: n ...

Трассировка стека:

System.ArgumentException: Invalid node tag character: n
   at Raven.Server.Documents.Replication.ChangeVectorParser.ThrowInvalidNodeTag(Char ch) in C:\Builds\RavenDB-Stable-4.1\src\Raven.Server\Documents\Replication\ChangeVectorParser.cs:line 71
   at Raven.Server.Documents.Replication.ChangeVectorParser.ParseNodeTag(String changeVector, Int32 start, Int32 end) in C:\Builds\RavenDB-Stable-4.1\src\Raven.Server\Documents\Replication\ChangeVectorParser.cs:line 52
   at Raven.Server.Documents.Replication.ChangeVectorParser.MergeChangeVector(String changeVector, List`1 entries) in C:\Builds\RavenDB-Stable-4.1\src\Raven.Server\Documents\Replication\ChangeVectorParser.cs:line 186
   at Raven.Server.Utils.ChangeVectorUtils.MergeVectors(String vectorAstring, String vectorBstring) in C:\Builds\RavenDB-Stable-4.1\src\Raven.Server\Utils\ChangeVectorUtils.cs:line 213
   at Raven.Server.Documents.DocumentsStorage.CreateTombstone(DocumentsOperationContext context, Slice lowerId, Int64 documentEtag, CollectionName collectionName, String docChangeVector, Int64 lastModifiedTicks, String changeVector, DocumentFlags flags, NonPersistentDocumentFlags nonPersistentFlags) in C:\Builds\RavenDB-Stable-4.1\src\Raven.Server\Documents\DocumentsStorage.cs:line 1378
   at Raven.Server.Documents.DocumentsStorage.Delete(DocumentsOperationContext context, Slice lowerId, String id, LazyStringValue expectedChangeVector, Nullable`1 lastModifiedTicks, String changeVector, CollectionName collectionName, NonPersistentDocumentFlags nonPersistentFlags, DocumentFlags documentFlags) in C:\Builds\RavenDB-Stable-4.1\src\Raven.Server\Documents\DocumentsStorage.cs:line 1195
   at Raven.Server.Documents.DocumentsStorage.Delete(DocumentsOperationContext context, String id, String expectedChangeVector) in C:\Builds\RavenDB-Stable-4.1\src\Raven.Server\Documents\DocumentsStorage.cs:line 1091
   at Raven.Server.Documents.Handlers.BatchHandler.MergedBatchCommand.ExecuteCmd(DocumentsOperationContext context) in C:\Builds\RavenDB-Stable-4.1\src\Raven.Server\Documents\Handlers\BatchHandler.cs:line 706
   at Raven.Server.Documents.TransactionOperationsMerger.ExecutePendingOperationsInTransaction(List`1 pendingOps, DocumentsOperationContext context, Task previousOperation, DurationMeasurement& meter) in C:\Builds\RavenDB-Stable-4.1\src\Raven.Server\Documents\TransactionOperationsMerger.cs:line 825
   at Raven.Server.Documents.TransactionOperationsMerger.MergeTransactionsOnce() in C:\Builds\RavenDB-Stable-4.1\src\Raven.Server\Documents\TransactionOperationsMerger.cs:line 500
--- End of stack trace from previous location where exception was thrown ---
   at Raven.Server.Documents.TransactionOperationsMerger.Enqueue(MergedTransactionCommand cmd) in C:\Builds\RavenDB-Stable-4.1\src\Raven.Server\Documents\TransactionOperationsMerger.cs:line 124
   at Raven.Server.Documents.Handlers.BatchHandler.BulkDocs() in C:\Builds\RavenDB-Stable-4.1\src\Raven.Server\Documents\Handlers\BatchHandler.cs:line 96
   at Raven.Server.Routing.RequestRouter.HandlePath(RequestHandlerContext reqCtx) in C:\Builds\RavenDB-Stable-4.1\src\Raven.Server\Routing\RequestRouter.cs:line 124
   at Raven.Server.RavenServerStartup.RequestHandler(HttpContext context) in C:\Builds\RavenDB-Stable-4.1\src\Raven.Server\RavenServerStartup.cs:line 172

1 Ответ

0 голосов
/ 17 декабря 2018

Вчера я столкнулся с той же ошибкой.Я восстановил базу данных на другом компьютере, где я установил совершенно новую RavenDB и (будучи ленивым), назвал новый экземпляр узла "A".Похоже, что RavenDB не может в настоящее время удалять документы, когда вектор изменения и имя тега экземпляра не совпадают.

нод-тег-несоответствие узла

Это похоже на честную ошибку вкод вместо намеренного поведения ... но это только мое предположение, потому что я не нашел ничего об этом поведении в документации 4.1.

Решение (если вы подтвердите, что есть несоответствие):

Вы можете попытаться добавить новый узел в ваш кластер с вектором изменения имен совпадающих заблокированных документов.

В моем случае я не могу настроить автономный RavenDB для наличия узлатег из более чем 4 символов (это не было проблемой в Docker) ... Тогда может быть сложнее привести базу данных в согласованное состояние.

Или попробуйте экспортировать и импортировать данные.Это устраняет проблему, поскольку векторы изменений обновляются и соответствуют новому тегу узла.

...