diff --git a/PlexRequests.Core/CacheKeys.cs b/PlexRequests.Core/CacheKeys.cs
index d10bb0bb2..439953d94 100644
--- a/PlexRequests.Core/CacheKeys.cs
+++ b/PlexRequests.Core/CacheKeys.cs
@@ -28,6 +28,11 @@ namespace PlexRequests.Core
{
public class CacheKeys
{
+ public struct TimeFrameMinutes
+ {
+ public const int SchedulerCaching = 60;
+ }
+
public const string PlexLibaries = "PlexLibaries";
public const string TvDbToken = "TheTvDbApiToken";
diff --git a/PlexRequests.Helpers/MemoryCacheProvider.cs b/PlexRequests.Helpers/MemoryCacheProvider.cs
index 6e513502c..fdb78f291 100644
--- a/PlexRequests.Helpers/MemoryCacheProvider.cs
+++ b/PlexRequests.Helpers/MemoryCacheProvider.cs
@@ -73,8 +73,8 @@ namespace PlexRequests.Helpers
///
public T Get(string key) where T : class
{
- var item = Cache.Get(key) as T;
- return item;
+ lock (key)
+ return Cache.Get(key) as T;
}
///
@@ -86,7 +86,11 @@ namespace PlexRequests.Helpers
public void Set(string key, object data, int cacheTime = 20)
{
var policy = new CacheItemPolicy { AbsoluteExpiration = DateTime.Now + TimeSpan.FromMinutes(cacheTime) };
- Cache.Add(new CacheItem(key, data), policy);
+ lock (key)
+ {
+ Cache.Remove(key);
+ Cache.Add(new CacheItem(key, data), policy);
+ }
}
///
@@ -98,7 +102,10 @@ namespace PlexRequests.Helpers
var keys = Cache.Where(x => x.Key.Contains(key));
foreach (var k in keys)
{
- Cache.Remove(k.Key);
+ lock (key)
+ {
+ Cache.Remove(k.Key);
+ }
}
}
}
diff --git a/PlexRequests.Services/Jobs/CouchPotatoCacher.cs b/PlexRequests.Services/Jobs/CouchPotatoCacher.cs
index 8bc50c5b6..2440477f0 100644
--- a/PlexRequests.Services/Jobs/CouchPotatoCacher.cs
+++ b/PlexRequests.Services/Jobs/CouchPotatoCacher.cs
@@ -63,7 +63,10 @@ namespace PlexRequests.Services.Jobs
{
Log.Trace("Getting all movies from CouchPotato");
var movies = CpApi.GetMovies(settings.FullUri, settings.ApiKey, new[] { "active" });
- Cache.Set(CacheKeys.CouchPotatoQueued, movies, 10);
+ if (movies != null)
+ {
+ Cache.Set(CacheKeys.CouchPotatoQueued, movies, CacheKeys.TimeFrameMinutes.SchedulerCaching);
+ }
}
}
diff --git a/PlexRequests.Services/Jobs/PlexAvailabilityChecker.cs b/PlexRequests.Services/Jobs/PlexAvailabilityChecker.cs
index cf2de344d..3c7915fa6 100644
--- a/PlexRequests.Services/Jobs/PlexAvailabilityChecker.cs
+++ b/PlexRequests.Services/Jobs/PlexAvailabilityChecker.cs
@@ -238,7 +238,7 @@ namespace PlexRequests.Services.Jobs
private List CachedLibraries(AuthenticationSettings authSettings, PlexSettings plexSettings, bool setCache)
{
- Log.Trace("Obtaining library sections from Plex for the following request");
+ Log.Trace("Obtaining library sections from Plex");
List results = new List();
@@ -250,12 +250,22 @@ namespace PlexRequests.Services.Jobs
if (setCache)
{
- results = GetLibraries(authSettings, plexSettings);
- Cache.Set(CacheKeys.PlexLibaries, results, 10);
+ Log.Trace("Plex Lib API Call");
+ results = GetLibraries(authSettings, plexSettings);
+
+ Log.Trace("Plex Lib Cache Set Call");
+ if (results != null)
+ {
+ Cache.Set(CacheKeys.PlexLibaries, results, CacheKeys.TimeFrameMinutes.SchedulerCaching);
+ }
}
else
{
- results = Cache.GetOrSet(CacheKeys.PlexLibaries, () => GetLibraries(authSettings, plexSettings), 10);
+ Log.Trace("Plex Lib GetSet Call");
+ results = Cache.GetOrSet(CacheKeys.PlexLibaries, () => {
+ Log.Trace("Plex Lib API Call (inside getset)");
+ return GetLibraries(authSettings, plexSettings);
+ }, CacheKeys.TimeFrameMinutes.SchedulerCaching);
}
return results;
}
@@ -278,6 +288,7 @@ namespace PlexRequests.Services.Jobs
}
}
+ Log.Trace("Returning Plex Libs");
return libs;
}
diff --git a/PlexRequests.Services/Jobs/SickRageCacher.cs b/PlexRequests.Services/Jobs/SickRageCacher.cs
index 3c626a336..1a28956a5 100644
--- a/PlexRequests.Services/Jobs/SickRageCacher.cs
+++ b/PlexRequests.Services/Jobs/SickRageCacher.cs
@@ -62,8 +62,11 @@ namespace PlexRequests.Services.Jobs
if (settings.Enabled)
{
Log.Trace("Getting all shows from SickRage");
- var movies = SrApi.GetShows(settings.ApiKey, settings.FullUri);
- Cache.Set(CacheKeys.SickRageQueued, movies.Result);
+ var shows = SrApi.GetShows(settings.ApiKey, settings.FullUri);
+ if (shows != null)
+ {
+ Cache.Set(CacheKeys.SickRageQueued, shows.Result, CacheKeys.TimeFrameMinutes.SchedulerCaching);
+ }
}
}
diff --git a/PlexRequests.Services/Jobs/SonarrCacher.cs b/PlexRequests.Services/Jobs/SonarrCacher.cs
index 63e2425d1..983a50eea 100644
--- a/PlexRequests.Services/Jobs/SonarrCacher.cs
+++ b/PlexRequests.Services/Jobs/SonarrCacher.cs
@@ -64,7 +64,10 @@ namespace PlexRequests.Services.Jobs
{
Log.Trace("Getting all tv series from Sonarr");
var series = SonarrApi.GetSeries(settings.ApiKey, settings.FullUri);
- Cache.Set(CacheKeys.SonarrQueued, series, 10);
+ if (series != null)
+ {
+ Cache.Set(CacheKeys.SonarrQueued, series, CacheKeys.TimeFrameMinutes.SchedulerCaching);
+ }
}
}