From 461de892c4d3ef99eb3407eecf4581fe990eb49c Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Wed, 16 Apr 2025 13:52:57 -0400 Subject: [PATCH] MT#55283 scale expire times Change-Id: Ia7daea4471967797c404c4346b9786cd274067d8 --- daemon/main.c | 14 ++++++++++++-- daemon/media_player.c | 10 +++++----- include/main.h | 4 ++-- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/daemon/main.c b/daemon/main.c index c6a3701a6..c74b69298 100644 --- a/daemon/main.c +++ b/daemon/main.c @@ -676,6 +676,8 @@ static void options(int *argc, char ***argv, charp_ht templates) { int final_timeout = 0; int offer_timeout = 0; int delete_delay = 30; + int media_expire = 0; + int db_expire = 0; GOptionEntry e[] = { { "table", 't', 0, G_OPTION_ARG_INT, &rtpe_config.kernel_table, "Kernel table to use", "INT" }, @@ -814,11 +816,11 @@ static void options(int *argc, char ***argv, charp_ht templates) { { "kernel-player-media",0,0,G_OPTION_ARG_INT, &rtpe_config.kernel_player_media,"Max number of kernel media files","INT"}, { "preload-media-files",0,0,G_OPTION_ARG_FILENAME_ARRAY,&rtpe_config.preload_media_files,"Preload media file(s) for playback into memory","FILE"}, { "media-files-reload",0,0,G_OPTION_ARG_INT, &rtpe_config.media_refresh,"Refresh/reload preloaded media files at a certain interval","SECONDS"}, - { "media-files-expire",0,0,G_OPTION_ARG_INT, &rtpe_config.media_expire,"Maximum age of unused cached media files","SECONDS"}, + { "media-files-expire",0,0,G_OPTION_ARG_INT, &media_expire, "Maximum age of unused cached media files","SECONDS"}, { "expiry-timer",0,0,G_OPTION_ARG_INT, &rtpe_config.expiry_timer,"How often to check for expired media cache entries","SECONDS"}, { "preload-db-media",0,0,G_OPTION_ARG_STRING_ARRAY,&rtpe_config.preload_db_media,"Preload media from database for playback into memory","INT"}, { "db-media-reload",0,0,G_OPTION_ARG_INT, &rtpe_config.db_refresh,"Reload preloaded media from DB at a certain interval","SECONDS"}, - { "db-media-expire",0,0,G_OPTION_ARG_INT, &rtpe_config.db_expire,"Maximum age of unused cached DB media entries","SECONDS"}, + { "db-media-expire",0,0,G_OPTION_ARG_INT, &db_expire, "Maximum age of unused cached DB media entries","SECONDS"}, { "db-media-cache",0,0, G_OPTION_ARG_FILENAME, &rtpe_config.db_media_cache,"Directory to store media loaded from database","PATH"}, { "preload-db-cache",0,0,G_OPTION_ARG_STRING_ARRAY,&rtpe_config.preload_db_cache,"Preload media from database for playback into file cache","INT"}, { "db-cache-reload",0,0,G_OPTION_ARG_INT, &rtpe_config.cache_refresh,"Refresh/reload cached media from DB at a certain interval","SECONDS"}, @@ -1095,6 +1097,14 @@ static void options(int *argc, char ***argv, charp_ht templates) { if (rtpe_config.delete_delay_us < 0) die("Invalid negative delete-delay"); + rtpe_config.media_expire_us = media_expire * 1000000LL; + if (rtpe_config.media_expire_us < 0) + die("Invalid negative media-files-expire"); + + rtpe_config.db_expire_us = db_expire * 1000000LL; + if (rtpe_config.db_expire_us < 0) + die("Invalid negative db-media-expire"); + if (rtpe_config.rtcp_interval <= 0) rtpe_config.rtcp_interval = 5000; diff --git a/daemon/media_player.c b/daemon/media_player.c index ffdc6ed57..566a7d99e 100644 --- a/daemon/media_player.c +++ b/daemon/media_player.c @@ -2761,10 +2761,10 @@ unsigned int media_player_evict_player_caches(void) { #ifdef WITH_TRANSCODING static void media_player_expire_files(void) { - if (rtpe_config.media_expire <= 0) + if (rtpe_config.media_expire_us <= 0) return; - int64_t limit = rtpe_now - rtpe_config.media_expire * 1000000L; // XXX scale to micro + int64_t limit = rtpe_now - rtpe_config.media_expire_us; unsigned int num = 0; { @@ -2792,10 +2792,10 @@ static void media_player_expire_files(void) { } static void media_player_expire_dbs(void) { - if (rtpe_config.db_expire <= 0) + if (rtpe_config.db_expire_us <= 0) return; - int64_t limit = rtpe_now - rtpe_config.db_expire * 1000000L; // XXX scale to micro + int64_t limit = rtpe_now - rtpe_config.db_expire_us; unsigned int num = 0; { @@ -2826,7 +2826,7 @@ static void media_player_expire_cache_entry(unsigned long long id, unsigned int int64_t mtime, atime; if (!media_player_get_cache_times(id, &mtime, &atime)) return; - int64_t limit = rtpe_now - rtpe_config.db_expire * 1000000L; // XXX scale to micro + int64_t limit = rtpe_now - rtpe_config.db_expire_us; if (atime >= limit) return; if (media_player_evict_cache(id)) diff --git a/include/main.h b/include/main.h index 04cdaaa64..93a9b8eee 100644 --- a/include/main.h +++ b/include/main.h @@ -92,8 +92,6 @@ enum endpoint_learning { X(db_refresh) \ X(cache_refresh) \ X(expiry_timer) \ - X(media_expire) \ - X(db_expire) \ X(cache_expire) \ X(timer_accuracy) \ X(ng_client_timeout) \ @@ -106,6 +104,8 @@ enum endpoint_learning { X(final_timeout_us) \ X(offer_timeout_us) \ X(delete_delay_us) \ + X(media_expire_us) \ + X(db_expire_us) \ #define RTPE_CONFIG_BOOL_PARAMS \ X(homer_rtcp_off) \