From 05bdfcd550b52a5158ada1f78b0f458d98da8b07 Mon Sep 17 00:00:00 2001 From: "Jamie.Rees" Date: Mon, 14 Nov 2016 10:44:10 +0000 Subject: [PATCH] started on #646. Fixed #657 --- .../Migrations/Version1100.cs | 26 ++++++++++++++++++- PlexRequests.Core/CacheKeys.cs | 2 +- .../Interfaces/IJobRecord.cs | 1 + .../Jobs/CouchPotatoCacher.cs | 2 ++ .../Jobs/FaultQueueHandler.cs | 3 +++ PlexRequests.Services/Jobs/JobRecord.cs | 17 ++++++++++++ .../Jobs/PlexAvailabilityChecker.cs | 4 ++- .../Jobs/PlexEpisodeCacher.cs | 2 ++ PlexRequests.Services/Jobs/RecentlyAdded.cs | 3 +++ PlexRequests.Services/Jobs/SickRageCacher.cs | 2 ++ PlexRequests.Services/Jobs/SonarrCacher.cs | 2 ++ PlexRequests.Services/Jobs/StoreBackup.cs | 2 ++ PlexRequests.Services/Jobs/StoreCleanup.cs | 2 ++ .../Jobs/UserRequestLimitResetter.cs | 2 ++ PlexRequests.Store/Models/ScheduledJobs.cs | 1 + PlexRequests.Store/SqlTables.sql | 3 ++- 16 files changed, 70 insertions(+), 4 deletions(-) diff --git a/PlexRequests.Core.Migration/Migrations/Version1100.cs b/PlexRequests.Core.Migration/Migrations/Version1100.cs index 3238b9c27..a631b05d6 100644 --- a/PlexRequests.Core.Migration/Migrations/Version1100.cs +++ b/PlexRequests.Core.Migration/Migrations/Version1100.cs @@ -25,6 +25,7 @@ // ************************************************************************/ #endregion +using System; using System.Data; using System.Linq; using PlexRequests.Helpers.Permissions; @@ -36,12 +37,14 @@ namespace PlexRequests.Core.Migration.Migrations [Migration(11000, "v1.10.0.0")] public class Version1100 : BaseMigration, IMigration { - public Version1100(IUserRepository userRepo) + public Version1100(IUserRepository userRepo, IRequestService requestService) { UserRepo = userRepo; + RequestService = requestService; } public int Version => 11000; private IUserRepository UserRepo { get; } + private IRequestService RequestService { get; } public void Start(IDbConnection con) { @@ -50,6 +53,7 @@ namespace PlexRequests.Core.Migration.Migrations // Update the current admin permissions set UpdateAdmin(); + UpdateSchema(con, Version); } @@ -59,6 +63,26 @@ namespace PlexRequests.Core.Migration.Migrations con.AlterTable("Users", "ADD", "Permissions", true, "INTEGER"); con.AlterTable("Users", "ADD", "Features", true, "INTEGER"); + // Add the new 'running' item into the scheduled jobs so we can check if the cachers are running + con.AlterTable("ScheduledJobs", "ADD", "Running", true, "INTEGER"); + + + + //https://image.tmdb.org/t/p/w150/https://image.tmdb.org/t/p/w150//aqhAqttDq7zgsTaBHtCD8wmTk6k.jpg + + // UI = https://image.tmdb.org/t/p/w150/{{posterPath}} + // Update old invalid posters + var allRequests = RequestService.GetAll().ToList(); + + foreach (var req in allRequests) + { + if (req.PosterPath.Contains("https://image.tmdb.org/t/p/w150/")) + { + var newImg = req.PosterPath.Replace("https://image.tmdb.org/t/p/w150/", string.Empty); + req.PosterPath = newImg; + } + } + RequestService.BatchUpdate(allRequests); } private void UpdateAdmin() diff --git a/PlexRequests.Core/CacheKeys.cs b/PlexRequests.Core/CacheKeys.cs index 0f718f1f1..e40dd9efd 100644 --- a/PlexRequests.Core/CacheKeys.cs +++ b/PlexRequests.Core/CacheKeys.cs @@ -30,7 +30,7 @@ namespace PlexRequests.Core { public struct TimeFrameMinutes { - public const int SchedulerCaching = 60; + public const int SchedulerCaching = 120; } public const string PlexLibaries = nameof(PlexLibaries); diff --git a/PlexRequests.Services/Interfaces/IJobRecord.cs b/PlexRequests.Services/Interfaces/IJobRecord.cs index da6bc6b3f..a47a31bbe 100644 --- a/PlexRequests.Services/Interfaces/IJobRecord.cs +++ b/PlexRequests.Services/Interfaces/IJobRecord.cs @@ -36,5 +36,6 @@ namespace PlexRequests.Services.Interfaces void Record(string jobName); Task> GetJobsAsync(); IEnumerable GetJobs(); + void SetRunning(bool running, string jobName); } } \ No newline at end of file diff --git a/PlexRequests.Services/Jobs/CouchPotatoCacher.cs b/PlexRequests.Services/Jobs/CouchPotatoCacher.cs index 5ad3d99d8..3977f277f 100644 --- a/PlexRequests.Services/Jobs/CouchPotatoCacher.cs +++ b/PlexRequests.Services/Jobs/CouchPotatoCacher.cs @@ -81,6 +81,7 @@ namespace PlexRequests.Services.Jobs finally { Job.Record(JobNames.CpCacher); + Job.SetRunning(false, JobNames.CpCacher); } } } @@ -108,6 +109,7 @@ namespace PlexRequests.Services.Jobs public void Execute(IJobExecutionContext context) { + Job.SetRunning(true, JobNames.CpCacher); Queued(); } } diff --git a/PlexRequests.Services/Jobs/FaultQueueHandler.cs b/PlexRequests.Services/Jobs/FaultQueueHandler.cs index f30a4f2d9..e774043f3 100644 --- a/PlexRequests.Services/Jobs/FaultQueueHandler.cs +++ b/PlexRequests.Services/Jobs/FaultQueueHandler.cs @@ -87,6 +87,8 @@ namespace PlexRequests.Services.Jobs public void Execute(IJobExecutionContext context) { + + Record.SetRunning(true, JobNames.CpCacher); try { var faultedRequests = Repo.GetAll().ToList(); @@ -105,6 +107,7 @@ namespace PlexRequests.Services.Jobs finally { Record.Record(JobNames.FaultQueueHandler); + Record.SetRunning(false, JobNames.CpCacher); } } diff --git a/PlexRequests.Services/Jobs/JobRecord.cs b/PlexRequests.Services/Jobs/JobRecord.cs index 3538a7b0b..629ac8446 100644 --- a/PlexRequests.Services/Jobs/JobRecord.cs +++ b/PlexRequests.Services/Jobs/JobRecord.cs @@ -60,6 +60,23 @@ namespace PlexRequests.Services.Jobs } } + public void SetRunning(bool running, string jobName) + { + var allJobs = Repo.GetAll(); + var storeJob = allJobs.FirstOrDefault(x => x.Name == jobName); + if (storeJob != null) + { + storeJob.Running = running; + Repo.Update(storeJob); + } + else + { + var job = new ScheduledJobs { Running = running, Name = jobName }; + Repo.Insert(job); + } + } + + public async Task> GetJobsAsync() { return await Repo.GetAllAsync(); diff --git a/PlexRequests.Services/Jobs/PlexAvailabilityChecker.cs b/PlexRequests.Services/Jobs/PlexAvailabilityChecker.cs index 7ba84cb79..108b115dd 100644 --- a/PlexRequests.Services/Jobs/PlexAvailabilityChecker.cs +++ b/PlexRequests.Services/Jobs/PlexAvailabilityChecker.cs @@ -158,7 +158,7 @@ namespace PlexRequests.Services.Jobs } Job.Record(JobNames.PlexChecker); - + Job.SetRunning(false, JobNames.CpCacher); } public List GetPlexMovies() @@ -503,6 +503,8 @@ namespace PlexRequests.Services.Jobs public void Execute(IJobExecutionContext context) { + + Job.SetRunning(true, JobNames.CpCacher); try { CheckAndUpdateAll(); diff --git a/PlexRequests.Services/Jobs/PlexEpisodeCacher.cs b/PlexRequests.Services/Jobs/PlexEpisodeCacher.cs index 3ed43db50..3bf086752 100644 --- a/PlexRequests.Services/Jobs/PlexEpisodeCacher.cs +++ b/PlexRequests.Services/Jobs/PlexEpisodeCacher.cs @@ -145,6 +145,7 @@ namespace PlexRequests.Services.Jobs public void Execute(IJobExecutionContext context) { + Job.SetRunning(true, JobNames.CpCacher); try { var s = Plex.GetSettings(); @@ -171,6 +172,7 @@ namespace PlexRequests.Services.Jobs finally { Job.Record(JobNames.EpisodeCacher); + Job.SetRunning(false, JobNames.CpCacher); } } } diff --git a/PlexRequests.Services/Jobs/RecentlyAdded.cs b/PlexRequests.Services/Jobs/RecentlyAdded.cs index 73e6fba52..204b851be 100644 --- a/PlexRequests.Services/Jobs/RecentlyAdded.cs +++ b/PlexRequests.Services/Jobs/RecentlyAdded.cs @@ -78,6 +78,8 @@ namespace PlexRequests.Services.Jobs public void Execute(IJobExecutionContext context) { + + JobRecord.SetRunning(true, JobNames.CpCacher); try { var settings = NewsletterSettings.GetSettings(); @@ -95,6 +97,7 @@ namespace PlexRequests.Services.Jobs finally { JobRecord.Record(JobNames.RecentlyAddedEmail); + JobRecord.SetRunning(false, JobNames.CpCacher); } } diff --git a/PlexRequests.Services/Jobs/SickRageCacher.cs b/PlexRequests.Services/Jobs/SickRageCacher.cs index cece5100d..10ac125c3 100644 --- a/PlexRequests.Services/Jobs/SickRageCacher.cs +++ b/PlexRequests.Services/Jobs/SickRageCacher.cs @@ -58,6 +58,7 @@ namespace PlexRequests.Services.Jobs public void Queued() { + Job.SetRunning(true, JobNames.CpCacher); Log.Trace("Getting the settings"); var settings = SrSettings.GetSettings(); @@ -79,6 +80,7 @@ namespace PlexRequests.Services.Jobs finally { Job.Record(JobNames.SrCacher); + Job.SetRunning(false, JobNames.CpCacher); } } } diff --git a/PlexRequests.Services/Jobs/SonarrCacher.cs b/PlexRequests.Services/Jobs/SonarrCacher.cs index d94561604..9c7cd2cc1 100644 --- a/PlexRequests.Services/Jobs/SonarrCacher.cs +++ b/PlexRequests.Services/Jobs/SonarrCacher.cs @@ -62,6 +62,7 @@ namespace PlexRequests.Services.Jobs public void Queued() { + Job.SetRunning(true, JobNames.CpCacher); var settings = SonarrSettings.GetSettings(); if (settings.Enabled) { @@ -80,6 +81,7 @@ namespace PlexRequests.Services.Jobs finally { Job.Record(JobNames.SonarrCacher); + Job.SetRunning(false, JobNames.CpCacher); } } } diff --git a/PlexRequests.Services/Jobs/StoreBackup.cs b/PlexRequests.Services/Jobs/StoreBackup.cs index dea5d7df0..1bc45f54b 100644 --- a/PlexRequests.Services/Jobs/StoreBackup.cs +++ b/PlexRequests.Services/Jobs/StoreBackup.cs @@ -53,6 +53,7 @@ namespace PlexRequests.Services.Jobs public void Execute(IJobExecutionContext context) { + JobRecord.SetRunning(true, JobNames.CpCacher); TakeBackup(); Cleanup(); } @@ -91,6 +92,7 @@ namespace PlexRequests.Services.Jobs finally { JobRecord.Record(JobNames.StoreBackup); + JobRecord.SetRunning(false, JobNames.CpCacher); } } diff --git a/PlexRequests.Services/Jobs/StoreCleanup.cs b/PlexRequests.Services/Jobs/StoreCleanup.cs index 5c6b0987b..b329eaa95 100644 --- a/PlexRequests.Services/Jobs/StoreCleanup.cs +++ b/PlexRequests.Services/Jobs/StoreCleanup.cs @@ -78,12 +78,14 @@ namespace PlexRequests.Services.Jobs finally { JobRecord.Record(JobNames.StoreCleanup); + JobRecord.SetRunning(false, JobNames.CpCacher); } } public void Execute(IJobExecutionContext context) { + JobRecord.SetRunning(true, JobNames.CpCacher); Cleanup(); } } diff --git a/PlexRequests.Services/Jobs/UserRequestLimitResetter.cs b/PlexRequests.Services/Jobs/UserRequestLimitResetter.cs index 96d613b72..f32320fc8 100644 --- a/PlexRequests.Services/Jobs/UserRequestLimitResetter.cs +++ b/PlexRequests.Services/Jobs/UserRequestLimitResetter.cs @@ -98,6 +98,7 @@ namespace PlexRequests.Services.Jobs public void Execute(IJobExecutionContext context) { + Record.SetRunning(true, JobNames.CpCacher); try { var settings = Settings.GetSettings(); @@ -115,6 +116,7 @@ namespace PlexRequests.Services.Jobs finally { Record.Record(JobNames.RequestLimitReset); + Record.SetRunning(false, JobNames.CpCacher); } } } diff --git a/PlexRequests.Store/Models/ScheduledJobs.cs b/PlexRequests.Store/Models/ScheduledJobs.cs index 7c242f0bd..10c6f745c 100644 --- a/PlexRequests.Store/Models/ScheduledJobs.cs +++ b/PlexRequests.Store/Models/ScheduledJobs.cs @@ -35,5 +35,6 @@ namespace PlexRequests.Store.Models { public string Name { get; set; } public DateTime LastRun { get; set; } + public bool Running { get; set; } } } diff --git a/PlexRequests.Store/SqlTables.sql b/PlexRequests.Store/SqlTables.sql index 84a31306f..4d180b1d0 100644 --- a/PlexRequests.Store/SqlTables.sql +++ b/PlexRequests.Store/SqlTables.sql @@ -80,7 +80,8 @@ CREATE TABLE IF NOT EXISTS ScheduledJobs ( Id INTEGER PRIMARY KEY AUTOINCREMENT, Name varchar(100) NOT NULL, - LastRun varchar(100) NOT NULL + LastRun varchar(100) NOT NULL, + Running INTEGER ); CREATE UNIQUE INDEX IF NOT EXISTS ScheduledJobs_Id ON ScheduledJobs (Id);