removed local trailers and special features from memory

This commit is contained in:
Luke Pulverenti
2013-05-08 16:58:52 -04:00
parent a0dfbdfd70
commit fbd052abfc
22 changed files with 331 additions and 393 deletions

View File

@@ -132,29 +132,31 @@ namespace MediaBrowser.Server.Implementations.Sqlite
cancellationToken.ThrowIfCancellationRequested();
var cmd = connection.CreateCommand();
cmd.CommandText = "replace into displaypreferences (id, data) values (@1, @2)";
cmd.AddParam("@1", displayPreferences.Id);
cmd.AddParam("@2", serialized);
using (var tran = connection.BeginTransaction())
using (var cmd = connection.CreateCommand())
{
try
{
cmd.Transaction = tran;
cmd.CommandText = "replace into displaypreferences (id, data) values (@1, @2)";
cmd.AddParam("@1", displayPreferences.Id);
cmd.AddParam("@2", serialized);
await cmd.ExecuteNonQueryAsync(cancellationToken);
using (var tran = connection.BeginTransaction())
{
try
{
cmd.Transaction = tran;
tran.Commit();
}
catch (OperationCanceledException)
{
tran.Rollback();
}
catch (Exception e)
{
Logger.ErrorException("Failed to commit transaction.", e);
tran.Rollback();
await cmd.ExecuteNonQueryAsync(cancellationToken);
tran.Commit();
}
catch (OperationCanceledException)
{
tran.Rollback();
}
catch (Exception e)
{
Logger.ErrorException("Failed to commit transaction.", e);
tran.Rollback();
}
}
}
}
@@ -174,7 +176,7 @@ namespace MediaBrowser.Server.Implementations.Sqlite
var cmd = connection.CreateCommand();
cmd.CommandText = "select data from displaypreferences where id = @id";
var idParam = cmd.Parameters.Add("@id", DbType.Guid);
idParam.Value = displayPreferencesId;

View File

@@ -1,3 +1,4 @@
using System.Linq;
using MediaBrowser.Common.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Persistence;
@@ -156,16 +157,32 @@ namespace MediaBrowser.Server.Implementations.Sqlite
/// <param name="id">The id.</param>
/// <returns>BaseItem.</returns>
/// <exception cref="System.ArgumentException"></exception>
public BaseItem RetrieveItem(Guid id)
public BaseItem GetItem(Guid id)
{
if (id == Guid.Empty)
{
throw new ArgumentException();
throw new ArgumentNullException("id");
}
return RetrieveItemInternal(id);
}
/// <summary>
/// Retrieves the items.
/// </summary>
/// <param name="ids">The ids.</param>
/// <returns>IEnumerable{BaseItem}.</returns>
/// <exception cref="System.ArgumentNullException">ids</exception>
public IEnumerable<BaseItem> GetItems(IEnumerable<Guid> ids)
{
if (ids == null)
{
throw new ArgumentNullException("ids");
}
return ids.Select(RetrieveItemInternal);
}
/// <summary>
/// Internal retrieve from items or users table
/// </summary>
@@ -176,35 +193,37 @@ namespace MediaBrowser.Server.Implementations.Sqlite
{
if (id == Guid.Empty)
{
throw new ArgumentException();
throw new ArgumentNullException("id");
}
var cmd = connection.CreateCommand();
cmd.CommandText = "select obj_type,data from items where guid = @guid";
var guidParam = cmd.Parameters.Add("@guid", DbType.Guid);
guidParam.Value = id;
using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult | CommandBehavior.SingleRow))
using (var cmd = connection.CreateCommand())
{
if (reader.Read())
cmd.CommandText = "select obj_type,data from items where guid = @guid";
var guidParam = cmd.Parameters.Add("@guid", DbType.Guid);
guidParam.Value = id;
using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult | CommandBehavior.SingleRow))
{
var type = reader.GetString(0);
using (var stream = GetStream(reader, 1))
if (reader.Read())
{
var itemType = _typeMapper.GetType(type);
if (itemType == null)
var type = reader.GetString(0);
using (var stream = GetStream(reader, 1))
{
Logger.Error("Cannot find type {0}. Probably belongs to plug-in that is no longer loaded.", type);
return null;
}
var itemType = _typeMapper.GetType(type);
var item = _jsonSerializer.DeserializeFromStream(stream, itemType);
return item as BaseItem;
if (itemType == null)
{
Logger.Error("Cannot find type {0}. Probably belongs to plug-in that is no longer loaded.", type);
return null;
}
var item = _jsonSerializer.DeserializeFromStream(stream, itemType);
return item as BaseItem;
}
}
}
return null;
}
return null;
}
/// <summary>
@@ -220,30 +239,32 @@ namespace MediaBrowser.Server.Implementations.Sqlite
throw new ArgumentNullException();
}
var cmd = connection.CreateCommand();
cmd.CommandText = "select obj_type,data from items where guid in (select child from children where guid = @guid)";
var guidParam = cmd.Parameters.Add("@guid", DbType.Guid);
guidParam.Value = parent.Id;
using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult))
using (var cmd = connection.CreateCommand())
{
while (reader.Read())
{
var type = reader.GetString(0);
cmd.CommandText = "select obj_type,data from items where guid in (select child from children where guid = @guid)";
var guidParam = cmd.Parameters.Add("@guid", DbType.Guid);
guidParam.Value = parent.Id;
using (var stream = GetStream(reader, 1))
using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult))
{
while (reader.Read())
{
var itemType = _typeMapper.GetType(type);
if (itemType == null)
var type = reader.GetString(0);
using (var stream = GetStream(reader, 1))
{
Logger.Error("Cannot find type {0}. Probably belongs to plug-in that is no longer loaded.", type);
continue;
}
var item = _jsonSerializer.DeserializeFromStream(stream, itemType) as BaseItem;
if (item != null)
{
item.Parent = parent;
yield return item;
var itemType = _typeMapper.GetType(type);
if (itemType == null)
{
Logger.Error("Cannot find type {0}. Probably belongs to plug-in that is no longer loaded.", type);
continue;
}
var item = _jsonSerializer.DeserializeFromStream(stream, itemType) as BaseItem;
if (item != null)
{
item.Parent = parent;
yield return item;
}
}
}
}

