Comparison

plugins/mod_http_file_share.lua @ 11990:6f4790b8deec

mod_http_file_share: Switch to mod_cron for periodic tasks
author Kim Alvefur <zash@zash.se>
date Mon, 22 Nov 2021 14:54:32 +0100
parent 11873:2b85e4e7d389
child 11992:876e1b6d6ae4
comparison
equal deleted inserted replaced
11989:871100cdbbad 11990:6f4790b8deec
455 wait(); 455 wait();
456 end 456 end
457 457
458 local prune_start = module:measure("prune", "times"); 458 local prune_start = module:measure("prune", "times");
459 459
460 local reaper_task = async.runner(function(boundary_time) 460 module:daily("Remove expired files", function(_, boundary_time)
461 local prune_done = prune_start(); 461 local prune_done = prune_start();
462 local iter, total = assert(uploads:find(nil, {["end"] = boundary_time; total = true})); 462 local iter, total = assert(uploads:find(nil, {["end"] = boundary_time; total = true}));
463 463
464 if total == 0 then 464 if total == 0 then
465 module:log("info", "No expired uploaded files to prune"); 465 module:log("info", "No expired uploaded files to prune");
466 prune_done(); 466 prune_done();
467 return; 467 return;
468 end 468 end
469 469
470 module:log("info", "Pruning expired files uploaded earlier than %s", dt.datetime(boundary_time)); 470 module:log("info", "Pruning expired files uploaded earlier than %s", dt.datetime(boundary_time));
471 if total_storage_limit then 471 if total_storage_usage then
472 module:log("debug", "Global quota %s / %s", B(total_storage_usage), B(total_storage_limit)); 472 module:log("debug", "Global quota %s / %s", B(total_storage_usage), B(total_storage_limit));
473 elseif total_storage_limit then
474 module:log("debug", "Global quota %s / %s", "not yet calculated", B(total_storage_limit));
473 end 475 end
474 476
475 local obsolete_uploads = array(); 477 local obsolete_uploads = array();
476 local i = 0; 478 local i = 0;
477 local size_sum = 0; 479 local size_sum = 0;
531 end 533 end
532 end 534 end
533 535
534 prune_done(); 536 prune_done();
535 end); 537 end);
536
537 module:add_timer(5, function ()
538 reaper_task:run(os.time()-expiry);
539 return 60*60;
540 end);
541 end 538 end
542 539
543 if total_storage_limit then 540 if total_storage_limit then
544 local async = require "util.async";
545
546 local summary_start = module:measure("summary", "times"); 541 local summary_start = module:measure("summary", "times");
547 542
548 local summarizer_task = async.runner(function() 543 module:daily("Global quota check", function()
549 local summary_done = summary_start(); 544 local summary_done = summary_start();
550 local iter = assert(uploads:find(nil)); 545 local iter = assert(uploads:find(nil));
551 546
552 local count, sum = 0, 0; 547 local count, sum = 0, 0;
553 for _, file in iter do 548 for _, file in iter do
559 total_storage_usage = sum; 554 total_storage_usage = sum;
560 module:log("debug", "Global quota %s / %s", B(total_storage_usage), B(total_storage_limit)); 555 module:log("debug", "Global quota %s / %s", B(total_storage_usage), B(total_storage_limit));
561 summary_done(); 556 summary_done();
562 end); 557 end);
563 558
564 module:add_timer(1, function()
565 summarizer_task:run(true);
566 return 11 * 60 * 60;
567 end);
568 end 559 end
569 560
570 -- Reachable from the console 561 -- Reachable from the console
571 function check_files(query) 562 function check_files(query)
572 local issues = {}; 563 local issues = {};