requires limiting the amount of messages in a bundle
Manjago opened this issue · comments
Требуется ограничение на количество эхопочты в одном файле.
Ситуация:
Товарищ выгребал большое количество записей из ru.military (я сделал рескан с 2010 года, а он не забирал), забирал, забирал и оппаньки
27-01-14 18:53:29 [00000030] FtnTosser Echomail #39115 (ru.military)
packed for 2:5020/828.744
27-01-14 18:53:29 [00000030] FtnTosser Echomail #39116 (ru.military)
packed for 2:5020/828.744
Exception in thread "Thread-4" java.lang.OutOfMemoryError: Java heap space
27-01-14 18:53:34 [00000030] FtnTosser Echomail #39117 (ru.military)
packed for 2:5020/828.744
27-01-14 18:53:34 [00000030] FtnTosser Echomail #39118 (ru.military)
packed for 2:5020/828.744
Я запускался с -Xmx200m - не хватило!
Проблема в том что надо исспользовать limit и offset в запросах orm.
Пример прозрачного ипользования в виде итератора можетe посмотреть у меня
WhereDatabaseLimitIterator.
https://github.com/vkravets/Fido4Java/blob/master/fido-database/src/main/java/org/fidonet/db/WhereDatabaseLimitIterator.java
При итерирование по сообщением, итератор сам решит когда делать запрос
в базу для получения списка/кеша сообщений. IMHO в данном случае будет
очень удобно его использовать при формировании бандла.
Нет, просто нужно было избавиться от троекратного перекладывания сформированных бандлов в памяти. Что я собственно и сделал.
Ага, вроде залечилось -
ru.military rescanned 16859 messages
- и все успешно