@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Linq ;
using System.Threading.Tasks ;
using NLog ;
using NzbDrone.Common.TPL ;
using NzbDrone.Core.Parser.Model ;
namespace NzbDrone.Core.ImportLists
@ -41,10 +40,7 @@ namespace NzbDrone.Core.ImportLists
_logger . Debug ( "Available import lists {0}" , importLists . Count ) ;
var taskList = new List < Task > ( ) ;
var taskFactory = new TaskFactory ( TaskCreationOptions . LongRunning , TaskContinuationOptions . None ) ;
foreach ( var importList in importLists )
Parallel . ForEach ( importLists , new ParallelOptions { MaxDegreeOfParallelism = 5 } , importList = >
{
var importListLocal = importList ;
var importListStatus = _importListStatusService . GetLastSyncListInfo ( importListLocal . Definition . Id ) ;
@ -56,35 +52,28 @@ namespace NzbDrone.Core.ImportLists
if ( DateTime . UtcNow < importListNextSync )
{
_logger . Trace ( "Skipping refresh of Import List {0} ({1}) due to minimum refresh interval. Next sync after {2}" , importList . Name , importListLocal . Definition . Name , importListNextSync ) ;
continue ;
return ;
}
}
var task = taskFactory . StartNew ( ( ) = >
{
try
{
var importListReports = importListLocal . Fetch ( ) ;
lock ( result )
{
_logger . Debug ( "Found {0} reports from {1} ({2})" , importListReports . Count , importList . Name , importListLocal . Definition . Name ) ;
result . AddRange ( importListReports ) ;
}
try
{
var importListReports = importListLocal . Fetch ( ) ;
_importListStatusService . UpdateListSyncStatus ( importList . Definition . Id ) ;
}
catch ( Exception e )
{
_logger . Error ( e , "Error during Import List Sync of {0} ({1})" , importList . Name , importListLocal . Definition . Name ) ;
}
} ) . LogExceptions ( ) ;
lock ( result )
{
_logger . Debug ( "Found {0} reports from {1} ({2})" , importListReports . Count , importList . Name , importListLocal . Definition . Name ) ;
taskList . Add ( task ) ;
}
result . AddRange ( importListReports ) ;
}
Task . WaitAll ( taskList . ToArray ( ) ) ;
_importListStatusService . UpdateListSyncStatus ( importList . Definition . Id ) ;
}
catch ( Exception e )
{
_logger . Error ( e , "Error during Import List Sync of {0} ({1})" , importList . Name , importListLocal . Definition . Name ) ;
}
} ) ;
result = result . DistinctBy ( r = > new { r . Author , r . Book } ) . ToList ( ) ;
@ -105,35 +94,25 @@ namespace NzbDrone.Core.ImportLists
return result ;
}
var taskList = new List < Task > ( ) ;
var taskFactory = new TaskFactory ( TaskCreationOptions . LongRunning , TaskContinuationOptions . None ) ;
var importListLocal = importList ;
var task = taskFactory . StartNew ( ( ) = >
try
{
try
{
var importListReports = importListLocal . Fetch ( ) ;
lock ( result )
{
_logger . Debug ( "Found {0} reports from {1} ({2})" , importListReports . Count , importList . Name , importListLocal . Definition . Name ) ;
result . AddRange ( importListReports ) ;
}
var importListReports = importListLocal . Fetch ( ) ;
_importListStatusService . UpdateListSyncStatus ( importList . Definition . Id ) ;
}
catch ( Exception e )
lock ( result )
{
_logger . Error ( e , "Error during Import List Sync of {0} ({1})" , importList . Name , importListLocal . Definition . Name ) ;
}
} ) . LogExceptions ( ) ;
_logger . Debug ( "Found {0} reports from {1} ({2})" , importListReports . Count , importList . Name , importListLocal . Definition . Name ) ;
taskList . Add ( task ) ;
result . AddRange ( importListReports ) ;
}
Task . WaitAll ( taskList . ToArray ( ) ) ;
_importListStatusService . UpdateListSyncStatus ( importList . Definition . Id ) ;
}
catch ( Exception e )
{
_logger . Error ( e , "Error during Import List Sync of {0} ({1})" , importList . Name , importListLocal . Definition . Name ) ;
}
result = result . DistinctBy ( r = > new { r . Author , r . Book } ) . ToList ( ) ;