Fixed: Refresh Xem mapped series list every 12 hours, instead of on startup only

This commit is contained in:
Mark McDowall 2013-12-15 20:10:03 -08:00
parent 9484e7d2a9
commit 68d1c421ba
3 changed files with 37 additions and 22 deletions

View File

@ -0,0 +1,8 @@
using NzbDrone.Core.Messaging.Commands;
namespace NzbDrone.Core.DataAugmentation.Xem
{
public class RefreshXemCacheCommand : Command
{
}
}

View File

@ -2,13 +2,14 @@
using System.Linq;
using NLog;
using NzbDrone.Common.Cache;
using NzbDrone.Core.Messaging.Commands;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Tv;
using NzbDrone.Core.Tv.Events;
namespace NzbDrone.Core.DataAugmentation.Xem
{
public class XemService : IHandle<SeriesUpdatedEvent>
public class XemService : IHandle<SeriesUpdatedEvent>, IExecute<RefreshXemCacheCommand>
{
private readonly IEpisodeService _episodeService;
private readonly IXemProxy _xemProxy;
@ -28,23 +29,6 @@ namespace NzbDrone.Core.DataAugmentation.Xem
_cache = cacheManger.GetCache<bool>(GetType());
}
public void Handle(SeriesUpdatedEvent message)
{
if (_cache.Count == 0)
{
RefreshCache();
}
if (!_cache.Find(message.Series.TvdbId.ToString()))
{
_logger.Trace("Scene numbering is not available for {0} [{1}]", message.Series.Title, message.Series.TvdbId);
return;
}
PerformUpdate(message.Series);
}
private void PerformUpdate(Series series)
{
_logger.Trace("Updating scene numbering mapping for: {0}", series);
@ -109,5 +93,26 @@ namespace NzbDrone.Core.DataAugmentation.Xem
_cache.Set(id.ToString(), true, TimeSpan.FromHours(1));
}
}
public void Handle(SeriesUpdatedEvent message)
{
if (_cache.Count == 0)
{
RefreshCache();
}
if (!_cache.Find(message.Series.TvdbId.ToString()))
{
_logger.Trace("Scene numbering is not available for {0} [{1}]", message.Series.Title, message.Series.TvdbId);
return;
}
PerformUpdate(message.Series);
}
public void Execute(RefreshXemCacheCommand message)
{
RefreshCache();
}
}
}

View File

@ -47,14 +47,16 @@ namespace NzbDrone.Core.Jobs
var defaultTasks = new[]
{
new ScheduledTask{ Interval = _configService.RssSyncInterval, TypeName = typeof(RssSyncCommand).FullName},
new ScheduledTask{ Interval = 12*60, TypeName = typeof(RefreshSeriesCommand).FullName},
new ScheduledTask{ Interval = 1, TypeName = typeof(DownloadedEpisodesScanCommand).FullName},
new ScheduledTask{ Interval = 60, TypeName = typeof(ApplicationUpdateCommand).FullName},
new ScheduledTask{ Interval = 1, TypeName = typeof(TrackedCommandCleanupCommand).FullName},
new ScheduledTask{ Interval = 1, TypeName = typeof(CheckForFailedDownloadCommand).FullName},
new ScheduledTask{ Interval = 1*60, TypeName = typeof(ApplicationUpdateCommand).FullName},
new ScheduledTask{ Interval = 1*60, TypeName = typeof(TrimLogCommand).FullName},
new ScheduledTask{ Interval = 3*60, TypeName = typeof(UpdateSceneMappingCommand).FullName},
new ScheduledTask{ Interval = 1, TypeName = typeof(TrackedCommandCleanupCommand).FullName},
new ScheduledTask{ Interval = 12*60, TypeName = typeof(RefreshXemCacheCommand).FullName},
new ScheduledTask{ Interval = 12*60, TypeName = typeof(RefreshSeriesCommand).FullName},
new ScheduledTask{ Interval = 24*60, TypeName = typeof(HousekeepingCommand).FullName},
new ScheduledTask{ Interval = 1, TypeName = typeof(CheckForFailedDownloadCommand).FullName}
};
var currentTasks = _scheduledTaskRepository.All();