From edc8ed785cb1c1332419f1838f9df0a806586b08 Mon Sep 17 00:00:00 2001 From: lostb1t Date: Wed, 10 Jul 2024 16:58:01 +0000 Subject: [PATCH] fix: try without a async join --- Cargo.lock | 6 +++--- Cargo.toml | 24 +++++++++++------------ src/cache.rs | 4 ++-- src/plex_client.rs | 2 +- src/transform.rs | 49 ++++++++++++++++++++++++++++++++++++++++++++-- 5 files changed, 65 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ef8c592..7d11849 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2152,9 +2152,9 @@ dependencies = [ [[package]] name = "moka" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "206bf83f415b0579fd885fe0804eb828e727636657dc1bf73d80d2f1218e14a1" +checksum = "fa6e72583bf6830c956235bff0d5afec8cf2952f579ebad18ae7821a917d950f" dependencies = [ "async-io", "async-lock", @@ -3010,7 +3010,7 @@ dependencies = [ "memory-stats", "mime", "mime_guess", - "moka 0.11.2", + "moka 0.11.3", "multimap", "once_cell", "openssl", diff --git a/Cargo.toml b/Cargo.toml index 4dfbe86..71a476f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,19 +8,19 @@ serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" hyper = { version = "1.1", features = ["full"] } tokio = { version = "1.38.0", features = ["full", "tracing"] } -lazy_static = "1.4.0" +lazy_static = "1.4" anyhow = "1.0" -yaserde_derive = "0.10.0" -yaserde = "0.10.0" -derive_more = "0.99.17" +yaserde_derive = "0.10" +yaserde = "0.10" +derive_more = "0.99" url = "2.4.0" -tracing = "0.1.37" -strum_macros = "0.24.3" -strum = "0.24.1" -itertools = "0.10.5" -pathetic = "0.3.0" -bytes = "1.4.0" -mime = "0.3.16" +tracing = "0.1" +strum_macros = "0.24" +strum = "0.24" +itertools = "0.10" +pathetic = "0.3" +bytes = "1.4" +mime = "0.3" async-trait = "0.1" futures-util = "0.3" opentelemetry = { version = "0.19.0", features = [ "trace", "rt-tokio" ] } @@ -37,7 +37,7 @@ salvo = { version = "0.68", features = ["anyhow", "websocket", "proxy", "cors", reqwest = { version = "0.12", features = ["gzip", "json", "blocking"] } http-body-util = "0.1.2" once_cell = "1.18.0" -moka = { version = "0.11.2", features = ["future"] } +moka = { version = "0.11", features = ["future"] } #tonic = {version = "0.8.0", features = ["tls", "tls-roots"]} async-recursion = "1.0.4" console-subscriber = "0.1.10" diff --git a/src/cache.rs b/src/cache.rs index 9ddcc66..2c48e9f 100644 --- a/src/cache.rs +++ b/src/cache.rs @@ -113,7 +113,7 @@ impl CacheManager { /// Clears out the entire cache. pub async fn clear(&self) -> anyhow::Result<()> { self.inner.invalidate_all(); - self.inner.sync(); + //self.inner.sync(); Ok(()) } @@ -147,7 +147,7 @@ impl CacheManager { pub async fn delete(&self, cache_key: &str) -> anyhow::Result<()> { self.inner.invalidate(cache_key).await; - self.inner.sync(); + //self.inner.sync(); Ok(()) } } diff --git a/src/plex_client.rs b/src/plex_client.rs index dc67ce9..9146b6c 100644 --- a/src/plex_client.rs +++ b/src/plex_client.rs @@ -415,7 +415,7 @@ impl PlexClient { container: MediaContainerWrapper, ) { self.cache.insert(cache_key, container).await; - self.cache.sync(); + //self.cache.sync(); } fn generate_cache_key(&self, name: String) -> String { diff --git a/src/transform.rs b/src/transform.rs index f30c265..2d4eab6 100644 --- a/src/transform.rs +++ b/src/transform.rs @@ -142,7 +142,7 @@ impl TransformBuilder { } // TODO: join async filters - pub async fn apply_to( + pub async fn apply_to_old( self, container: &mut MediaContainerWrapper, ) { @@ -157,8 +157,53 @@ impl TransformBuilder { ) }, ); - + future::join_all(futures).await; + //for k in container.media_container.children_mut() + + // dont use join as it needs ti be executed in order + // let l = std::cell::RefCell::new(&mut container.media_container); + container.media_container = t + .transform_mediacontainer( + container.media_container.clone(), + self.plex_client.clone(), + self.options.clone(), + ) + .await; + // dbg!(container.media_container.size); + } + + // filter behind transform as transform can load in additional data + let children = container.media_container.children_mut(); + let new_children = self.apply_to_metadata(children).await; + container.media_container.set_children(new_children); + + if container.media_container.size.is_some() { + container.media_container.size = Some( + container + .media_container + .children_mut() + .len() + .try_into() + .unwrap(), + ); + } + } + + pub async fn apply_to( + self, + container: &mut MediaContainerWrapper, + ) { + for t in self.transforms.clone() { + + for child in container.media_container.children_mut() { + t.transform_metadata( + child, + self.plex_client.clone(), + self.options.clone(), + ).await; + } + //future::join_all(futures).await; // dont use join as it needs ti be executed in order // let l = std::cell::RefCell::new(&mut container.media_container);