Ошибка GetEventStore "Запись журнала в фактическом положении X имеет слишком большую длину"
При выполнении ReadAllEventsForward
в восстановленной базе данных я получаю следующую ошибку:
[PID:18628:030 2014.10.29 11:13:41.535 ERROR StorageReaderWorker ] Error during processing ReadAllEventsForward request.
System.ArgumentException: Log record at actual pos 83405 has too large length: 892612896 bytes, while limit is 16777216 bytes. Something is seriously wrong in chunk 0-0 (C:\Event Store\hydra\chunk-000000.000000).
at EventStore.Core.TransactionLog.Chunks.TFChunk.TFChunk.TFChunkReadSide.TryReadForwardInternal(ReaderWorkItem workItem, Int64 actualPosition, Int32& length, LogRecord& record) in c:\BuildAgent1\work\oss\windows\releasebuilds\src\EventStore\EventStore.Core\TransactionLog\Chunks\TFChunk\TFChunkReadSide.cs:line 484
at EventStore.Core.TransactionLog.Chunks.TFChunk.TFChunk.TFChunkReadSideUnscavenged.TryReadClosestForward(Int64 logicalPosition) in c:\BuildAgent1\work\oss\windows\releasebuilds\src\EventStore\EventStore.Core\TransactionLog\Chunks\TFChunk\TFChunkReadSide.cs:line 103
at EventStore.Core.TransactionLog.Chunks.TFChunkReader.TryReadNextInternal(Int32 retries) in c:\BuildAgent1\work\oss\windows\releasebuilds\src\EventStore\EventStore.Core\TransactionLog\Chunks\TFChunkReader.cs:line 84
at EventStore.Core.Services.Storage.ReaderIndex.ReadIndex.EventStore.Core.Services.Storage.ReaderIndex.IReadIndex.ReadAllEventsForward(TFPos pos, Int32 maxCount) in c:\BuildAgent1\work\oss\windows\releasebuilds\src\EventStore\EventStore.Core\Services\Storage\ReaderIndex\ReadIndex.cs:line 767
at EventStore.Core.Services.Storage.StorageReaderWorker.ReadAllEventsForward(ReadAllEventsForward msg) in c:\BuildAgent1\work\oss\windows\releasebuilds\src\EventStore\EventStore.Core\Services\Storage\StorageReaderWorker.cs:line 194
Ошибка появилась в командной строке желтым цветом, и я извлек ее из журналов.
Система, которую я зарезервировал, работала, один поток принимал событие каждые несколько секунд. Я использовал инструкции резервного копирования в GetEventStore и тщательно следовал им. Я восстановил базу данных в подпапку установки GetEventStore и использовал следующую командную строку:
"C:\Event Store\EventStore.SingleNode.exe" --db .\myDatabaseName
В выводе командной строки я увидел, что используемая база данных была правильной. Код, который вызывает GetEventStore, - это C# .NET по HTTP, и он выполняет перепроектирование, не выполняя первый вызов GetEventStore.
Что я пропустил / сделал неправильно?
Заранее спасибо!
2 ответа
Это аппаратная проблема, и я сам столкнулся с ней. Попал в большую кроличью нору, пытаясь разгадать - одно привело к другому. Среди прочего, я пробовал это , но не работал. В конце концов, я сдался и вместо этого использовал образ Docker, и с тех пор, как я начал его использовать, все стало намного проще. Я хотел бы начать свой проект с образа Docker в первую очередь.
Если вы столкнулись с этой проблемой, сделайте себе одолжение и вместо этого используйте образ Docker.
У меня была такая же проблема, когда я пытался восстановить файлы базы данных хранилища событий. Я мог решить эту проблему, удалив truncate.chk и переименовав Chaser.chk в truncate.chk.
rm /var/lib/eventstore/truncate.chk
mv /var/lib/eventstore/chaser.chk /var/lib/eventstore/truncate.chk
# for pod & docker
chown -R 1000:1000 /var/lib/eventstore