aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs19
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunDiscovery.cs3
-rw-r--r--MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs25
-rw-r--r--MediaBrowser.Server.Implementations/Sync/SyncManager.cs14
4 files changed, 45 insertions, 16 deletions
diff --git a/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs b/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
index f0c7a34d9..ba3998262 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
@@ -300,17 +300,20 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
}
}
- try
- {
- _fileSystem.DeleteFile(remove.Path);
- }
- catch (DirectoryNotFoundException)
+ if (!string.IsNullOrWhiteSpace(remove.Path))
{
+ try
+ {
+ _fileSystem.DeleteFile(remove.Path);
+ }
+ catch (DirectoryNotFoundException)
+ {
- }
- catch (FileNotFoundException)
- {
+ }
+ catch (FileNotFoundException)
+ {
+ }
}
_recordingProvider.Delete(remove);
}
diff --git a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunDiscovery.cs b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunDiscovery.cs
index 92a33993a..0a03e60fa 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunDiscovery.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunDiscovery.cs
@@ -90,7 +90,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun
await _liveTvManager.SaveTunerHost(new TunerHostInfo
{
Type = HdHomerunHost.DeviceType,
- Url = url
+ Url = url,
+ DataVersion = 1
}).ConfigureAwait(false);
}
diff --git a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs
index 39779ecf2..03e654281 100644
--- a/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs
+++ b/MediaBrowser.Server.Implementations/Sync/SyncJobProcessor.cs
@@ -377,6 +377,9 @@ namespace MediaBrowser.Server.Implementations.Sync
{
await EnsureSyncJobItems(null, cancellationToken).ConfigureAwait(false);
+ // Look job items that are supposedly transfering, but need to be requeued because the synced files have been deleted somehow
+ await HandleDeletedSyncFiles(cancellationToken).ConfigureAwait(false);
+
// If it already has a converting status then is must have been aborted during conversion
var result = _syncManager.GetJobItems(new SyncJobItemQuery
{
@@ -389,6 +392,28 @@ namespace MediaBrowser.Server.Implementations.Sync
CleanDeadSyncFiles();
}
+ private async Task HandleDeletedSyncFiles(CancellationToken cancellationToken)
+ {
+ // Look job items that are supposedly transfering, but need to be requeued because the synced files have been deleted somehow
+ var result = _syncManager.GetJobItems(new SyncJobItemQuery
+ {
+ Statuses = new[] { SyncJobItemStatus.ReadyToTransfer, SyncJobItemStatus.Transferring },
+ AddMetadata = false
+ });
+
+ foreach (var item in result.Items)
+ {
+ cancellationToken.ThrowIfCancellationRequested();
+
+ if (string.IsNullOrWhiteSpace(item.OutputPath) || !_fileSystem.FileExists(item.OutputPath))
+ {
+ item.Status = SyncJobItemStatus.Queued;
+ await _syncManager.UpdateSyncJobItemInternal(item).ConfigureAwait(false);
+ await UpdateJobStatus(item.JobId).ConfigureAwait(false);
+ }
+ }
+ }
+
private void CleanDeadSyncFiles()
{
// TODO
diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs
index 50a960956..8ebc8d91e 100644
--- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs
+++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs
@@ -559,6 +559,12 @@ namespace MediaBrowser.Server.Implementations.Sync
jobItem.Status = SyncJobItemStatus.Synced;
jobItem.Progress = 100;
+ await UpdateSyncJobItemInternal(jobItem).ConfigureAwait(false);
+
+ var processor = GetSyncJobProcessor();
+
+ await processor.UpdateJobStatus(jobItem.JobId).ConfigureAwait(false);
+
if (!string.IsNullOrWhiteSpace(jobItem.TemporaryPath))
{
try
@@ -573,12 +579,6 @@ namespace MediaBrowser.Server.Implementations.Sync
_logger.ErrorException("Error deleting temporary job file: {0}", ex, jobItem.OutputPath);
}
}
-
- await UpdateSyncJobItemInternal(jobItem).ConfigureAwait(false);
-
- var processor = GetSyncJobProcessor();
-
- await processor.UpdateJobStatus(jobItem.JobId).ConfigureAwait(false);
}
private SyncJobProcessor GetSyncJobProcessor()
@@ -1015,7 +1015,7 @@ namespace MediaBrowser.Server.Implementations.Sync
{
var jobItem = _repo.GetJobItem(id);
- if (jobItem.Status != SyncJobItemStatus.Queued && jobItem.Status != SyncJobItemStatus.ReadyToTransfer && jobItem.Status != SyncJobItemStatus.Converting && jobItem.Status != SyncJobItemStatus.Failed && jobItem.Status != SyncJobItemStatus.Synced)
+ if (jobItem.Status != SyncJobItemStatus.Queued && jobItem.Status != SyncJobItemStatus.ReadyToTransfer && jobItem.Status != SyncJobItemStatus.Converting && jobItem.Status != SyncJobItemStatus.Failed && jobItem.Status != SyncJobItemStatus.Synced && jobItem.Status != SyncJobItemStatus.Transferring)
{
throw new ArgumentException("Operation is not valid for this job item");
}