View File

@@ -121,13 +121,14 @@ namespace MediaBrowser.Server.Implementations.Sqlite
{
try
{
var cmd = connection.CreateCommand();
foreach (var query in queries)
using (var cmd = connection.CreateCommand())
{
cmd.Transaction = tran;
cmd.CommandText = query;
cmd.ExecuteNonQuery();
foreach (var query in queries)
{
cmd.Transaction = tran;
cmd.CommandText = query;
cmd.ExecuteNonQuery();
}
}
tran.Commit();
@@ -268,6 +269,9 @@ namespace MediaBrowser.Server.Implementations.Sqlite
command.Transaction = tran;
command.ExecuteNonQuery();
command.Dispose();
numCommands++;
}

View File

@@ -184,30 +184,32 @@ namespace MediaBrowser.Server.Implementations.Sqlite
cancellationToken.ThrowIfCancellationRequested();
var cmd = connection.CreateCommand();
cmd.CommandText = "replace into userdata (key, userId, data) values (@1, @2, @3)";
cmd.AddParam("@1", key);
cmd.AddParam("@2", userId);
cmd.AddParam("@3", serialized);
using (var tran = connection.BeginTransaction())
using (var cmd = connection.CreateCommand())
{
try
{
cmd.Transaction = tran;
cmd.CommandText = "replace into userdata (key, userId, data) values (@1, @2, @3)";
cmd.AddParam("@1", key);
cmd.AddParam("@2", userId);
cmd.AddParam("@3", serialized);
await cmd.ExecuteNonQueryAsync(cancellationToken);
using (var tran = connection.BeginTransaction())
{
try
{
cmd.Transaction = tran;
tran.Commit();
}
catch (OperationCanceledException)
{
tran.Rollback();
}
catch (Exception e)
{
Logger.ErrorException("Failed to commit transaction.", e);
tran.Rollback();
await cmd.ExecuteNonQueryAsync(cancellationToken);
tran.Commit();
}
catch (OperationCanceledException)
{
tran.Rollback();
}
catch (Exception e)
{
Logger.ErrorException("Failed to commit transaction.", e);
tran.Rollback();
}
}
}
}
@@ -245,27 +247,29 @@ namespace MediaBrowser.Server.Implementations.Sqlite
/// <returns>Task{UserItemData}.</returns>
private async Task<UserItemData> RetrieveUserData(Guid userId, string key)
{
var cmd = connection.CreateCommand();
cmd.CommandText = "select data from userdata where key = @key and userId=@userId";
var idParam = cmd.Parameters.Add("@key", DbType.String);
idParam.Value = key;
var userIdParam = cmd.Parameters.Add("@userId", DbType.Guid);
userIdParam.Value = userId;
using (var reader = await cmd.ExecuteReaderAsync(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult | CommandBehavior.SingleRow).ConfigureAwait(false))
using (var cmd = connection.CreateCommand())
{
if (reader.Read())
cmd.CommandText = "select data from userdata where key = @key and userId=@userId";
var idParam = cmd.Parameters.Add("@key", DbType.String);
idParam.Value = key;
var userIdParam = cmd.Parameters.Add("@userId", DbType.Guid);
userIdParam.Value = userId;
using (var reader = await cmd.ExecuteReaderAsync(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult | CommandBehavior.SingleRow).ConfigureAwait(false))
{
using (var stream = GetStream(reader, 0))
if (reader.Read())
{
return _jsonSerializer.DeserializeFromStream<UserItemData>(stream);
using (var stream = GetStream(reader, 0))
{
return _jsonSerializer.DeserializeFromStream<UserItemData>(stream);
}
}
}
}
return new UserItemData();
return new UserItemData();
}
}
}
}

