Очередь хроники: AssertionError (заголовок внутри заголовка) при записи массива байтов

Я использую очередь хроник v4 для записи сериализованного объекта в очередь. Но я продолжаю опускаться ниже Exception

Исключение в потоке "CLF-1" java.lang.AssertionError: вы не можете поместить заголовок в заголовок, убедитесь, что вы не вложили документы. в net.openhft.chronicle.wire.AbstractWire.writeHeader(AbstractWire.java:228) в net.openhft.chronicle.queue.impl.single.StoreRecovery.writeHeader(StoreRecovery.java:28) в net.openhft.chronicle.queue .impl.single.SingleChronicleQueueStore.writeHeader(SingleChronicleQueueStore.java:298) в net.openhft.chronicle.queue.impl.single.SingleChronicleQueueExcerpts$StoreAppender.writingDocument(SingleChronicleQueueExcerpts.java:232) в net.openhft.chronicle.wire.MarshallableOut .writeDocument(MarshallableOut.java:68)

Вот как выглядит мой код

SingleChronicleQueue queue = SingleChronicleQueueBuilder.binary(queueFullPath).build();
ExcerptAppender queueWriter = queue.acquireAppender();
UserStat stat=new UserStat();//this is my object
byte[] bytes = convertObjectToBytes(stat);//custom serialization to convert java object to byte array
queueWriter.writeDocument(w -> w
    .getValueOut().bytes(bytes));

В файл .cq4 ничего не записывается. Но я вижу, что время последнего изменения изменяется каждый раз, когда вызывается метод writeDocument().


person Abhijeet Desai    schedule 06.04.2018    source источник


Ответы (1)


Скорее всего (согласно трассировке стека) файл, в который вы пишете, поврежден. Вам нужно очистить его и повторить попытку (и, похоже, вы использовали довольно старую версию). Попробуйте протестировать новую версию Chronicle Queue — велика вероятность, что проблема решена.

person Dmitry Pisklov    schedule 06.11.2018