Файл очереди несколько раз поврежден, что приводит к исключению JSONSyntax при просмотре - PullRequest
0 голосов
/ 30 декабря 2018

Я использую Square Tape Queue (https://github.com/square/tape/) для хранения данных. Но иногда я нахожу этот странный текст, и это приводит к «JSONSyntaxException: Ожидается BEGIN_OBJECT, но найдена строка» при чтении из очереди.

two muppets

1 Ответ

0 голосов
/ 06 января 2019

В https://github.com/square/tape/issues/5 разработчик Tape гарантирует, что механизм транзакций Tape так же безопасен, как sqlite (который является основным механизмом хранения данных приложений в Android, среди других проверенных сценариев).

Я подозреваю, что Клин не совсем правда.Внутренняя лента очень проста и полностью доверяет API-интерфейсам Java, что, в свою очередь, дает гарантии только для конкретного поведения записи файловой системы, что не гарантируется многими файловыми системами.Это примечание взято с веб-страницы ленты:

ПРИМЕЧАНИЕ. Текущая реализация построена для файловых систем, поддерживающих запись атомарного сегмента (например, YAFFS).Большинство обычных файловых систем не поддерживают это;если питание отключается во время записи сегмента, сегмент будет содержать мусор и файл будет поврежден.

Здесь вы можете видеть, что, по крайней мере, в Windows это имеет место: https://github.com/square/tape/issues/202

В Android есть сообщения о случайных повреждениях на устройствах Samsung (возможно, потому что он использует ffs вместо ext4).

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

...