View File

@@ -127,29 +127,31 @@ namespace MediaBrowser.Server.Implementations.Sqlite
cancellationToken.ThrowIfCancellationRequested();
var cmd = connection.CreateCommand();
cmd.CommandText = "replace into users (guid, data) values (@1, @2)";
cmd.AddParam("@1", user.Id);
cmd.AddParam("@2", serialized);
using (var tran = connection.BeginTransaction())
using (var cmd = connection.CreateCommand())
{
try
{
cmd.Transaction = tran;
cmd.CommandText = "replace into users (guid, data) values (@1, @2)";
cmd.AddParam("@1", user.Id);
cmd.AddParam("@2", serialized);
await cmd.ExecuteNonQueryAsync(cancellationToken);
using (var tran = connection.BeginTransaction())
{
try
{
cmd.Transaction = tran;
tran.Commit();
}
catch (OperationCanceledException)
{
tran.Rollback();
}
catch (Exception e)
{
Logger.ErrorException("Failed to commit transaction.", e);
tran.Rollback();
await cmd.ExecuteNonQueryAsync(cancellationToken);
tran.Commit();
}
catch (OperationCanceledException)
{
tran.Rollback();
}
catch (Exception e)
{
Logger.ErrorException("Failed to commit transaction.", e);
tran.Rollback();
}
}
}
}
@@ -160,17 +162,19 @@ namespace MediaBrowser.Server.Implementations.Sqlite
/// <returns>IEnumerable{User}.</returns>
public IEnumerable<User> RetrieveAllUsers()
{
var cmd = connection.CreateCommand();
cmd.CommandText = "select data from users";
using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult))
using (var cmd = connection.CreateCommand())
{
while (reader.Read())
cmd.CommandText = "select data from users";
using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult))
{
using (var stream = GetStream(reader, 0))
while (reader.Read())
{
var user = _jsonSerializer.DeserializeFromStream<User>(stream);
yield return user;
using (var stream = GetStream(reader, 0))
{
var user = _jsonSerializer.DeserializeFromStream<User>(stream);
yield return user;
}
}
}
}
@@ -197,12 +201,14 @@ namespace MediaBrowser.Server.Implementations.Sqlite
cancellationToken.ThrowIfCancellationRequested();
var cmd = connection.CreateCommand();
cmd.CommandText = "delete from users where guid=@guid";
var guidParam = cmd.Parameters.Add("@guid", DbType.Guid);
guidParam.Value = user.Id;
using (var cmd = connection.CreateCommand())
{
cmd.CommandText = "delete from users where guid=@guid";
var guidParam = cmd.Parameters.Add("@guid", DbType.Guid);
guidParam.Value = user.Id;
return ExecuteCommand(cmd);
return ExecuteCommand(cmd);
}
}
}
}