mirror of
https://github.com/Radarr/Radarr.git
synced 2024-11-04 10:02:40 +01:00
Fixed timing issue allowing multiple instances of the same command to be queued
This commit is contained in:
parent
cc283f64a3
commit
8d2d19d17b
@ -100,32 +100,35 @@ public CommandModel Push<TCommand>(TCommand command, CommandPriority priority =
|
|||||||
_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 = QueuedOrStarted(command.Name);
|
lock (_commandQueue)
|
||||||
var existing = existingCommands.SingleOrDefault(c => CommandEqualityComparer.Instance.Equals(c.Body, command));
|
|
||||||
|
|
||||||
if (existing != null)
|
|
||||||
{
|
{
|
||||||
_logger.Trace("Command is already in progress: {0}", command.Name);
|
var existingCommands = QueuedOrStarted(command.Name);
|
||||||
|
var existing = existingCommands.FirstOrDefault(c => CommandEqualityComparer.Instance.Equals(c.Body, command));
|
||||||
|
|
||||||
return existing;
|
if (existing != null)
|
||||||
|
{
|
||||||
|
_logger.Trace("Command is already in progress: {0}", command.Name);
|
||||||
|
|
||||||
|
return existing;
|
||||||
|
}
|
||||||
|
|
||||||
|
var commandModel = new CommandModel
|
||||||
|
{
|
||||||
|
Name = command.Name,
|
||||||
|
Body = command,
|
||||||
|
QueuedAt = DateTime.UtcNow,
|
||||||
|
Trigger = trigger,
|
||||||
|
Priority = priority,
|
||||||
|
Status = CommandStatus.Queued
|
||||||
|
};
|
||||||
|
|
||||||
|
_logger.Trace("Inserting new command: {0}", commandModel.Name);
|
||||||
|
|
||||||
|
_repo.Insert(commandModel);
|
||||||
|
_commandQueue.Add(commandModel);
|
||||||
|
|
||||||
|
return commandModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
var commandModel = new CommandModel
|
|
||||||
{
|
|
||||||
Name = command.Name,
|
|
||||||
Body = command,
|
|
||||||
QueuedAt = DateTime.UtcNow,
|
|
||||||
Trigger = trigger,
|
|
||||||
Priority = priority,
|
|
||||||
Status = CommandStatus.Queued
|
|
||||||
};
|
|
||||||
|
|
||||||
_logger.Trace("Inserting new command: {0}", commandModel.Name);
|
|
||||||
|
|
||||||
_repo.Insert(commandModel);
|
|
||||||
_commandQueue.Add(commandModel);
|
|
||||||
|
|
||||||
return commandModel;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public CommandModel Push(string commandName, DateTime? lastExecutionTime, DateTime? lastStartTime, CommandPriority priority = CommandPriority.Normal, CommandTrigger trigger = CommandTrigger.Unspecified)
|
public CommandModel Push(string commandName, DateTime? lastExecutionTime, DateTime? lastStartTime, CommandPriority priority = CommandPriority.Normal, CommandTrigger trigger = CommandTrigger.Unspecified)
|
||||||
|
Loading…
Reference in New Issue
Block a user