Ejemplo n.º 1
0
        private OwnershipStatus activate()
        {
            Action activation = () => _lock.Write(() => _task.Activate());

            var status = TimeoutRunner.Run(_settings.TaskActivationTimeout, activation, ex => {
                _logger.Error(Subject, "Failed to take ownership of task " + Subject, ex);
                _logger.InfoMessage(() => new TaskActivationFailure(Subject));
            });

            switch (status)
            {
            case Completion.Success:
                _logger.InfoMessage(() => new TookOwnershipOfPersistentTask(Subject));
                _repository.AddOwnershipToThisNode(Subject);
                return(OwnershipStatus.OwnershipActivated);

            case Completion.Timedout:
                _logger.InfoMessage(() => new TaskActivationTimeoutFailure(Subject));
                return(OwnershipStatus.TimedOut);

            default:
                return(OwnershipStatus.Exception);
            }
        }