Use cache to check for running or started commands

pull/232/head
Mark McDowall 10 years ago
parent 210524b51a
commit 755a42ea45

@ -38,7 +38,7 @@ namespace NzbDrone.Core.Messaging.Commands
{ {
try try
{ {
ExecuteCommand((dynamic)command.Body, command); ExecuteCommand((dynamic) command.Body, command);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -51,6 +51,10 @@ namespace NzbDrone.Core.Messaging.Commands
_logger.ErrorException(ex.Message, ex); _logger.ErrorException(ex.Message, ex);
Thread.ResetAbort(); Thread.ResetAbort();
} }
catch (Exception ex)
{
_logger.Error(ex.Message, ex);
}
} }
private void ExecuteCommand<TCommand>(TCommand command, CommandModel commandModel) where TCommand : Command private void ExecuteCommand<TCommand>(TCommand command, CommandModel commandModel) where TCommand : Command

@ -57,7 +57,7 @@ namespace NzbDrone.Core.Messaging.Commands
_logger.Trace("Publishing {0}", command.Name); _logger.Trace("Publishing {0}", command.Name);
_logger.Trace("Checking if command is queued or started: {0}", command.Name); _logger.Trace("Checking if command is queued or started: {0}", command.Name);
var existingCommands = _repo.FindQueuedOrStarted(command.Name); var existingCommands = QueuedOrStarted(command.Name);
var existing = existingCommands.SingleOrDefault(c => CommandEqualityComparer.Instance.Equals(c.Body, command)); var existing = existingCommands.SingleOrDefault(c => CommandEqualityComparer.Instance.Equals(c.Body, command));
if (existing != null) if (existing != null)
@ -123,8 +123,8 @@ namespace NzbDrone.Core.Messaging.Commands
command.Status = CommandStatus.Started; command.Status = CommandStatus.Started;
_logger.Trace("Marking command as started: {0}", command.Name); _logger.Trace("Marking command as started: {0}", command.Name);
_commandCache.Set(command.Id.ToString(), command);
_repo.Update(command); _repo.Update(command);
_commandCache.Set(command.Id.ToString(), command);
} }
public void Complete(CommandModel command, string message) public void Complete(CommandModel command, string message)
@ -191,8 +191,15 @@ namespace NzbDrone.Core.Messaging.Commands
command.Status = status; command.Status = status;
_logger.Trace("Updating command status"); _logger.Trace("Updating command status");
_repo.Update(command);
_commandCache.Set(command.Id.ToString(), command); _commandCache.Set(command.Id.ToString(), command);
_repo.Update(command);
}
private List<CommandModel> QueuedOrStarted(string name)
{
return _commandCache.Values.Where(q => q.Name == name &&
(q.Status == CommandStatus.Queued ||
q.Status == CommandStatus.Started)).ToList();
} }
public void Handle(ApplicationStartedEvent message) public void Handle(ApplicationStartedEvent message)

Loading…
Cancel
Save