Сколько времени потребуется, чтобы сохранить последнее значение ключа после ввода записи?
Я создал хроническую карту с помощью метода createOrRecoverPersistedTo. Но после перезапуска процесса jvm некоторые записи исчезли. Сколько времени потребуется, чтобы сохранить последнее значение ключа после ввода записи? Есть ли в любом случае принуждение к сохранению последних данных?
1 ответ
Теоретически, если не произойдут какие-либо события "сбой", такие как сбой или уничтожение процесса JVM или остановка сервера, вам не следует ждать, пока записи сохранятся, об этом заботится подсистема памяти ОС.
Как было подробно объяснено здесь, используя createOrRecoverPersistedTo()
после "нормального" перезапуска сервера (более того, просто перезапуск процесса JVM) появляется вредоносный антипаттерн. Вы должны просто использовать createPersistedTo()
,
Более того, в недавнем выпуске записи также сообщалось об исчезновении, когда ChronicleMap восстанавливался без катастрофических событий, что могло быть ошибкой в процедурах восстановления в Chronicle Map.
Если вы перезапустите свой сервер, сопоставленная память может быть не полностью очищена от файлов, например, в Linux "безопасный" тайм-аут, когда память должна быть очищена, определен в конфигурации "vm.dirty_expire_centisecs" (google it), которая по умолчанию должна составлять 30 секунд,