Mercurial > prosody-hg
comparison plugins/mod_mam/mod_mam.lua @ 10030:98ef41a60fc3
Merge 0.11->trunk
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Mon, 27 May 2019 19:17:12 +0200 |
| parents | 4715c5d1eb69 79ba2d709e72 |
| children | b36e2631203d |
comparison
equal
deleted
inserted
replaced
| 10027:c0ee2ed8ef19 | 10030:98ef41a60fc3 |
|---|---|
| 41 local archive = module:open_store(archive_store, "archive"); | 41 local archive = module:open_store(archive_store, "archive"); |
| 42 | 42 |
| 43 local cleanup_after = module:get_option_string("archive_expires_after", "1w"); | 43 local cleanup_after = module:get_option_string("archive_expires_after", "1w"); |
| 44 local cleanup_interval = module:get_option_number("archive_cleanup_interval", 4 * 60 * 60); | 44 local cleanup_interval = module:get_option_number("archive_cleanup_interval", 4 * 60 * 60); |
| 45 local archive_item_limit = module:get_option_number("storage_archive_item_limit", archive.caps and archive.caps.quota or 1000); | 45 local archive_item_limit = module:get_option_number("storage_archive_item_limit", archive.caps and archive.caps.quota or 1000); |
| 46 | |
| 47 if not archive.find then | 46 if not archive.find then |
| 48 error("mod_"..(archive._provided_by or archive.name and "storage_"..archive.name).." does not support archiving\n" | 47 error("mod_"..(archive._provided_by or archive.name and "storage_"..archive.name).." does not support archiving\n" |
| 49 .."See https://prosody.im/doc/storage and https://prosody.im/doc/archiving for more information"); | 48 .."See https://prosody.im/doc/storage and https://prosody.im/doc/archiving for more information"); |
| 50 end | 49 end |
| 51 local use_total = module:get_option_boolean("mam_include_total", true); | 50 local use_total = module:get_option_boolean("mam_include_total", true); |
| 373 | 372 |
| 374 -- For each day, store a set of users that have new messages. To expire | 373 -- For each day, store a set of users that have new messages. To expire |
| 375 -- messages, we collect the union of sets of users from dates that fall | 374 -- messages, we collect the union of sets of users from dates that fall |
| 376 -- outside the cleanup range. | 375 -- outside the cleanup range. |
| 377 | 376 |
| 377 local last_date = require "util.cache".new(module:get_option_number("archive_cleanup_date_cache_size", 1000)); | |
| 378 function schedule_cleanup(username, date) | 378 function schedule_cleanup(username, date) |
| 379 cleanup_map:set(date or datestamp(), username, true); | 379 date = date or datestamp(); |
| 380 end | 380 if last_date:get(username) == date then return end |
| 381 local ok = cleanup_map:set(date, username, true); | |
| 382 if ok then | |
| 383 last_date:set(username, date); | |
| 384 end | |
| 385 end | |
| 381 local cleanup_time = module:measure("cleanup", "times"); | 386 local cleanup_time = module:measure("cleanup", "times"); |
| 382 | 387 |
| 383 cleanup_runner = require "util.async".runner(function () | 388 cleanup_runner = require "util.async".runner(function () |
| 384 local cleanup_done = cleanup_time(); | 389 local cleanup_done = cleanup_time(); |
| 385 local users = {}; | 390 local users = {}; |
