diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
index 0104196e01..a62821a3a9 100644
--- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs
+++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
@@ -165,7 +165,8 @@ namespace MediaBrowser.Server.Implementations.Dto
{
var folder = (Folder)item;
- dto.ChildCount = folder.GetChildren(user, true).Count();
+ dto.ChildCount = folder.GetChildren(user, true)
+ .Count();
if (!(folder is UserRootFolder))
{
diff --git a/MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs b/MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs
index 03739cc8fb..ffb3512220 100644
--- a/MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs
+++ b/MediaBrowser.Server.Implementations/IO/DirectoryWatchers.cs
@@ -67,7 +67,8 @@ namespace MediaBrowser.Server.Implementations.IO
public async void RemoveTempIgnore(string path)
{
// This is an arbitraty amount of time, but delay it because file system writes often trigger events after RemoveTempIgnore has been called.
- await Task.Delay(2000).ConfigureAwait(false);
+ // Seeing long delays in some situations, especially over the network.
+ await Task.Delay(40000).ConfigureAwait(false);
string val;
_tempIgnoredPaths.TryRemove(path, out val);
diff --git a/MediaBrowser.Server.Implementations/Providers/ImageSaver.cs b/MediaBrowser.Server.Implementations/Providers/ImageSaver.cs
index b8686800f8..ff11b9a2be 100644
--- a/MediaBrowser.Server.Implementations/Providers/ImageSaver.cs
+++ b/MediaBrowser.Server.Implementations/Providers/ImageSaver.cs
@@ -13,6 +13,7 @@ using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
+using MediaBrowser.Model.Logging;
namespace MediaBrowser.Server.Implementations.Providers
{
@@ -37,17 +38,19 @@ namespace MediaBrowser.Server.Implementations.Providers
///
private readonly IDirectoryWatchers _directoryWatchers;
private readonly IFileSystem _fileSystem;
+ private readonly ILogger _logger;
///
/// Initializes a new instance of the class.
///
/// The config.
/// The directory watchers.
- public ImageSaver(IServerConfigurationManager config, IDirectoryWatchers directoryWatchers, IFileSystem fileSystem)
+ public ImageSaver(IServerConfigurationManager config, IDirectoryWatchers directoryWatchers, IFileSystem fileSystem, ILogger logger)
{
_config = config;
_directoryWatchers = directoryWatchers;
_fileSystem = fileSystem;
+ _logger = logger;
_remoteImageCache = new FileSystemRepository(config.ApplicationPaths.DownloadedImagesDataPath);
}
@@ -170,7 +173,12 @@ namespace MediaBrowser.Server.Implementations.Providers
/// Task.
private async Task SaveImageToLocation(Stream source, string path, CancellationToken cancellationToken)
{
+ _logger.Debug("Saving image to {0}", path);
+
+ var parentFolder = Path.GetDirectoryName(path);
+
_directoryWatchers.TemporarilyIgnore(path);
+ _directoryWatchers.TemporarilyIgnore(parentFolder);
try
{
@@ -196,6 +204,7 @@ namespace MediaBrowser.Server.Implementations.Providers
finally
{
_directoryWatchers.RemoveTempIgnore(path);
+ _directoryWatchers.RemoveTempIgnore(parentFolder);
}
}
diff --git a/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs b/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
index 0252373f00..7b2a038f4f 100644
--- a/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
+++ b/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs
@@ -349,7 +349,7 @@ namespace MediaBrowser.Server.Implementations.Providers
/// Task.
public Task SaveImage(BaseItem item, Stream source, string mimeType, ImageType type, int? imageIndex, string sourceUrl, CancellationToken cancellationToken)
{
- return new ImageSaver(ConfigurationManager, _directoryWatchers, _fileSystem).SaveImage(item, source, mimeType, type, imageIndex, sourceUrl, cancellationToken);
+ return new ImageSaver(ConfigurationManager, _directoryWatchers, _fileSystem, _logger).SaveImage(item, source, mimeType, type, imageIndex, sourceUrl, cancellationToken);
}
///