aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-06-14 15:21:26 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-06-14 15:21:26 -0400
commit66c86ccc58d1022bdb65d63b47df82845ad921c7 (patch)
treedc68e21670a43ead1c58a990b4a6d7467e46accb
parent437033111c62d0cd61002134ff684a197d47506e (diff)
update pooling
-rw-r--r--MediaBrowser.Server.Implementations/HttpServer/LoggerUtils.cs2
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs6
-rw-r--r--MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs2
-rw-r--r--MediaBrowser.Server.Implementations/TV/TVSeriesManager.cs101
4 files changed, 67 insertions, 44 deletions
diff --git a/MediaBrowser.Server.Implementations/HttpServer/LoggerUtils.cs b/MediaBrowser.Server.Implementations/HttpServer/LoggerUtils.cs
index ce8100025..bfbb228ed 100644
--- a/MediaBrowser.Server.Implementations/HttpServer/LoggerUtils.cs
+++ b/MediaBrowser.Server.Implementations/HttpServer/LoggerUtils.cs
@@ -35,7 +35,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer
public static void LogResponse(ILogger logger, int statusCode, string url, string endPoint, TimeSpan duration)
{
var durationMs = duration.TotalMilliseconds;
- var logSuffix = durationMs >= 1000 ? "ms (slow)" : "ms";
+ var logSuffix = durationMs >= 1000 && durationMs < 60000 ? "ms (slow)" : "ms";
logger.Info("HTTP Response {0} to {1}. Time: {2}{3}. {4}", statusCode, endPoint, Convert.ToInt32(durationMs).ToString(CultureInfo.InvariantCulture), logSuffix, url);
}
diff --git a/MediaBrowser.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs b/MediaBrowser.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs
index 1628ddc01..07affb865 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs
@@ -45,6 +45,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
private async Task<string> GetXml(string path, CancellationToken cancellationToken)
{
+ _logger.Info("xmltv path: {0}", path);
+
if (!path.StartsWith("http", StringComparison.OrdinalIgnoreCase))
{
return path;
@@ -161,7 +163,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
{
Id = c.Id,
Name = c.DisplayName,
- ImageUrl = c.Icon != null && !String.IsNullOrEmpty(c.Icon.Source) ? c.Icon.Source : null
+ ImageUrl = c.Icon != null && !String.IsNullOrEmpty(c.Icon.Source) ? c.Icon.Source : null,
+ Number = c.Id
+
}).ToList();
}
}
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs
index 40cac82c3..73b3a2253 100644
--- a/MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs
+++ b/MediaBrowser.Server.Implementations/Persistence/SqliteExtensions.cs
@@ -35,7 +35,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
JournalMode = SQLiteJournalModeEnum.Wal,
// This is causing crashing under linux
- Pooling = Environment.OSVersion.Platform == PlatformID.Win32NT,
+ Pooling = enablePooling && Environment.OSVersion.Platform == PlatformID.Win32NT,
ReadOnly = isReadOnly
};
diff --git a/MediaBrowser.Server.Implementations/TV/TVSeriesManager.cs b/MediaBrowser.Server.Implementations/TV/TVSeriesManager.cs
index d57aea08e..4aff3b6ef 100644
--- a/MediaBrowser.Server.Implementations/TV/TVSeriesManager.cs
+++ b/MediaBrowser.Server.Implementations/TV/TVSeriesManager.cs
@@ -124,58 +124,77 @@ namespace MediaBrowser.Server.Implementations.TV
/// <returns>Task{Episode}.</returns>
private Tuple<Episode, DateTime, bool> GetNextUp(Series series, User user)
{
- // Get them in display order, then reverse
- var allEpisodes = series.GetEpisodes(user, false, false)
- .Where(i => !i.ParentIndexNumber.HasValue || i.ParentIndexNumber.Value != 0)
- .Reverse()
- .ToList();
-
- Episode lastWatched = null;
- var lastWatchedDate = DateTime.MinValue;
- Episode nextUp = null;
-
- var unplayedEpisodes = new List<Episode>();
-
- // Go back starting with the most recent episodes
- foreach (var episode in allEpisodes)
+ var firstUnwatchedEpisode = _libraryManager.GetItemList(new InternalItemsQuery(user)
{
- var userData = _userDataManager.GetUserData(user, episode);
-
- if (userData.Played)
- {
- if (lastWatched != null || nextUp == null)
- {
- break;
- }
-
- lastWatched = episode;
- lastWatchedDate = userData.LastPlayedDate ?? DateTime.MinValue;
- }
- else
- {
- unplayedEpisodes.Add(episode);
+ AncestorWithPresentationUniqueKey = series.PresentationUniqueKey,
+ IncludeItemTypes = new[] { typeof(Episode).Name },
+ SortBy = new[] { ItemSortBy.SortName },
+ SortOrder = SortOrder.Ascending,
+ Limit = 1,
+ IsPlayed = false,
+ IsVirtualItem = false
- nextUp = episode;
- }
- }
+ }).Cast<Episode>().FirstOrDefault();
- if (lastWatched != null)
+ if (firstUnwatchedEpisode == null)
{
- return new Tuple<Episode, DateTime, bool>(nextUp, lastWatchedDate, false);
+ return new Tuple<Episode, DateTime, bool>(null, DateTime.MinValue, true);
}
- Episode firstEpisode = null;
- // Find the first unplayed episode. Start from the back of the list since they're in reverse order
- for (var i = unplayedEpisodes.Count - 1; i >= 0; i--)
+ var lastWatchedEpisode = _libraryManager.GetItemList(new InternalItemsQuery(user)
{
- var unplayedEpisode = unplayedEpisodes[i];
+ AncestorWithPresentationUniqueKey = series.PresentationUniqueKey,
+ IncludeItemTypes = new[] { typeof(Episode).Name },
+ SortBy = new[] { ItemSortBy.DatePlayed },
+ SortOrder = SortOrder.Descending,
+ Limit = 1,
+ IsVirtualItem = false
+
+ }).FirstOrDefault();
+
+ //// Get them in display order, then reverse
+ //var allEpisodes = series.GetEpisodes(user, false, false)
+ // .Where(i => !i.ParentIndexNumber.HasValue || i.ParentIndexNumber.Value != 0)
+ // .Reverse()
+ // .ToList();
+
+ //Episode lastWatched = null;
+ //var lastWatchedDate = DateTime.MinValue;
+ //Episode nextUp = null;
+
+ //// Go back starting with the most recent episodes
+ //foreach (var episode in allEpisodes)
+ //{
+ // var userData = _userDataManager.GetUserData(user, episode);
+
+ // if (userData.Played)
+ // {
+ // if (lastWatched != null || nextUp == null)
+ // {
+ // break;
+ // }
+
+ // lastWatched = episode;
+ // lastWatchedDate = userData.LastPlayedDate ?? DateTime.MinValue;
+ // }
+ // else
+ // {
+ // nextUp = episode;
+ // }
+ //}
+
+ if (lastWatchedEpisode != null)
+ {
+ var userData = _userDataManager.GetUserData(user, lastWatchedEpisode);
- firstEpisode = unplayedEpisode;
- break;
+ if (userData.LastPlayedDate.HasValue)
+ {
+ return new Tuple<Episode, DateTime, bool>(firstUnwatchedEpisode, userData.LastPlayedDate.Value, false);
+ }
}
// Return the first episode
- return new Tuple<Episode, DateTime, bool>(firstEpisode, DateTime.MinValue, true);
+ return new Tuple<Episode, DateTime, bool>(firstUnwatchedEpisode, DateTime.MinValue, true);
}
private QueryResult<BaseItem> GetResult(IEnumerable<BaseItem> items, int? totalRecordLimit, NextUpQuery query)