@ -910,19 +910,34 @@ namespace MediaBrowser.Providers.Manager
/// <inheritdoc/>
public void OnRefreshStart ( BaseItem item )
{
_logger . LogDebug ( "OnRefreshStart {Item }", item . Id . ToString ( "N" , CultureInfo . InvariantCulture ) ) ;
_logger . LogDebug ( "OnRefreshStart {Item :N }", item . Id ) ;
_activeRefreshes [ item . Id ] = 0 ;
RefreshStarted ? . Invoke ( this , new GenericEventArgs < BaseItem > ( item ) ) ;
try
{
RefreshStarted ? . Invoke ( this , new GenericEventArgs < BaseItem > ( item ) ) ;
}
catch ( Exception ex )
{
// EventHandlers should never propagate exceptions, but we have little control over plugins...
_logger . LogError ( ex , "Invoking {RefreshEvent} event handlers failed" , nameof ( RefreshStarted ) ) ;
}
}
/// <inheritdoc/>
public void OnRefreshComplete ( BaseItem item )
{
_logger . LogDebug ( "OnRefreshComplete {Item}" , item . Id . ToString ( "N" , CultureInfo . InvariantCulture ) ) ;
_activeRefreshes . Remove ( item . Id , out _ ) ;
_logger . LogDebug ( "OnRefreshComplete {Item:N}" , item . Id ) ;
_activeRefreshes . TryRemove ( item . Id , out _ ) ;
RefreshCompleted ? . Invoke ( this , new GenericEventArgs < BaseItem > ( item ) ) ;
try
{
RefreshCompleted ? . Invoke ( this , new GenericEventArgs < BaseItem > ( item ) ) ;
}
catch ( Exception ex )
{
// EventHandlers should never propagate exceptions, but we have little control over plugins...
_logger . LogError ( ex , "Invoking {RefreshEvent} event handlers failed" , nameof ( RefreshCompleted ) ) ;
}
}
/// <inheritdoc/>
@ -940,12 +955,12 @@ namespace MediaBrowser.Providers.Manager
public void OnRefreshProgress ( BaseItem item , double progress )
{
var id = item . Id ;
_logger . LogDebug ( "OnRefreshProgress {Id } {Progress}", id . ToString ( "N" , CultureInfo . InvariantCulture ) , progress ) ;
_logger . LogDebug ( "OnRefreshProgress {Id :N } {Progress}", id , progress ) ;
// TODO: Need to hunt down the conditions for this happening
_activeRefreshes . AddOrUpdate (
id ,
( _ ) = > throw new InvalidOperationException (
_ = > throw new InvalidOperationException (
string . Format (
CultureInfo . InvariantCulture ,
"Cannot update refresh progress of item '{0}' ({1}) because a refresh for this item is not running" ,
@ -953,7 +968,15 @@ namespace MediaBrowser.Providers.Manager
item . Id . ToString ( "N" , CultureInfo . InvariantCulture ) ) ) ,
( _ , _ ) = > progress ) ;
RefreshProgress ? . Invoke ( this , new GenericEventArgs < Tuple < BaseItem , double > > ( new Tuple < BaseItem , double > ( item , progress ) ) ) ;
try
{
RefreshProgress ? . Invoke ( this , new GenericEventArgs < Tuple < BaseItem , double > > ( new Tuple < BaseItem , double > ( item , progress ) ) ) ;
}
catch ( Exception ex )
{
// EventHandlers should never propagate exceptions, but we have little control over plugins...
_logger . LogError ( ex , "Invoking {RefreshEvent} event handlers failed" , nameof ( RefreshProgress ) ) ;
}
}
/// <inheritdoc/>